Based on the article “Sleep and the Allocation of Time”, I created an
analysis of the length of sleep and nap time (from the sleep75 data set)
in terms of other variables, such as total work time and age.
Correlation matrix of the sleep75 dataset
I created this matrix to have a general view of correlations between
different variables in the sleep75 data set.
Warning in cor(data, use = method[1], method = method[2]): the standard
deviation is zero

Creating a basic regression model
From the matrix, the strongest correlation I found for slpnaps was
with totwrk. The coefficient of correlation is:
The following object is masked from package:datasets:
sleep
[1] -0.3425592
Then I created a linear model for sleep&nap time and total work
time.
model1 <- lm(slpnaps~totwrk, data = sleep75)
summary(model1)
Call:
lm(formula = slpnaps ~ totwrk, data = sleep75)
Residuals:
Min 1Q Median 3Q Max
-1950.64 -270.86 -11.23 261.34 2343.88
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3766.12461 43.35218 86.873 <2e-16 ***
totwrk -0.18043 0.01865 -9.674 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 469.2 on 704 degrees of freedom
Multiple R-squared: 0.1173, Adjusted R-squared: 0.1161
F-statistic: 93.6 on 1 and 704 DF, p-value: < 2.2e-16
The intercept tells us that the approximate sleep and nap time for a
person who does not work is 3766.1246 minutes (62 hours and 46 minutes)
per week.
The equation of sleep and nap time looks like this: slpnaps =
3766.12461 - 0.1804*totwrk
That means increasing the total work time by one hour would decrease
the sleep and nap time by 0.1804*60 = 10.824 minutes per week (which is
not a lot per night)
Residual standard error: 469.2 on 704 degrees of freedom Multiple
R-squared: 0.1173
Scatterplot of sleep time and total work
ggplot(data=sleep75, aes(totwrk,slpnaps)) +
geom_point() +
geom_smooth(method = lm)+
labs(x="total work time", y="sleep and nap time")
`geom_smooth()` using formula = 'y ~ x'

Total work time analysis
ggplot(data=sleep75, aes(factor(male),totwrk)) +
geom_boxplot() +
ggtitle("Total work time grouped by sex") +
labs(x="0 - female, 1 - male", y="total work time")

As you can see, the sleep and nap time was slightly higher for men
than for women in the 70s. This brings on a question - Is the sleep time
affected by gender?
biserial.cor(slpnaps, male)
[1] 0.05193646
The correlation coefficient between sleep time and gender is very
low, which indicates that gender has pretty much no influence on the
length of sleep and naps.
Considering wage in the model
As Biddle and Hamermesh mentioned in their article, sleep and nap
time is also affected by the earnings of a working person.
model2<-lm(slpnaps ~ totwrk + earns74, data = sleep75, na.action = na.omit)
summary(model2)
Call:
lm(formula = slpnaps ~ totwrk + earns74, data = sleep75, na.action = na.omit)
Residuals:
Min 1Q Median 3Q Max
-1966.15 -267.98 -3.06 253.17 2372.15
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.789e+03 4.551e+01 83.274 <2e-16 ***
totwrk -1.768e-01 1.875e-02 -9.428 <2e-16 ***
earns74 -3.177e-03 1.906e-03 -1.667 0.096 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 468.6 on 703 degrees of freedom
Multiple R-squared: 0.1208, Adjusted R-squared: 0.1183
F-statistic: 48.31 on 2 and 703 DF, p-value: < 2.2e-16
This model seems to be slightly better than the previous one. The
R-squared is slightly higher and the error rate is lower. However, the
problem with the income is that it is dependent on other variables.
The analysis of income
Warning in cor(data, use = method[1], method = method[2]): the standard
deviation is zero

From the correlarion matrix, we can observe a correlation between
income and spsepay as well as othinc. Let’s analyze them.
ggplot(data=sleep75,aes(lothinc, earns74, color = factor(male))) +
geom_point() +
geom_smooth(method = lm)
`geom_smooth()` using formula = 'y ~ x'

There is some negative correlation between these variables, but it is
not very strong:
cor(lothinc,earns74)
[1] -0.3209126
ggplot(data=sleep75,aes(spsepay, earns74)) +
geom_point() +
geom_smooth(method = lm) +
ggtitle("Spouse pay vs income")
`geom_smooth()` using formula = 'y ~ x'

The correlation between earnings and spouse’s earnings is just
0.2433.
cor(spsepay,earns74)
[1] 0.2433129
To sum it up, it is quite difficult to state what impacts the income
as it is influenced by many variables. It is also hard to create an
accurate linear model for it.
Creating a final version of the model
In this case I want to consider a model defined by the equation:
sleep = β0 + β1 x totwork + β2 x educ + β x age + u
model3<-lm(slpnaps ~ totwrk + educ + age, data = sleep75)
summary(model3)
Call:
lm(formula = slpnaps ~ totwrk + educ + age, data = sleep75)
Residuals:
Min 1Q Median 3Q Max
-1914.12 -277.00 -7.56 277.30 2377.92
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3847.54448 124.50279 30.903 < 2e-16 ***
totwrk -0.17688 0.01851 -9.555 < 2e-16 ***
educ -16.87035 6.52545 -2.585 0.00993 **
age 3.26280 1.60317 2.035 0.04220 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 465 on 702 degrees of freedom
Multiple R-squared: 0.1354, Adjusted R-squared: 0.1317
F-statistic: 36.64 on 3 and 702 DF, p-value: < 2.2e-16
As you can see, more education leads to less sleep and nap time. If
we assume that the difference between high school and college is four
years, than the sleep time of a person who graduated from college would
be 4*16,87 = 67,48 minutes per week lower than a person’s who graduated
from high school.
The coefficient for age is positive, so the increase in age leads to
an increase in the sleep time(although it is not very significant).
`geom_smooth()` using formula = 'y ~ x'

Including age and education in the model increased the R-squared from
0.1173 to 0.1354. However, it is still a pretty weak correlation since
the three variables only explain around 13,5% variation in sleep and nap
time.
The RSE of this model is 465.1, which gives us the error rate of
value 13,7%. It is a little bit better than in the simple model, where
the error rate was ~13,85%
[1] 0.1374576
Diagnostic plots of the regression model




When it comes to the diagnostics plots, the Residuals vs Fitted looks
OK and so does the Normal Q-Q, which means the residuals have a roughly
linear pattern and are normally distributed. The Scale-Location and
Residuals vs Leverage are also not bad.
Overall, even though it is far from perfect, this model seems to be
quite good.
Conclusion
The only factor that seems to significantly affect sleeping time is
the total work time. Because of the low correlation coefficients, it it
hard to state what else might influence the sleep time. However, these
models show that sleep is at least partially a consumer’s choice and is
influenced by the same variables as our other uses of time.
LS0tCnRpdGxlOiAiU2xlZXAgYW5hbHlzaXMiCmF1dGhvcjogIkFnYXRhIFN0dWtvdyIKZGF0ZTogIjIwMjMtMDYtMTIiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdGhlbWU6IGNlcnVsZWFuCiAgICBoaWdobGlnaHQ6IHRleHRtYXRlCiAgICBmb250c2l6ZTogOHB0CiAgICB0b2M6IHllcwogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogbm8KICAgIGRmX3ByaW50OiBkZWZhdWx0CiAgICB0b2NfZGVwdGg6IDUKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAnNScKZWRpdG9yX29wdGlvbnM6CiAgbWFya2Rvd246CiAgICB3cmFwOiA3MgotLS0KQmFzZWQgb24gdGhlIGFydGljbGUgIlNsZWVwIGFuZCB0aGUgQWxsb2NhdGlvbiBvZiBUaW1lIiwgSSBjcmVhdGVkIGFuIGFuYWx5c2lzIG9mIHRoZSBsZW5ndGggb2Ygc2xlZXAgYW5kIG5hcCB0aW1lIChmcm9tIHRoZSBzbGVlcDc1IGRhdGEgc2V0KSBpbiB0ZXJtcyBvZiBvdGhlciB2YXJpYWJsZXMsIHN1Y2ggYXMgdG90YWwgd29yayB0aW1lIGFuZCBhZ2UuCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgY29tbWVudCA9ICIiKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGNvcnJwbG90KQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShoYXZlbikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeShwcGNvcikgIyB0aGlzIHBhY2thZ2UgY29tcHV0ZXMgcGFydGlhbCBhbmQgc2VtaXBhcnRpYWwgY29ycmVsYXRpb25zLgpsaWJyYXJ5KGx0bSkgIyB0aGlzIHBhY2thZ2UgY29tcHV0ZXMgcG9pbnQtYmlzZXJpYWwgY29ycmVsYXRpb25zLgpsaWJyYXJ5KGRldnRvb2xzKSAKaW5zdGFsbF9naXRodWIoIm1hcmtoZWNrbWFubi9yeW91cmVhZHkiKSAjIHBsZWFzZSBpbnN0YWxsIHBhY2thZ2UgInJ5b3VyZWFkeSIgZnJvbSBnaXRodWIhICh0aGVuICMgaXQpCmxpYnJhcnkocnlvdXJlYWR5KSAjIHRoaXMgcGFja2FnZSBjb21wdXRlcyBub25saW5lYXIgImV0YSIgY29ycmVsYXRpb25zLgpsaWJyYXJ5KEdHYWxseSkgIyB0aGlzIHBhY2thZ2UgY29tcHV0ZXMgY29ycmVsYXRpb24gbWF0cml4LgpsaWJyYXJ5KHBzeWNoKSAjIHRoaXMgcGFja2FnZSBjb21wdXRlcyBxdWFsaXRhdGl2ZSBjb3JyZWxhdGlvbnMuCmxpYnJhcnkoRGVzY1Rvb2xzKSAjIHRoaXMgcGFja2FnZSBjb21wdXRlcyBxdWFsaXRhdGl2ZSBjb3JyZWxhdGlvbnMuCmxpYnJhcnkod29vbGRyaWRnZSkKbGlicmFyeShwbG90M0QpCmBgYAoKCiMjIENvcnJlbGF0aW9uIG1hdHJpeCBvZiB0aGUgc2xlZXA3NSBkYXRhc2V0CgpJIGNyZWF0ZWQgdGhpcyBtYXRyaXggdG8gaGF2ZSBhIGdlbmVyYWwgdmlldyBvZiBjb3JyZWxhdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgdmFyaWFibGVzIGluIHRoZSBzbGVlcDc1IGRhdGEgc2V0LgoKYGBge3IgbWF0cml4RX0KY29yX21hdHJpeCA8LSBjb3Ioc2xlZXA3NSkgICAgICAgICAgICAgICAgICAgICAgCmNvcl9tYXRyaXhfcm0gPC0gY29yX21hdHJpeCAgICAgICAgICAgICAgICAgCmNvcl9tYXRyaXhfcm1bdXBwZXIudHJpKGNvcl9tYXRyaXhfcm0pXSA8LSAwCmRpYWcoY29yX21hdHJpeF9ybSkgPC0gMApkYXRhX25ldyA8LSBzbGVlcDc1WyAsICFhcHBseShjb3JfbWF0cml4X3JtLDIsIGZ1bmN0aW9uKHgpIGFueShhYnMoeCkgPiAwLjk5LCBuYS5ybSA9IFRSVUUpKV0KI2NvcnJwbG90KGNvcihkYXRhX25ldyx1c2U9InBhaXJ3aXNlLmNvbXBsZXRlLm9icyIpLCBtZXRob2QgPSAnY2lyY2xlJywgdHlwZT0idXBwZXIiLCBvcmRlciA9ICJhbHBoYWJldCIpCmdnY29ycihkYXRhX25ldywgbWV0aG9kID0gYygicGFpcndpc2UiLCAicGVhcnNvbiIpLCBkaWdpdHMgPSAyLCBsYWJlbF9hbHBoYSA9IFRSVUUpCmBgYAoKIyMgQ3JlYXRpbmcgYSBiYXNpYyByZWdyZXNzaW9uIG1vZGVsCgpGcm9tIHRoZSBtYXRyaXgsIHRoZSBzdHJvbmdlc3QgY29ycmVsYXRpb24gSSBmb3VuZCBmb3Igc2xwbmFwcyB3YXMgd2l0aCB0b3R3cmsuIFRoZSBjb2VmZmljaWVudCBvZiBjb3JyZWxhdGlvbiBpczoKCmBgYHtyIGNvcjF9CmF0dGFjaChzbGVlcDc1KQpjb3IodG90d3JrLHNscG5hcHMpCmBgYAoKClRoZW4gSSBjcmVhdGVkIGEgbGluZWFyIG1vZGVsIGZvciBzbGVlcCZuYXAgdGltZSBhbmQgdG90YWwgd29yayB0aW1lLgoKYGBge3IgbGluZWFyIG1vZGVsLGVjaG89VFJVRX0KbW9kZWwxIDwtIGxtKHNscG5hcHN+dG90d3JrLCBkYXRhID0gc2xlZXA3NSkKc3VtbWFyeShtb2RlbDEpCmBgYAoKVGhlIGludGVyY2VwdCB0ZWxscyB1cyB0aGF0IHRoZSBhcHByb3hpbWF0ZSBzbGVlcCBhbmQgbmFwIHRpbWUgZm9yIGEgcGVyc29uIHdobyBkb2VzIG5vdCB3b3JrIGlzIDM3NjYuMTI0NiBtaW51dGVzICg2MiBob3VycyBhbmQgNDYgbWludXRlcykgcGVyIHdlZWsuCgpUaGUgZXF1YXRpb24gb2Ygc2xlZXAgYW5kIG5hcCB0aW1lIGxvb2tzIGxpa2UgdGhpczoKc2xwbmFwcyA9IDM3NjYuMTI0NjEgLSAwLjE4MDQqdG90d3JrCgpUaGF0IG1lYW5zIGluY3JlYXNpbmcgdGhlIHRvdGFsIHdvcmsgdGltZSBieSBvbmUgaG91ciB3b3VsZCBkZWNyZWFzZSB0aGUgc2xlZXAgYW5kIG5hcCB0aW1lIGJ5IDAuMTgwNCo2MCA9IDEwLjgyNCBtaW51dGVzIHBlciB3ZWVrICh3aGljaCBpcyBub3QgYSBsb3QgcGVyIG5pZ2h0KSAgIAoKUmVzaWR1YWwgc3RhbmRhcmQgZXJyb3I6IDQ2OS4yIG9uIDcwNCBkZWdyZWVzIG9mIGZyZWVkb20KTXVsdGlwbGUgUi1zcXVhcmVkOiAwLjExNzMKCiMjIFNjYXR0ZXJwbG90IG9mIHNsZWVwIHRpbWUgYW5kIHRvdGFsIHdvcmsKCmBgYHtyIHNjYXR0ZXIxLCBlY2hvPVRSVUV9CmdncGxvdChkYXRhPXNsZWVwNzUsIGFlcyh0b3R3cmssc2xwbmFwcykpICsKICBnZW9tX3BvaW50KCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9IGxtKSsKICBsYWJzKHg9InRvdGFsIHdvcmsgdGltZSIsIHk9InNsZWVwIGFuZCBuYXAgdGltZSIpCmBgYAoKIyMgVG90YWwgd29yayB0aW1lIGFuYWx5c2lzIAoKYGBge3Igd29yaywgZWNobz1UUlVFfQpnZ3Bsb3QoZGF0YT1zbGVlcDc1LCBhZXMoZmFjdG9yKG1hbGUpLHRvdHdyaykpICsKICBnZW9tX2JveHBsb3QoKSArCiAgZ2d0aXRsZSgiVG90YWwgd29yayB0aW1lIGdyb3VwZWQgYnkgc2V4IikgKwogIGxhYnMoeD0iMCAtIGZlbWFsZSwgMSAtIG1hbGUiLCB5PSJ0b3RhbCB3b3JrIHRpbWUiKQpgYGAKCkFzIHlvdSBjYW4gc2VlLCB0aGUgc2xlZXAgYW5kIG5hcCB0aW1lIHdhcyBzbGlnaHRseSBoaWdoZXIgZm9yIG1lbiB0aGFuIGZvciB3b21lbiBpbiB0aGUgNzBzLiBUaGlzIGJyaW5ncyBvbiBhIHF1ZXN0aW9uIC0gSXMgdGhlIHNsZWVwIHRpbWUgYWZmZWN0ZWQgYnkgZ2VuZGVyPwoKYGBge3IgbWVuIGNvciwgZWNobyA9IFRSVUV9CmJpc2VyaWFsLmNvcihzbHBuYXBzLCBtYWxlKQpgYGAKVGhlIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50IGJldHdlZW4gc2xlZXAgdGltZSBhbmQgZ2VuZGVyIGlzIHZlcnkgbG93LCB3aGljaCBpbmRpY2F0ZXMgdGhhdCBnZW5kZXIgaGFzIHByZXR0eSBtdWNoIG5vIGluZmx1ZW5jZSBvbiB0aGUgbGVuZ3RoIG9mIHNsZWVwIGFuZCBuYXBzLiAKCiMjIENvbnNpZGVyaW5nIHdhZ2UgaW4gdGhlIG1vZGVsCgpBcyBCaWRkbGUgYW5kIEhhbWVybWVzaCBtZW50aW9uZWQgaW4gdGhlaXIgYXJ0aWNsZSwgc2xlZXAgYW5kIG5hcCB0aW1lIGlzIGFsc28gYWZmZWN0ZWQgYnkgdGhlIGVhcm5pbmdzIG9mIGEgd29ya2luZyBwZXJzb24uCgpgYGB7ciBtMiwgZWNobz1UUlVFfQptb2RlbDI8LWxtKHNscG5hcHMgfiB0b3R3cmsgKyBlYXJuczc0LCBkYXRhID0gc2xlZXA3NSwgIG5hLmFjdGlvbiA9IG5hLm9taXQpCnN1bW1hcnkobW9kZWwyKQpgYGAKVGhpcyBtb2RlbCBzZWVtcyB0byBiZSBzbGlnaHRseSBiZXR0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lLiBUaGUgUi1zcXVhcmVkIGlzIHNsaWdodGx5IGhpZ2hlciBhbmQgdGhlIGVycm9yIHJhdGUgaXMgbG93ZXIuIEhvd2V2ZXIsIHRoZSBwcm9ibGVtIHdpdGggdGhlIGluY29tZSBpcyB0aGF0IGl0IGlzIGRlcGVuZGVudCBvbiBvdGhlciB2YXJpYWJsZXMuCgojIyBUaGUgYW5hbHlzaXMgb2YgaW5jb21lIAoKYGBge3IgY29ybWF0fQpjb3JfbWF0cml4IDwtIGNvcihzbGVlcDc1KSAgICAgICAgICAgICAgICAgICAgICAKY29yX21hdHJpeF9ybSA8LSBjb3JfbWF0cml4ICAgICAgICAgICAgICAgICAKY29yX21hdHJpeF9ybVt1cHBlci50cmkoY29yX21hdHJpeF9ybSldIDwtIDAKZGlhZyhjb3JfbWF0cml4X3JtKSA8LSAwCmRhdGFfbmV3IDwtIHNsZWVwNzVbICwgIWFwcGx5KGNvcl9tYXRyaXhfcm0sMiwgZnVuY3Rpb24oeCkgYW55KGFicyh4KSA+IDAuOTksIG5hLnJtID0gVFJVRSkpXQojY29ycnBsb3QoY29yKGRhdGFfbmV3LHVzZT0icGFpcndpc2UuY29tcGxldGUub2JzIiksIG1ldGhvZCA9ICdjaXJjbGUnLCB0eXBlPSJ1cHBlciIsIG9yZGVyID0gImFscGhhYmV0IikKZ2djb3JyKGRhdGFfbmV3LCBtZXRob2QgPSBjKCJwYWlyd2lzZSIsICJwZWFyc29uIiksIGRpZ2l0cyA9IDIsIGxhYmVsX2FscGhhID0gVFJVRSkKYGBgCgpGcm9tIHRoZSBjb3JyZWxhcmlvbiBtYXRyaXgsIHdlIGNhbiBvYnNlcnZlIGEgY29ycmVsYXRpb24gYmV0d2VlbiBpbmNvbWUgYW5kIHNwc2VwYXkgYXMgd2VsbCBhcyBvdGhpbmMuIExldCdzIGFuYWx5emUgdGhlbS4KCgpgYGB7ciBpbmMxLCBlY2hvPVRSVUV9CmdncGxvdChkYXRhPXNsZWVwNzUsYWVzKGxvdGhpbmMsIGVhcm5zNzQsIGNvbG9yID0gZmFjdG9yKG1hbGUpKSkgKwogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gbG0pCmBgYAoKVGhlcmUgaXMgc29tZSBuZWdhdGl2ZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZXNlIHZhcmlhYmxlcywgYnV0IGl0IGlzIG5vdCB2ZXJ5IHN0cm9uZzoKCmBgYHtyIG90aGNvciwgZWNobz1UUlVFfQpjb3IobG90aGluYyxlYXJuczc0KQpgYGAKCgpgYGB7ciBpbmMyLCBlY2hvPVRSVUV9CmdncGxvdChkYXRhPXNsZWVwNzUsYWVzKHNwc2VwYXksIGVhcm5zNzQpKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSBsbSkgKwogIGdndGl0bGUoIlNwb3VzZSBwYXkgdnMgaW5jb21lIikKYGBgCgpUaGUgY29ycmVsYXRpb24gYmV0d2VlbiBlYXJuaW5ncyBhbmQgc3BvdXNlJ3MgZWFybmluZ3MgaXMganVzdCAwLjI0MzMuCmBgYHtyIHNwc2NvciwgZWNobyA9VFJVRX0KY29yKHNwc2VwYXksZWFybnM3NCkKYGBgCgpUbyBzdW0gaXQgdXAsIGl0IGlzIHF1aXRlIGRpZmZpY3VsdCB0byBzdGF0ZSB3aGF0IGltcGFjdHMgdGhlIGluY29tZSBhcyBpdCBpcyBpbmZsdWVuY2VkIGJ5IG1hbnkgdmFyaWFibGVzLiBJdCBpcyBhbHNvIGhhcmQgdG8gY3JlYXRlIGFuIGFjY3VyYXRlIGxpbmVhciBtb2RlbCBmb3IgaXQuCgojIyBDcmVhdGluZyBhIGZpbmFsIHZlcnNpb24gb2YgdGhlIG1vZGVsCgpJbiB0aGlzIGNhc2UgSSB3YW50IHRvIGNvbnNpZGVyIGEgbW9kZWwgZGVmaW5lZCBieSB0aGUgZXF1YXRpb246CnNsZWVwID0gIM6yMCArIM6yMSB4IHRvdHdvcmsgKyDOsjIgeCBlZHVjICsgzrIgeCBhZ2UgKyB1CgpgYGB7ciBjb21wIG1vZGVsLCBlY2hvPVRSVUV9Cm1vZGVsMzwtbG0oc2xwbmFwcyB+IHRvdHdyayArIGVkdWMgKyBhZ2UsIGRhdGEgPSBzbGVlcDc1KQpzdW1tYXJ5KG1vZGVsMykKYGBgCkFzIHlvdSBjYW4gc2VlLCBtb3JlIGVkdWNhdGlvbiBsZWFkcyB0byBsZXNzIHNsZWVwIGFuZCBuYXAgdGltZS4gSWYgd2UgYXNzdW1lIHRoYXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBoaWdoIHNjaG9vbCBhbmQgY29sbGVnZSBpcyBmb3VyIHllYXJzLCB0aGFuIHRoZSBzbGVlcCB0aW1lIG9mIGEgcGVyc29uIHdobyBncmFkdWF0ZWQgZnJvbSBjb2xsZWdlIHdvdWxkIGJlIDQqMTYsODcgPSA2Nyw0OCBtaW51dGVzIHBlciB3ZWVrIGxvd2VyIHRoYW4gYSBwZXJzb24ncyB3aG8gZ3JhZHVhdGVkIGZyb20gaGlnaCBzY2hvb2wuCgpUaGUgY29lZmZpY2llbnQgZm9yIGFnZSBpcyBwb3NpdGl2ZSwgc28gdGhlIGluY3JlYXNlIGluIGFnZSBsZWFkcyB0byBhbiBpbmNyZWFzZSBpbiB0aGUgc2xlZXAgdGltZShhbHRob3VnaCBpdCBpcyBub3QgdmVyeSBzaWduaWZpY2FudCkuIAoKYGBge3IgYWdlfQpnZ3Bsb3QoZGF0YT1zbGVlcDc1LGFlcyhhZ2Usc2xwbmFwcyxjb2xvciA9IGZhY3RvcihtYWxlKSkgKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSBsbSkgKwogIGdndGl0bGUoIkFnZSB2cyBzbGVlcCBhbmQgbmFwIHRpbWUgZm9yIGJvdGggc2V4ZXMiKQogIApgYGAKCkluY2x1ZGluZyBhZ2UgYW5kIGVkdWNhdGlvbiBpbiB0aGUgbW9kZWwgaW5jcmVhc2VkIHRoZSBSLXNxdWFyZWQgZnJvbSAwLjExNzMgdG8gMC4xMzU0LiBIb3dldmVyLCBpdCBpcyBzdGlsbCBhIHByZXR0eSB3ZWFrIGNvcnJlbGF0aW9uIHNpbmNlIHRoZSB0aHJlZSB2YXJpYWJsZXMgb25seSBleHBsYWluIGFyb3VuZCAxMyw1JSB2YXJpYXRpb24gaW4gc2xlZXAgYW5kIG5hcCB0aW1lLgoKVGhlIFJTRSBvZiB0aGlzIG1vZGVsIGlzIDQ2NS4xLCB3aGljaCBnaXZlcyB1cyB0aGUgZXJyb3IgcmF0ZSBvZiB2YWx1ZSAxMyw3JS4KSXQgaXMgYSBsaXR0bGUgYml0IGJldHRlciB0aGFuIGluIHRoZSBzaW1wbGUgbW9kZWwsIHdoZXJlIHRoZSBlcnJvciByYXRlIHdhcyB+MTMsODUlCmBgYHtyIHJzZTIsIGVjaG8gdHJ1ZX0Kc2lnbWEobW9kZWwzKS9tZWFuKHNsZWVwNzUkc2xwbmFwcykKYGBgCgojIyBEaWFnbm9zdGljIHBsb3RzIG9mIHRoZSByZWdyZXNzaW9uIG1vZGVsCgpgYGB7ciBtb2RlbDN9CnBsb3QobW9kZWwzKQpgYGAKCgpXaGVuIGl0IGNvbWVzIHRvIHRoZSBkaWFnbm9zdGljcyBwbG90cywgdGhlIFJlc2lkdWFscyB2cyBGaXR0ZWQgbG9va3MgT0sgYW5kIHNvIGRvZXMgdGhlIE5vcm1hbCBRLVEsIHdoaWNoIG1lYW5zIHRoZSByZXNpZHVhbHMgaGF2ZSBhIHJvdWdobHkgbGluZWFyIHBhdHRlcm4gYW5kIGFyZSBub3JtYWxseSBkaXN0cmlidXRlZC4gVGhlIFNjYWxlLUxvY2F0aW9uIGFuZCBSZXNpZHVhbHMgdnMgTGV2ZXJhZ2UgYXJlIGFsc28gbm90IGJhZC4KCk92ZXJhbGwsIGV2ZW4gdGhvdWdoIGl0IGlzIGZhciBmcm9tIHBlcmZlY3QsIHRoaXMgbW9kZWwgc2VlbXMgdG8gYmUgcXVpdGUgZ29vZC4gCgojIyBDb25jbHVzaW9uIAoKVGhlIG9ubHkgZmFjdG9yIHRoYXQgc2VlbXMgdG8gc2lnbmlmaWNhbnRseSBhZmZlY3Qgc2xlZXBpbmcgdGltZSBpcyB0aGUgdG90YWwgd29yayB0aW1lLiBCZWNhdXNlIG9mIHRoZSBsb3cgY29ycmVsYXRpb24gY29lZmZpY2llbnRzLCBpdCBpdCBoYXJkIHRvIHN0YXRlIHdoYXQgZWxzZSBtaWdodCBpbmZsdWVuY2UgdGhlIHNsZWVwIHRpbWUuIEhvd2V2ZXIsIHRoZXNlIG1vZGVscyBzaG93IHRoYXQgc2xlZXAgaXMgYXQgbGVhc3QgcGFydGlhbGx5IGEgY29uc3VtZXIncyBjaG9pY2UgYW5kIGlzIGluZmx1ZW5jZWQgYnkgdGhlIHNhbWUgdmFyaWFibGVzIGFzIG91ciBvdGhlciB1c2VzIG9mIHRpbWUu