Load applicable packages and data
require(tidyverse) #
Loading required package: tidyverse
Warning: package ‘tidyverse’ was built under R version 4.0.5
Registered S3 methods overwritten by 'dbplyr':
method from
print.tbl_lazy
print.tbl_sql
-- Attaching packages ------------------------------------------------------------------------------- tidyverse 1.3.1 --
v ggplot2 3.3.5 v purrr 0.3.4
v tibble 3.1.6 v dplyr 1.0.7
v tidyr 1.1.4 v stringr 1.4.0
v readr 2.1.1 v forcats 0.5.1
Warning: package ‘ggplot2’ was built under R version 4.0.5
Warning: package ‘tibble’ was built under R version 4.0.5
Warning: package ‘tidyr’ was built under R version 4.0.5
Warning: package ‘readr’ was built under R version 4.0.5
Warning: package ‘purrr’ was built under R version 4.0.3
Warning: package ‘dplyr’ was built under R version 4.0.5
Warning: package ‘stringr’ was built under R version 4.0.3
Warning: package ‘forcats’ was built under R version 4.0.5
-- Conflicts ---------------------------------------------------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
require(tidyverse) #
require(janitor) # clean column names
Loading required package: janitor
Warning: package ‘janitor’ was built under R version 4.0.5
Attaching package: ‘janitor’
The following objects are masked from ‘package:stats’:
chisq.test, fisher.test
#require(ivpanel) # iv regressors in panel data
require(ivreg)
Loading required package: ivreg
Warning: package ‘ivreg’ was built under R version 4.0.5
require(stargazer) #display our regression results in a nice publishable table
Loading required package: stargazer
Warning: package ‘stargazer’ was built under R version 4.0.5
Please cite as:
Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
require(plm)
Loading required package: plm
Warning: package ‘plm’ was built under R version 4.0.5
Attaching package: ‘plm’
The following objects are masked from ‘package:dplyr’:
between, lag, lead
require(lmtest)
Loading required package: lmtest
Warning: package ‘lmtest’ was built under R version 4.0.5
Loading required package: zoo
Warning: package ‘zoo’ was built under R version 4.0.5
Attaching package: ‘zoo’
The following objects are masked from ‘package:base’:
as.Date, as.Date.numeric
require(janitor) # clean column names
#require(ivpanel) # iv regressors in panel data
require(ivreg)
require(stargazer) #display our regression results in a nice publishable table
require(plm)
require(lmtest)
X1 <- read.csv("X1.csv") %>%
clean_names() #piping prevents an umlaut over the i
Regressions
Set 1: OLS and Omitted Instruments and Fixed Effects
Reg01 <- lm(hur~taxcorp + ud + cbc +brr1y + ttr + inf_gdpd
+pslm + epl +wsc, data=X1)
Reg02 <- ivreg(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
| ud + cbc + + brr1y + ttr + inf_gdpd, data = X1)
# plm will not work without instruments
#Reg02 <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
# | ud + cbc + + brr1y + ttr + inf_gdpd, data = X1)
(1): Pooled
FE2SLS_P <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
|. + ud + cbc + brr1y + ttr + inf_gdpd +pslm + epl + wsc,
data = X1, model = "pooling")
(1a): within
FE2SLS_W <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
|. + ud + cbc + brr1y + ttr + inf_gdpd +pslm + epl + wsc,
data = X1, model = "within")
(2): Time Effects
FE2SLS_T <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
+ factor(i_time1)
|. + ud + cbc + brr1y + ttr + inf_gdpd +pslm + epl + wsc
+ factor(i_time1),
data = X1, model = "within", effect = "time")
(2a): Time Effects Experiment
FE2SLS_T1 <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
+ factor(i_time1)
|. + ud + cbc + brr1y + ttr + inf_gdpd +pslm + epl + wsc
+ factor(i_time1),
data = X1, model = "within")
(3): Locational Effects
FE2SLS_L <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
+ factor(location1)
|. + ud + cbc + brr1y + ttr + inf_gdpd +pslm + epl + wsc
+ factor(location1),
data = X1, model = "within", effect="individual")
(4): Time and Locational Effects
FE2SLS_LT <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
+ factor(location1) + factor(i_time1)
|. + ud + cbc + brr1y + ttr + inf_gdpd +pslm + epl + wsc
+ factor(location1) + factor(i_time1),
data = X1, model = "within")
(5): Time and locational effects reverse order experiment
- an attempt to figure out why (3) and (4) are exactly the same
FE2SLS_TL <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd
+ factor(i_time1) + factor(location1)
|. + ud + cbc + brr1y + ttr + inf_gdpd +pslm + epl + wsc
+ factor(i_time1) + factor(location1),
effect = "twoways", data = X1, model = "within")
Output results
stargazer(Reg01, Reg02, FE2SLS_P, FE2SLS_W, FE2SLS_T, FE2SLS_L, FE2SLS_TL,
type = "html", title = "Table 2: Regressions to Explain Unemployment Rate",
keep = c("taxcorp", "ud","cbc","brr1y", "ttr","inf_gdpd", "hur", "pslm", "epl","wsc", "Constant"),
column.labels = c("OLS", "2SLS w/o instruments", "2SLS Pooled", "2SLS Within",
"2SLS Time Fixed Effects", "2SLS Individual Fixed Effects", "2SLS Individual and Time Fixed Effects")
)
<table style="text-align:center"><caption><strong>Table 2: Regressions to Explain Unemployment Rate</strong></caption>
<tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td colspan="7"><em>Dependent variable:</em></td></tr>
<tr><td></td><td colspan="7" style="border-bottom: 1px solid black"></td></tr>
<tr><td style="text-align:left"></td><td colspan="7">hur</td></tr>
<tr><td style="text-align:left"></td><td><em>OLS</em></td><td><em>instrumental</em></td><td colspan="5"><em>panel</em></td></tr>
<tr><td style="text-align:left"></td><td><em></em></td><td><em>variable</em></td><td colspan="5"><em>linear</em></td></tr>
<tr><td style="text-align:left"></td><td>OLS</td><td>2SLS w/o instruments</td><td>2SLS Pooled</td><td>2SLS Within</td><td>2SLS Time Fixed Effects</td><td>2SLS Individual Fixed Effects</td><td>2SLS Individual and Time Fixed Effects</td></tr>
<tr><td style="text-align:left"></td><td>(1)</td><td>(2)</td><td>(3)</td><td>(4)</td><td>(5)</td><td>(6)</td><td>(7)</td></tr>
<tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">taxcorp</td><td>-0.501<sup>***</sup></td><td>-1.008<sup>**</sup></td><td>-0.804<sup>***</sup></td><td>-0.735<sup>***</sup></td><td>-0.326</td><td>-0.326</td><td>-0.326</td></tr>
<tr><td style="text-align:left"></td><td>(0.134)</td><td>(0.424)</td><td>(0.137)</td><td>(0.142)</td><td>(0.199)</td><td>(0.199)</td><td>(0.199)</td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">ud</td><td>-0.004</td><td>-0.019</td><td>-0.023</td><td>-0.032<sup>**</sup></td><td>0.281<sup>***</sup></td><td>0.281<sup>***</sup></td><td>0.281<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.014)</td><td>(0.017)</td><td>(0.014)</td><td>(0.015)</td><td>(0.063)</td><td>(0.063)</td><td>(0.063)</td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">cbc</td><td>0.042<sup>***</sup></td><td>0.051<sup>***</sup></td><td>0.052<sup>***</sup></td><td>0.048<sup>***</sup></td><td>0.131<sup>***</sup></td><td>0.131<sup>***</sup></td><td>0.131<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.011)</td><td>(0.010)</td><td>(0.010)</td><td>(0.010)</td><td>(0.035)</td><td>(0.035)</td><td>(0.035)</td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">brr1y</td><td>-0.006</td><td>0.006</td><td>0.004</td><td>0.005</td><td>0.036<sup>***</sup></td><td>0.036<sup>***</sup></td><td>0.036<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.010)</td><td>(0.010)</td><td>(0.009)</td><td>(0.009)</td><td>(0.011)</td><td>(0.011)</td><td>(0.011)</td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">ttr</td><td>-0.137<sup>***</sup></td><td>-0.145<sup>***</sup></td><td>-0.134<sup>**</sup></td><td>-0.097<sup>*</sup></td><td>-0.062</td><td>-0.062</td><td>-0.062</td></tr>
<tr><td style="text-align:left"></td><td>(0.048)</td><td>(0.054)</td><td>(0.054)</td><td>(0.056)</td><td>(0.088)</td><td>(0.088)</td><td>(0.088)</td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">inf_gdpd</td><td>-0.207<sup>**</sup></td><td></td><td>-0.050</td><td>0.015</td><td>-0.340<sup>***</sup></td><td>-0.340<sup>***</sup></td><td>-0.340<sup>***</sup></td></tr>
<tr><td style="text-align:left"></td><td>(0.102)</td><td></td><td>(0.109)</td><td>(0.118)</td><td>(0.080)</td><td>(0.080)</td><td>(0.080)</td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">pslm</td><td>1.727<sup>***</sup></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td>(0.320)</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">epl</td><td>0.543<sup>***</sup></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td>(0.202)</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">wsc</td><td>-1.306<sup>***</sup></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td>(0.174)</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">Constant</td><td>11.818<sup>***</sup></td><td>12.849<sup>***</sup></td><td>12.085<sup>***</sup></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td>(1.309)</td><td>(2.055)</td><td>(1.435)</td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>357</td><td>357</td><td>357</td><td>357</td><td>357</td><td>357</td><td>357</td></tr>
<tr><td style="text-align:left">R<sup>2</sup></td><td>0.367</td><td>0.194</td><td>0.199</td><td>0.180</td><td>0.406</td><td>0.782</td><td>0.263</td></tr>
<tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.350</td><td>0.182</td><td>0.185</td><td>0.121</td><td>0.298</td><td>0.742</td><td>0.128</td></tr>
<tr><td style="text-align:left">Residual Std. Error</td><td>2.881 (df = 347)</td><td>3.233 (df = 351)</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td style="text-align:left">F Statistic</td><td>22.338<sup>***</sup> (df = 9; 347)</td><td></td><td>86.870<sup>***</sup></td><td>73.118<sup>***</sup></td><td>205.954<sup>***</sup></td><td>1,081.220<sup>***</sup></td><td>107.421<sup>***</sup></td></tr>
<tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td colspan="7" style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
</table>
Tests
F Test: test of individual and/or time effects based on the comparison of the within and pooling model
OLS1 <- lm(hur~taxcorp, data=X1)
pFW <- plm(hur~taxcorp, data=X1, model="within")
pFtest(pFW,OLS1)
F test for individual effects
data: hur ~ taxcorp
F = 1.2415, df1 = 18, df2 = 337, p-value = 0.2256
alternative hypothesis: significant effects
“Class Test”
class(X1$location1)
[1] "character"
Coefficient Test
AIC(ct)
numeric(0)
LS0tDQp0aXRsZTogIlJlZ3Jlc3Npb25zIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIyMgTG9hZCBhcHBsaWNhYmxlIHBhY2thZ2VzIGFuZCBkYXRhDQpgYGB7cn0NCnJlcXVpcmUodGlkeXZlcnNlKSAjDQpyZXF1aXJlKGphbml0b3IpICMgY2xlYW4gY29sdW1uIG5hbWVzDQojcmVxdWlyZShpdnBhbmVsKSAjIGl2IHJlZ3Jlc3NvcnMgaW4gcGFuZWwgZGF0YQ0KcmVxdWlyZShpdnJlZykNCnJlcXVpcmUoc3RhcmdhemVyKSAjZGlzcGxheSBvdXIgcmVncmVzc2lvbiByZXN1bHRzIGluIGEgbmljZSBwdWJsaXNoYWJsZSB0YWJsZQ0KcmVxdWlyZShwbG0pDQpyZXF1aXJlKGxtdGVzdCkNClgxIDwtIHJlYWQuY3N2KCJYMS5jc3YiKSAlPiUgDQogIGNsZWFuX25hbWVzKCkgI3BpcGluZyBwcmV2ZW50cyBhbiB1bWxhdXQgb3ZlciB0aGUgaQ0KDQpgYGANCg0KIyMgUmVncmVzc2lvbnMNCiMjIyBTZXQgMTogT0xTIGFuZCBPbWl0dGVkIEluc3RydW1lbnRzIGFuZCBGaXhlZCBFZmZlY3RzDQpgYGB7ciwgZWNobz1UfQ0KUmVnMDEgPC0gbG0oaHVyfnRheGNvcnAgKyB1ZCArIGNiYyArYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZA0KICAgICAgICAgICAgK3BzbG0gKyBlcGwgK3dzYywgZGF0YT1YMSkNCg0KUmVnMDIgPC0gaXZyZWcoaHVyIH4gdGF4Y29ycCArIHVkICsgY2JjICsgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCANCiAgICAgICAgICAgICAgIHwgdWQgKyBjYmMgKyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQsIGRhdGEgPSBYMSkNCiMgcGxtIHdpbGwgbm90IHdvcmsgd2l0aG91dCBpbnN0cnVtZW50cw0KI1JlZzAyIDwtIHBsbShodXIgfiB0YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHR0ciArIGluZl9nZHBkIA0KIyAgICAgICAgICAgICAgIHwgdWQgKyBjYmMgKyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQsIGRhdGEgPSBYMSkNCg0KYGBgDQojIyMgKDEpOiBQb29sZWQNCmBgYHtyfQ0KRkUyU0xTX1AgPC0gcGxtKGh1ciB+IHRheGNvcnAgKyB1ZCArIGNiYyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQgDQogICAgICAgICAgICAgICAgfC4gKyB1ZCArIGNiYyArICBicnIxeSArIHR0ciArIGluZl9nZHBkICtwc2xtICsgZXBsICsgd3NjLCANCiAgICAgICAgICAgICAgICBkYXRhID0gWDEsIG1vZGVsID0gInBvb2xpbmciKQ0KYGBgDQojIyMgKDFhKTogd2l0aGluDQpgYGB7cn0NCkZFMlNMU19XIDwtIHBsbShodXIgfiB0YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHR0ciArIGluZl9nZHBkIA0KICAgICAgICAgICAgICAgIHwuICsgdWQgKyBjYmMgKyAgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArcHNsbSArIGVwbCArIHdzYywgDQogICAgICAgICAgICAgICAgZGF0YSA9IFgxLCBtb2RlbCA9ICJ3aXRoaW4iKQ0KYGBgDQoNCiMjIyAoMik6IFRpbWUgRWZmZWN0cw0KYGBge3J9DQpGRTJTTFNfVCA8LSBwbG0oaHVyIH4gdGF4Y29ycCArIHVkICsgY2JjICsgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCANCiAgICAgICAgICAgICAgICArIGZhY3RvcihpX3RpbWUxKQ0KICAgICAgICAgICAgICAgIHwuICsgdWQgKyBjYmMgKyAgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArcHNsbSArIGVwbCArIHdzYw0KICAgICAgICAgICAgICAgICsgZmFjdG9yKGlfdGltZTEpLCANCiAgICAgICAgICAgICAgICBkYXRhID0gWDEsIG1vZGVsID0gIndpdGhpbiIsIGVmZmVjdCA9ICJ0aW1lIikNCmBgYA0KDQojIyMgKDJhKTogVGltZSBFZmZlY3RzIEV4cGVyaW1lbnQNCmBgYHtyfQ0KRkUyU0xTX1QxIDwtIHBsbShodXIgfiB0YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHR0ciArIGluZl9nZHBkIA0KICAgICAgICAgICAgICAgICsgZmFjdG9yKGlfdGltZTEpDQogICAgICAgICAgICAgICAgfC4gKyB1ZCArIGNiYyArICBicnIxeSArIHR0ciArIGluZl9nZHBkICtwc2xtICsgZXBsICsgd3NjDQogICAgICAgICAgICAgICAgKyBmYWN0b3IoaV90aW1lMSksIA0KICAgICAgICAgICAgICAgIGRhdGEgPSBYMSwgbW9kZWwgPSAid2l0aGluIikNCmBgYA0KDQojIyMgKDMpOiBMb2NhdGlvbmFsIEVmZmVjdHMNCmBgYHtyfQ0KRkUyU0xTX0wgPC0gcGxtKGh1ciB+IHRheGNvcnAgKyB1ZCArIGNiYyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQgDQogICAgICAgICAgICAgICArIGZhY3Rvcihsb2NhdGlvbjEpDQogICAgICAgICAgICAgICAgIHwuICsgdWQgKyBjYmMgKyAgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArcHNsbSArIGVwbCArIHdzYw0KICAgICAgICAgICAgICAgICsgZmFjdG9yKGxvY2F0aW9uMSksIA0KICAgICAgICAgICAgICAgIGRhdGEgPSBYMSwgbW9kZWwgPSAid2l0aGluIiwgZWZmZWN0PSJpbmRpdmlkdWFsIikNCmBgYA0KDQojIyMgKDQpOiBUaW1lIGFuZCBMb2NhdGlvbmFsIEVmZmVjdHMNCmBgYHtyfQ0KRkUyU0xTX0xUIDwtIHBsbShodXIgfiB0YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHR0ciArIGluZl9nZHBkIA0KICAgICAgICAgICAgICAgICArIGZhY3Rvcihsb2NhdGlvbjEpICsgZmFjdG9yKGlfdGltZTEpDQogICAgICAgICAgICAgICAgIHwuICsgdWQgKyBjYmMgKyAgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArcHNsbSArIGVwbCArIHdzYw0KICAgICAgICAgICAgICAgICArIGZhY3Rvcihsb2NhdGlvbjEpICsgZmFjdG9yKGlfdGltZTEpLCANCiAgICAgICAgICAgICAgICAgZGF0YSA9IFgxLCBtb2RlbCA9ICJ3aXRoaW4iKQ0KYGBgDQoNCiMjIyAoNSk6IFRpbWUgYW5kIGxvY2F0aW9uYWwgZWZmZWN0cyByZXZlcnNlIG9yZGVyIGV4cGVyaW1lbnQNCiogYW4gYXR0ZW1wdCB0byBmaWd1cmUgb3V0IHdoeSAoMykgYW5kICg0KSBhcmUgZXhhY3RseSB0aGUgc2FtZQ0KYGBge3J9DQpGRTJTTFNfVEwgPC0gcGxtKGh1ciB+IHRheGNvcnAgKyB1ZCArIGNiYyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQgDQogICAgICAgICAgICAgICAgKyBmYWN0b3IoaV90aW1lMSkgKyBmYWN0b3IobG9jYXRpb24xKQ0KICAgICAgICAgICAgICAgICAgfC4gKyB1ZCArIGNiYyArICBicnIxeSArIHR0ciArIGluZl9nZHBkICtwc2xtICsgZXBsICsgd3NjDQogICAgICAgICAgICAgICAgICsgZmFjdG9yKGlfdGltZTEpICsgZmFjdG9yKGxvY2F0aW9uMSksIA0KICAgICAgICAgICAgICAgICBlZmZlY3QgPSAidHdvd2F5cyIsIGRhdGEgPSBYMSwgbW9kZWwgPSAid2l0aGluIikNCmBgYA0KDQoNCiMjIE91dHB1dCByZXN1bHRzDQpgYGB7cn0NCnN0YXJnYXplcihSZWcwMSwgUmVnMDIsIEZFMlNMU19QLCBGRTJTTFNfVywgRkUyU0xTX1QsIEZFMlNMU19MLCAgRkUyU0xTX1RMLA0KICAgICAgICAgIHR5cGUgPSAiaHRtbCIsIHRpdGxlID0gIlRhYmxlIDI6IFJlZ3Jlc3Npb25zIHRvIEV4cGxhaW4gVW5lbXBsb3ltZW50IFJhdGUiLCANCiAgICAgICAgICBrZWVwID0gYygidGF4Y29ycCIsICJ1ZCIsImNiYyIsImJycjF5IiwgInR0ciIsImluZl9nZHBkIiwgImh1ciIsICJwc2xtIiwgImVwbCIsIndzYyIsICJDb25zdGFudCIpLA0KICAgICAgICAgIGNvbHVtbi5sYWJlbHMgPSBjKCJPTFMiLCAiMlNMUyB3L28gaW5zdHJ1bWVudHMiLCAiMlNMUyBQb29sZWQiLCAiMlNMUyBXaXRoaW4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyU0xTIFRpbWUgRml4ZWQgRWZmZWN0cyIsICIyU0xTIEluZGl2aWR1YWwgRml4ZWQgRWZmZWN0cyIsICIyU0xTIEluZGl2aWR1YWwgYW5kIFRpbWUgRml4ZWQgRWZmZWN0cyIpDQogICAgICAgICAgKQ0KYGBgDQoNCg0KDQojIyBUZXN0cw0KIyMjIEYgVGVzdDogdGVzdCBvZiBpbmRpdmlkdWFsIGFuZC9vciB0aW1lIGVmZmVjdHMgYmFzZWQgb24gdGhlIGNvbXBhcmlzb24gb2YgdGhlIHdpdGhpbiBhbmQgcG9vbGluZyBtb2RlbA0KYGBge3J9DQpPTFMxIDwtIGxtKGh1cn50YXhjb3JwLCBkYXRhPVgxKQ0KcEZXIDwtIHBsbShodXJ+dGF4Y29ycCwgZGF0YT1YMSwgbW9kZWw9IndpdGhpbiIpDQoNCnBGdGVzdChwRlcsT0xTMSkNCmBgYA0KDQojIyMgIkNsYXNzIFRlc3QiDQpgYGB7cn0NCmNsYXNzKFgxJGlfdGltZTEpDQpjbGFzcyhYMSRsb2NhdGlvbjEpDQpgYGANCg0KIyMjIENvZWZmaWNpZW50IFRlc3QNCmBgYHtyfQ0KY3QgPC0gY29lZnRlc3QoRkUyU0xTX1ApDQpub2JzKEZFMlNMU19QKQ0KbG9nTGlrKGN0KQ0KQUlDKGN0KQ0KYGBgDQoNCg==