First Steps
Overall Project Stuff
- Data File: master.xlsx
- Gold: #EED311
- Blue: #112CEE
- Green: #11EE65
- Red: #EE119A
Read in required libraries
Loading required package: readxl
Loading required package: tidyverse
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
-- Conflicts ------------------------------------------------------------------------------------------------------------------------------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
Loading required package: janitor
Attaching package: ‘janitor’
The following objects are masked from ‘package:stats’:
chisq.test, fisher.test
Loading required package: kableExtra
Attaching package: ‘kableExtra’
The following object is masked from ‘package:dplyr’:
group_rows
Loading required package: stargazer
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
Loading required package: plm
Attaching package: ‘plm’
The following objects are masked from ‘package:dplyr’:
between, lag, lead
Loading required package: lmtest
Loading required package: zoo
Attaching package: ‘zoo’
The following objects are masked from ‘package:base’:
as.Date, as.Date.numeric
Read in Data
- original df was cleaned wholly in Excel and produced “X1.csv”
- we recreated X1 as X2 with thru data manipulation through R
- the df “DirtyD” was an attempt to recreate a dataset ran by Prof K from master.xlsx, R don’t like it
# attempting 540 observations
#DirtyD <- read_excel("C:\\Users\\hisjo\\OneDrive\\Documents\\Sac State\\ECON 145 Economic Research Methods\\Data\\master.xlsx") %>%
# clean_names() %>% #piping prevents an umlaut over the i
# select(-c(l1_inf_gdpd)) %>% #Extranious data, just in case
# #transform(cbc = as.numeric(cbc)) %>% #cbc had some char, convert and coerce NAs
# filter(time1!=2020) %>% #Remove 2020 Entries
# drop_na()
#N = 546
X2 <- read_excel("C:\\Users\\hisjo\\OneDrive\\Documents\\Sac State\\ECON 145 Economic Research Methods\\Data\\master.xlsx") %>%
clean_names() %>%
transform(cbc = as.numeric(cbc)) %>% #cbc had some char, convert and coerce NAs
filter(time1 != 2020) %>% # Remove 2020 from our dataset
select(-c(l1_inf_gdpd)) %>% #Extraneous data dropped (lagged gdpd)
drop_na() # remove NA
Warning in eval(substitute(list(...)), `_data`, parent.frame()) :
NAs introduced by coercion
#N=357, nCol=12
#Tell R and PLM that X2 is panel data with time1=time and location1=id
#creates a new data frame with index column, moving forward I think this is
#the correct way to handle this with PLM
P_data <- pdata.frame(X2, index = c("location1", "time1"))
# display to show transformation
X2
P_data
Variables Descriptions and Source
VarTable <- data.frame(
Variable = c("hur", "taxcorp","ud","cbc","brr1y","pslm","epl","wsc","ttr","inf_gdpd"),
Description = c("Annual Harmonized Unemployment Rate, %",
"Tax on Corporate Profits, % GDP",
"Union Density Ratio",
"Collective Bargaining Coverage, %",
"Benefit Replacement Rate at 1 year, %",
"Public Spending on Labor Markets, %GDP",
"Employment Protection Legislation, Instrumented",
"Wage Setting Coordination, Instrumented",
"Total Tax Revenue, %GDP",
"Change in Inflation with GDP Deflator, %"),
Source = c("OECD 2022a","OECD 2022b","OECD 2022f","OECD 2022g","OECD 2022d",
"OECD 2022e","OECD 2022c","OECD 2022h","OECD 2022i","World Bank 2022")
)
# create the object to output in plots
VarTable_V <- kbl(VarTable, caption = "Table 1: Variables") %>%
kable_styling(bootstrap_options = c("striped", "hover","condensed"))
VarTable_V
Table 1: Variables
| Variable |
Description |
Source |
| hur |
Annual Harmonized Unemployment Rate, % |
OECD 2022a |
| taxcorp |
Tax on Corporate Profits, % GDP |
OECD 2022b |
| ud |
Union Density Ratio |
OECD 2022f |
| cbc |
Collective Bargaining Coverage, % |
OECD 2022g |
| brr1y |
Benefit Replacement Rate at 1 year, % |
OECD 2022d |
| pslm |
Public Spending on Labor Markets, %GDP |
OECD 2022e |
| epl |
Employment Protection Legislation, Instrumented |
OECD 2022c |
| wsc |
Wage Setting Coordination, Instrumented |
OECD 2022h |
| ttr |
Total Tax Revenue, %GDP |
OECD 2022i |
| inf_gdpd |
Change in Inflation with GDP Deflator, % |
World Bank 2022 |
Overall Summary Statistics
#stargazer wont make a table if there are NA or type char
# I don't like the way it outputs, even in html. Using Kable
#stargazer(X2, title = "Table 2: Summary Statistics", type = "html", omit = c("time1") )
Descriptive1 <- matrix(
c(
c("hur"),nrow(X2), round(mean(X2$hur),3),round(sd(X2$hur),3),round(min(X2$hur),3),
round(max(X2$hur),3),
c("taxcorp"),nrow(X2),round(mean(X2$taxcorp),3), round(sd(X2$taxcorp),3),
round(min(X2$taxcorp),3),round(max(X2$taxcorp),3),
c("ud"),nrow(X2),round(mean(X2$ud),3),round(sd(X2$ud),3), round(min(X2$ud),3),
round(max(X2$ud),3),
c("pslm"),nrow(X2),round(mean(X2$pslm),3),round(sd(X2$pslm),3),round(min(X2$pslm),3),
round(max(X2$pslm),3),
c("epl"),nrow(X2),round(mean(X2$epl),3), round(sd(X2$epl),3),
round(min(X2$epl),3),round(max(X2$epl),3),
c("wsc"),nrow(X2),round(mean(X2$wsc),3), round(sd(X2$wsc),3),
round(min(X2$wsc),3),round(max(X2$wsc),3),
c("cbc"),nrow(X2),round(mean(X2$cbc),3),
round(sd(X2$cbc),3),round(min(X2$cbc),3),round(max(X2$cbc),3),
c("brr1y"),nrow(X2), round(mean(X2$brr1y),3), round(sd(X2$brr1y),3),
round(min(X2$brr1y),3),round(max(X2$brr1y),3),
c("ttr"),nrow(X2), round(mean(X2$ttr),3), round(sd(X2$ttr),3), round(min(X2$ttr),3),
round(max(X2$ttr),3),
c("inf_gdpd"),nrow(X2),round(mean(X2$inf_gdpd),3),round(sd(X2$inf_gdpd),3),
round(min(X2$inf_gdpd),3),round(max(X2$inf_gdpd),3)
),
ncol = 6, byrow = T)
colnames(Descriptive1) <- c("Statistic","N", "Mean", "SD","Min","Max")
#rownames(Descriptive1) <- c("hur","taxcorp","ud","pslm","epl","wsc","cbc","brr1y","ttr","inf_gdpd")
Descriptive1_V <- kbl(Descriptive1, caption = "Table 2: Variable Summary Statistics, All Observations") %>%
kable_styling(bootstrap_options = c("striped", "hover","condensed"))
Descriptive1_V
Table 2: Variable Summary Statistics, All Observations
| Statistic |
N |
Mean |
SD |
Min |
Max |
| hur |
357 |
7.348 |
3.575 |
2.267 |
26.117 |
| taxcorp |
357 |
3.022 |
1.347 |
0.583 |
11.992 |
| ud |
357 |
28.066 |
18.819 |
4.5 |
78 |
| pslm |
357 |
1.488 |
0.986 |
0.24 |
4.3 |
| epl |
357 |
2.117 |
0.901 |
0.093 |
4.583 |
| wsc |
357 |
2.672 |
1.366 |
1 |
5 |
| cbc |
357 |
55.636 |
31.007 |
6.1 |
100 |
| brr1y |
357 |
46.947 |
24.117 |
0 |
86 |
| ttr |
357 |
34.776 |
6.54 |
19.613 |
48.531 |
| inf_gdpd |
357 |
1.834 |
1.679 |
-4.62 |
11.047 |
Figures 8-14: Facet Wrapped Charts for paper
#Facet charts
#hur vs taxcorp by year
FW1 <- ggplot(data=X2)+
geom_point(mapping=aes(x=taxcorp,y=hur), color = "#EED311" ) +
geom_smooth(mapping=aes(x=taxcorp,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~time1) + labs(x = "taxcorp", y="hur", title = "Figure 8: hur vs taxcorp time factor")
FW11 <- ggplot(data=X2)+
geom_point(mapping=aes(x=taxcorp,y=hur), color = "#EED311" ) +
geom_smooth(mapping=aes(x=taxcorp,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~location1) + labs(x = "taxcorp", y="hur", title = "Figure 8: hur vs taxcorp location factor")
#hur vs ud
FW2 <- ggplot(data=X2)+
geom_point(mapping=aes(x=ud,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=ud,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~time1)+ labs(x = "ud", y="hur", title = "Figure 9: hur vs ud time factor")
FW21 <- ggplot(data=X2)+
geom_point(mapping=aes(x=ud,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=ud,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~location1)+ labs(x = "ud", y="hur", title = "Figure 9: hur vs ud location factor")
#hur vs cbc
FW3 <- ggplot(data=X2)+
geom_point(mapping=aes(x=cbc,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=cbc,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~time1)+ labs(x = "cbc", y="hur", title = "Figure 10: hur vs cbc time factor")
FW31 <- ggplot(data=X2)+
geom_point(mapping=aes(x=cbc,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=cbc,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~location1)+ labs(x = "cbc", y="hur", title = "Figure 10: hur vs cbc location factor")
#hur vs brr
FW4 <- ggplot(data=X2)+
geom_point(mapping=aes(x=brr1y,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=brr1y,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~time1)+ labs(x = "brr", y="hur", title = "Figure 11: hur vs brr1y time factor")
FW41 <- ggplot(data=X2)+
geom_point(mapping=aes(x=brr1y,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=brr1y,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~location1)+ labs(x = "brr", y="hur", title = "Figure 11: hur vs brr1y location factor")
#hur vs pslm
FW5 <- ggplot(data=X2)+
geom_point(mapping= aes(x=pslm,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=pslm, y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~time1)+ labs(x="pslm", y="hur", title = "Figure 12: ur vs pslm time factor")
FW51 <- ggplot(data=X2)+
geom_point(mapping= aes(x=pslm,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=pslm, y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~location1)+ labs(x="pslm", y="hur", title = "Figure 12: ur vs pslm location factor")
#hur vs ttr
FW7 <- ggplot(data=X2)+
geom_point(mapping=aes(x=ttr,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=ttr,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~time1)+ labs(x = "ttr", y="hur", title = "Figure 13: hur vs ttr time factor")
FW71 <- ggplot(data=X2)+
geom_point(mapping=aes(x=ttr,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=ttr,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~location1)+ labs(x = "ttr", y="hur", title = "Figure 13: hur vs ttr location factor")
#hur vs delta_i
FW8 <- ggplot(data=X2)+
geom_point(mapping=aes(x=inf_gdpd,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=inf_gdpd,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~time1)+ labs(x = "inf_gdpd", y="hur", title = "Figure 14: hur vs inf_gdpd time factor")
FW81 <- ggplot(data=X2)+
geom_point(mapping=aes(x=inf_gdpd,y=hur), color = "#EED311")+
geom_smooth(mapping=aes(x=inf_gdpd,y=hur), method = lm, se=F, color = "#112CEE")+
facet_wrap(~location1)+ labs(x = "inf_gdpd", y="hur", title = "Figure 14: hur vs inf_gdpd location factor")
FW1; FW11;FW2;FW21;FW3;FW31;FW4;FW41;FW5;FW51;FW7;FW71;FW8;FW81
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'
`geom_smooth()` using formula 'y ~ x'














Data Analysis, with experiments and tests
#P_data created in step 1
# Experiments with lm and plm
#OLS per "getting started"
#require(car)
# ols <- lm(hur~taxcorp, data = P_data)
# yhat <- ols$fitted
# Plot1 <- ggplot(data=P_data, aes(x=taxcorp))+
# geom_point(mapping=aes(x=taxcorp,y=hur), color = "#EED311" ) +
# geom_smooth(mapping=aes(x=taxcorp,y=hur), method = lm, se=F, color = "#112CEE")
# fixed.dum <- lm(hur~taxcorp + factor(location1)-1, data=P_data)
# yhat1 <- fixed.dum$fitted
# Plot2 <- sp(yhat1~P_data$taxcorp|P_data$location1, xlab="taxcorp", ylab=yhat,
# boxplot=F, smooth=F)
# Plot3 <- scatterplot(data=P_data,hur~time1|location1)
#OLS with LM, no instruments from X2
Reg01 <- lm(hur~taxcorp + ud + cbc + brr1y + pslm +ttr + inf_gdpd, data=X2)
#OLS with plm, no instruments from P_data
Reg02 <- plm(hur~taxcorp + ud + cbc + brr1y + pslm + ttr + inf_gdpd, data=P_data)
#OLS with lm, instruments, from P_data - include as baseline
Reg03 <- lm(hur~taxcorp + ud + cbc + brr1y + pslm +wsc +epl +ttr + inf_gdpd, data=P_data)
#OLS with plm, instruments from P_data
Reg04 <- plm(hur~taxcorp + ud + cbc + brr1y + pslm +wsc +epl +ttr + inf_gdpd, data=P_data)
#Pooled, preferred model (clean)
P2SLS <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
|.-taxcorp + epl + wsc,
data = P_data, model = "pooling")
#Pooled Experiment, verified all the same as P2SLS
P2SLS_1 <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
|. -taxcorp + epl + wsc,
data = X2, model = "pooling")
P2SLS_2 <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
| + ud + cbc + brr1y + ttr + inf_gdpd + pslm + epl + wsc,
data = P_data, model = "pooling")
#Between estimator
B2SLS <- update(P2SLS, model="between") #this is bad
#FE or within estimator
FE2SLS <- update(P2SLS, model="within")
#Random estimator
RE2SLS <- update(P2SLS, model="random")
#Check output - looks bad lol
# stargazer(Reg01,Reg02,Reg03,Reg04,P2SLS,B2SLS, type = "text")
#Time Fixed Effects and experiments
#Original Form - best fit model
FE2SLS_T <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd +pslm
+factor(time1)
|. -taxcorp + epl + wsc,
data = P_data, model = "within")
#added "time" effect to arguments
FE2SLS_T1 <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd +pslm
+factor(time1)
|. -taxcorp + epl + wsc,
data = P_data, model = "within", effect = "time")
#Streamlined
TFE2SLS1 <- update(P2SLS, model="within", effect = "time")
#check output
#stargazer(FE2SLS_T,FE2SLS_T1,TFE2SLS1, type = "text")
#Individual FE and Experiments
#Original model - all are exact same
FE2SLS_L <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
+factor(location1)
|. -taxcorp + epl + wsc,
data = P_data, model = "within")
# added "individual" effect to arguments - specifying effect prevents same results as_TL regs
FE2SLS_L1 <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
+factor(location1)
|. -taxcorp + epl + wsc,
data = P_data, model = "within", effect = "individual")
# streamlined, yes same as above
FE2SLS_L2 <- update(P2SLS, model="within", effect="individual")
#check output
#stargazer(FE2SLS_L, FE2SLS_L1, FE2SLS_L2, type = "text")
#Time and Individual FE
#Original model
FE2SLS_TL <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
+factor(time1) +factor(location1)
|. -taxcorp + epl + wsc,
data = P_data, model = "within", effect = "twoways")
# removed twoways effect from argument - best fit
FE2SLS_TL1 <- plm(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
+factor(time1) +factor(location1)
|. -taxcorp + epl + wsc,
data = P_data, model = "within")
#streamlined1, added back effect
FE2SLS_TL2 <- update(P2SLS, model="within", effect="twoways")
#streamlined2, removed effect from update
FE2SLS_TL3 <- update(P2SLS, model="within")
#check output
#stargazer(FE2SLS_TL, FE2SLS_TL1, FE2SLS_TL2, FE2SLS_TL3, type = "text")
#LM for random effects vs OLS
PX1 <- plmtest(P2SLS)
##BP LM for random effects, null is no panel effect, include
PX11 <- plmtest(P2SLS, type=c("bp"))
# Testing time-fixed effects, null is no FTE
PX12 <- plmtest(FE2SLS, c("time"), type=c("bp"))
#LM for fixed effects vs OLS, generic
PX2 <- pFtest(FE2SLS,P2SLS)
#LM for fixed effectsw vs OLS, Time specific
PX21 <- pFtest(TFE2SLS1, FE2SLS)
Warning in pf(stat, df1, df2, lower.tail = FALSE) : NaNs produced
#hausman test for fixed vs random effects, null=random preferred
PX6 <- phtest(RE2SLS,FE2SLS)
#Cross sectional dependance, null is that residuals across entities are not
#correlated. Used to test whether residuals are correlated across entities. CS dep
#can lead to bias in test results
#BPLM for cross sectional dependence in panels
PX7 <- pcdtest(FE2SLS, test=c("lm"))
Warning in pcdres(tres = tres, n = n, w = w, form = paste(deparse(x$formula)), :
Some pairs of individuals (20 percent) do not have any or just one time period in common and have been omitted from calculation
# Pesaran cross sectional dependence
PX71 <- pcdtest(FE2SLS, test=c("cd"))
Warning in pcdres(tres = tres, n = n, w = w, form = paste(deparse(x$formula)), :
Some pairs of individuals (20 percent) do not have any or just one time period in common and have been omitted from calculation
# Breusch Godfrey for SC in panels. Null is no SC. May not matter as a relativily
# short study period T=19
PX8 <- pbgtest(FE2SLS)
#ADF for stochastic trends, Null- series has unit root.
require(tseries)
Loading required package: tseries
Warning: package ‘tseries’ was built under R version 4.0.5
Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
‘tseries’ version: 0.10-50
‘tseries’ is a package for time series analysis and computational finance.
See ‘library(help="tseries")’ for details.
PX9 <- adf.test(P_data$hur, k=2)
Warning in adf.test(P_data$hur, k = 2) :
p-value smaller than printed p-value
#BP null is homoskedasticity, alternative: heteroskadasticity
PX0 <- bptest(hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm
+factor(location1), data=P_data, studentize = F)
PX11;PX2;PX6;PX7;PX71;PX8;PX9;PX0
Lagrange Multiplier Test - (Breusch-Pagan) for unbalanced panels
data: hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm | . - ...
chisq = 571.15, df = 1, p-value < 2.2e-16
alternative hypothesis: significant effects
F test for individual effects
data: hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm | . - ...
F = 378.68, df1 = 31, df2 = 318, p-value < 2.2e-16
alternative hypothesis: significant effects
Hausman Test
data: hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm | . - ...
chisq = 3.5086, df = 7, p-value = 0.8343
alternative hypothesis: one model is inconsistent
Breusch-Pagan LM test for cross-sectional dependence in panels
data: hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm | . - taxcorp + epl + wsc
chisq = 926.79, df = 447, p-value < 2.2e-16
alternative hypothesis: cross-sectional dependence
Pesaran CD test for cross-sectional dependence in panels
data: hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm | . - taxcorp + epl + wsc
z = 4.1856, p-value = 2.844e-05
alternative hypothesis: cross-sectional dependence
Breusch-Godfrey/Wooldridge test for serial correlation in panel models
data: hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm | . - ...
chisq = 188.9, df = 1, p-value < 2.2e-16
alternative hypothesis: serial correlation in idiosyncratic errors
Augmented Dickey-Fuller Test
data: P_data$hur
Dickey-Fuller = -4.7542, Lag order = 2, p-value = 0.01
alternative hypothesis: stationary
Breusch-Pagan test
data: hur ~ taxcorp + ud + cbc + brr1y + ttr + inf_gdpd + pslm + factor(location1)
BP = 474.14, df = 38, p-value < 2.2e-16
Final Output Table 3
*NOTE: the p values at the bottom of the table have to be fixed in the output document, with code (to copypasta): * to replace asterisks that cause bolding
FOutput <- stargazer(Reg03, P2SLS, FE2SLS_T1, FE2SLS_L1, FE2SLS_TL, RE2SLS,
type = "html", title = "Table 3: Regressions to Explain the Unemployment Rate",
model.names = F,
keep = c("taxcorp", "ud","cbc","brr1y", "ttr","inf_gdpd", "hur", "pslm", "epl","wsc", "Constant"),
column.labels = c("OLS", "2SLS Pooled",
"2SLS Time Fixed Effects", "2SLS Individual Fixed Effects", "2SLS Time and Individual Fixed Effects", "2SLS Random Effects")
)
# run in console, it's messy
Table 3: Regressions to Explain the Unemployment Rate
|
|
|
|
Dependent variable:
|
|
|
|
|
|
hur
|
|
|
OLS
|
2SLS Pooled
|
2SLS Time Fixed Effects
|
2SLS Individual Fixed Effects
|
2SLS Time and Individual Fixed Effects
|
2SLS Random Effects
|
|
|
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
|
|
|
taxcorp
|
-0.501***
|
-12.904
|
-3.267
|
-3.752*
|
-1.992
|
-3.208
|
|
|
(0.134)
|
(14.516)
|
(4.088)
|
(2.026)
|
(1.930)
|
(2.238)
|
|
|
|
|
|
|
|
|
|
ud
|
-0.004
|
0.263
|
0.033
|
0.011
|
0.119
|
-0.001
|
|
|
(0.014)
|
(0.351)
|
(0.102)
|
(0.068)
|
(0.129)
|
(0.052)
|
|
|
|
|
|
|
|
|
|
cbc
|
0.042***
|
0.158
|
0.054
|
0.057
|
0.075**
|
-0.002
|
|
|
(0.011)
|
(0.160)
|
(0.044)
|
(0.049)
|
(0.037)
|
(0.038)
|
|
|
|
|
|
|
|
|
|
brr1y
|
-0.006
|
0.246
|
0.038
|
0.039**
|
0.036***
|
0.039***
|
|
|
(0.010)
|
(0.321)
|
(0.091)
|
(0.016)
|
(0.013)
|
(0.014)
|
|
|
|
|
|
|
|
|
|
pslm
|
1.727***
|
-9.934
|
-0.885
|
1.457*
|
2.180***
|
1.637**
|
|
|
(0.320)
|
(13.666)
|
(3.725)
|
(0.779)
|
(0.558)
|
(0.825)
|
|
|
|
|
|
|
|
|
|
wsc
|
-1.306***
|
|
|
|
|
|
|
|
(0.174)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
epl
|
0.543***
|
|
|
|
|
|
|
|
(0.202)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ttr
|
-0.137***
|
-0.700
|
-0.260
|
0.518
|
0.220
|
0.322
|
|
|
(0.048)
|
(0.704)
|
(0.229)
|
(0.343)
|
(0.356)
|
(0.331)
|
|
|
|
|
|
|
|
|
|
inf_gdpd
|
-0.207**
|
2.078
|
0.526
|
0.156
|
0.019
|
0.123
|
|
|
(0.102)
|
(2.461)
|
(0.649)
|
(0.279)
|
(0.198)
|
(0.304)
|
|
|
|
|
|
|
|
|
|
Constant
|
11.818***
|
53.930
|
|
|
|
2.135
|
|
|
(1.309)
|
(50.013)
|
|
|
|
(4.595)
|
|
|
|
|
|
|
|
|
|
|
|
Observations
|
357
|
357
|
357
|
357
|
357
|
357
|
|
R2
|
0.367
|
0.049
|
0.103
|
0.189
|
0.264
|
0.202
|
|
Adjusted R2
|
0.350
|
0.030
|
0.035
|
0.092
|
0.127
|
0.186
|
|
Residual Std. Error
|
2.881 (df = 347)
|
|
|
|
|
|
|
F Statistic
|
22.338*** (df = 9; 347)
|
5.469
|
43.285***
|
96.725***
|
144.909***
|
113.648***
|
|
|
|
Note:
|
*p<0.1; **p<0.05; ***p<0.01
|
LS0tDQp0aXRsZTogIkVDT04gMTQ1IERhdGEgUHJvamVjdCBGaW5hbCINCm91dHB1dDogDQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQNCiAgYWx3YXlzX2FsbG93X2h0bWw6IHRydWUNCi0tLQ0KDQojIyBGaXJzdCBTdGVwcw0KIyMjIE92ZXJhbGwgUHJvamVjdCBTdHVmZg0KKiBEYXRhIEZpbGU6IG1hc3Rlci54bHN4DQoqIEdvbGQ6ICNFRUQzMTENCiogQmx1ZTogIzExMkNFRQ0KKiBHcmVlbjogIzExRUU2NQ0KKiBSZWQ6ICNFRTExOUENCg0KIyMjIFJlYWQgaW4gcmVxdWlyZWQgbGlicmFyaWVzDQpgYGB7ciBwYWNrYWdlcywgZWNobz1GLCB3YXJuaW5nPUZ9DQpyZXF1aXJlKHJlYWR4bCkNCnJlcXVpcmUodGlkeXZlcnNlKSAjIGkgdGhpbmsgdGhpcyBnaXZlcyBtZSBkcGx5ciBhbmQgdGlkeXINCnJlcXVpcmUoamFuaXRvcikgIyBjbGVhbiBuYW1lcw0KcmVxdWlyZShnZ3Bsb3QyKSAjIGRhdGEgdml6DQpyZXF1aXJlKGthYmxlRXh0cmEpICNTdGF0IHRhYmxlcw0KcmVxdWlyZShzdGFyZ2F6ZXIpICNSZWdyZXNzaW9uIHRhYmxlcw0KIyByZXF1aXJlKGl2cmVnKSAjTWF5YmUgaW4gdGhlIGZ1dHVyZQ0KcmVxdWlyZShwbG0pICNwYW5lbCBsaW5lYXIgbW9kZWxzDQpyZXF1aXJlKGxtdGVzdCkNCg0KDQpgYGANCg0KIyMjIFJlYWQgaW4gRGF0YQ0KKiBvcmlnaW5hbCBkZiB3YXMgY2xlYW5lZCB3aG9sbHkgaW4gRXhjZWwgYW5kIHByb2R1Y2VkICJYMS5jc3YiDQoqIHdlIHJlY3JlYXRlZCBYMSBhcyBYMiB3aXRoIHRocnUgZGF0YSBtYW5pcHVsYXRpb24gdGhyb3VnaCBSDQoqIHRoZSBkZiAiRGlydHlEIiB3YXMgYW4gYXR0ZW1wdCB0byByZWNyZWF0ZSBhIGRhdGFzZXQgcmFuIGJ5IFByb2YgSyBmcm9tIG1hc3Rlci54bHN4LCBSIGRvbid0IGxpa2UgaXQNCmBgYHtyIGRhdGEgcmVhZCBpbn0NCiMgYXR0ZW1wdGluZyA1NDAgb2JzZXJ2YXRpb25zDQojRGlydHlEIDwtIHJlYWRfZXhjZWwoIkM6XFxVc2Vyc1xcaGlzam9cXE9uZURyaXZlXFxEb2N1bWVudHNcXFNhYyBTdGF0ZVxcRUNPTiAxNDUgRWNvbm9taWMgUmVzZWFyY2ggTWV0aG9kc1xcRGF0YVxcbWFzdGVyLnhsc3giKSAlPiUgDQojICBjbGVhbl9uYW1lcygpICU+JSAjcGlwaW5nIHByZXZlbnRzIGFuIHVtbGF1dCBvdmVyIHRoZSBpDQojICBzZWxlY3QoLWMobDFfaW5mX2dkcGQpKSAlPiUgI0V4dHJhbmlvdXMgZGF0YSwganVzdCBpbiBjYXNlICAgICAgICAgDQojICAjdHJhbnNmb3JtKGNiYyA9IGFzLm51bWVyaWMoY2JjKSkgJT4lICNjYmMgaGFkIHNvbWUgY2hhciwgY29udmVydCBhbmQgY29lcmNlIE5Bcw0KIyAgZmlsdGVyKHRpbWUxIT0yMDIwKSAlPiUgICNSZW1vdmUgMjAyMCBFbnRyaWVzDQojICBkcm9wX25hKCkNCiNOID0gNTQ2DQogIA0KWDIgPC0gcmVhZF9leGNlbCgiQzpcXFVzZXJzXFxoaXNqb1xcT25lRHJpdmVcXERvY3VtZW50c1xcU2FjIFN0YXRlXFxFQ09OIDE0NSBFY29ub21pYyBSZXNlYXJjaCBNZXRob2RzXFxEYXRhXFxtYXN0ZXIueGxzeCIpICU+JSANCiAgY2xlYW5fbmFtZXMoKSAlPiUgDQogIHRyYW5zZm9ybShjYmMgPSBhcy5udW1lcmljKGNiYykpICU+JSAjY2JjIGhhZCBzb21lIGNoYXIsIGNvbnZlcnQgYW5kIGNvZXJjZSBOQXMNCiAgZmlsdGVyKHRpbWUxICE9IDIwMjApICU+JSAjIFJlbW92ZSAyMDIwIGZyb20gb3VyIGRhdGFzZXQNCiAgc2VsZWN0KC1jKGwxX2luZl9nZHBkKSkgJT4lICNFeHRyYW5lb3VzIGRhdGEgZHJvcHBlZCAobGFnZ2VkIGdkcGQpDQogIGRyb3BfbmEoKSAjIHJlbW92ZSBOQQ0KI049MzU3LCBuQ29sPTEyIA0KDQojVGVsbCBSIGFuZCBQTE0gdGhhdCBYMiBpcyBwYW5lbCBkYXRhIHdpdGggdGltZTE9dGltZSBhbmQgbG9jYXRpb24xPWlkDQojY3JlYXRlcyBhIG5ldyBkYXRhIGZyYW1lIHdpdGggaW5kZXggY29sdW1uLCBtb3ZpbmcgZm9yd2FyZCBJIHRoaW5rIHRoaXMgaXMNCiN0aGUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHRoaXMgd2l0aCBQTE0NClBfZGF0YSA8LSBwZGF0YS5mcmFtZShYMiwgaW5kZXggPSBjKCJsb2NhdGlvbjEiLCAidGltZTEiKSkNCiMgZGlzcGxheSB0byBzaG93IHRyYW5zZm9ybWF0aW9uDQpYMg0KUF9kYXRhDQpgYGANCg0KIyMjIFZhcmlhYmxlcyBEZXNjcmlwdGlvbnMgYW5kIFNvdXJjZQ0KYGBge3IgVmFyaWFibGVzIFRhYmxlfQ0KVmFyVGFibGUgPC0gZGF0YS5mcmFtZSgNCiAgVmFyaWFibGUgPSBjKCJodXIiLCAidGF4Y29ycCIsInVkIiwiY2JjIiwiYnJyMXkiLCJwc2xtIiwiZXBsIiwid3NjIiwidHRyIiwiaW5mX2dkcGQiKSwNCiAgRGVzY3JpcHRpb24gPSBjKCJBbm51YWwgSGFybW9uaXplZCBVbmVtcGxveW1lbnQgUmF0ZSwgJSIsDQogICAgICAgICAgICAgICAgICAiVGF4IG9uIENvcnBvcmF0ZSBQcm9maXRzLCAlIEdEUCIsDQogICAgICAgICAgICAgICAgICAiVW5pb24gRGVuc2l0eSBSYXRpbyIsDQogICAgICAgICAgICAgICAgICAiQ29sbGVjdGl2ZSBCYXJnYWluaW5nIENvdmVyYWdlLCAlIiwNCiAgICAgICAgICAgICAgICAgICJCZW5lZml0IFJlcGxhY2VtZW50IFJhdGUgYXQgMSB5ZWFyLCAlIiwNCiAgICAgICAgICAgICAgICAgICJQdWJsaWMgU3BlbmRpbmcgb24gTGFib3IgTWFya2V0cywgJUdEUCIsDQogICAgICAgICAgICAgICAgICAiRW1wbG95bWVudCBQcm90ZWN0aW9uIExlZ2lzbGF0aW9uLCBJbnN0cnVtZW50ZWQiLA0KICAgICAgICAgICAgICAgICAgIldhZ2UgU2V0dGluZyBDb29yZGluYXRpb24sIEluc3RydW1lbnRlZCIsDQogICAgICAgICAgICAgICAgICAiVG90YWwgVGF4IFJldmVudWUsICVHRFAiLA0KICAgICAgICAgICAgICAgICAgIkNoYW5nZSBpbiBJbmZsYXRpb24gd2l0aCBHRFAgRGVmbGF0b3IsICUiKSwNCiAgU291cmNlID0gYygiT0VDRCAyMDIyYSIsIk9FQ0QgMjAyMmIiLCJPRUNEIDIwMjJmIiwiT0VDRCAyMDIyZyIsIk9FQ0QgMjAyMmQiLA0KICAgICAgICAgICAgICJPRUNEIDIwMjJlIiwiT0VDRCAyMDIyYyIsIk9FQ0QgMjAyMmgiLCJPRUNEIDIwMjJpIiwiV29ybGQgQmFuayAyMDIyIikNCikNCiMgY3JlYXRlIHRoZSBvYmplY3QgdG8gb3V0cHV0IGluIHBsb3RzIA0KVmFyVGFibGVfViA8LSBrYmwoVmFyVGFibGUsIGNhcHRpb24gPSAiVGFibGUgMTogVmFyaWFibGVzIikgJT4lIA0KICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsImNvbmRlbnNlZCIpKQ0KVmFyVGFibGVfVg0KYGBgDQoNCg0KIyMjIE92ZXJhbGwgU3VtbWFyeSBTdGF0aXN0aWNzDQpgYGB7ciBzdW1tYXJ5IHN0YXRzIH0NCiNzdGFyZ2F6ZXIgd29udCBtYWtlIGEgdGFibGUgaWYgdGhlcmUgYXJlIE5BIG9yIHR5cGUgY2hhcg0KIyBJIGRvbid0IGxpa2UgdGhlIHdheSBpdCBvdXRwdXRzLCBldmVuIGluIGh0bWwuIFVzaW5nIEthYmxlDQojc3RhcmdhemVyKFgyLCB0aXRsZSA9ICJUYWJsZSAyOiBTdW1tYXJ5IFN0YXRpc3RpY3MiLCB0eXBlID0gImh0bWwiLCBvbWl0ID0gYygidGltZTEiKSApDQoNCkRlc2NyaXB0aXZlMSA8LSBtYXRyaXgoIA0KICBjKA0KICAgICAgYygiaHVyIiksbnJvdyhYMiksIHJvdW5kKG1lYW4oWDIkaHVyKSwzKSxyb3VuZChzZChYMiRodXIpLDMpLHJvdW5kKG1pbihYMiRodXIpLDMpLA0KICAgICAgcm91bmQobWF4KFgyJGh1ciksMyksDQogICAgICANCiAgICAgIGMoInRheGNvcnAiKSxucm93KFgyKSxyb3VuZChtZWFuKFgyJHRheGNvcnApLDMpLCAgcm91bmQoc2QoWDIkdGF4Y29ycCksMyksIA0KICAgICAgcm91bmQobWluKFgyJHRheGNvcnApLDMpLHJvdW5kKG1heChYMiR0YXhjb3JwKSwzKSwNCiAgICAgIA0KICAgICAgYygidWQiKSxucm93KFgyKSxyb3VuZChtZWFuKFgyJHVkKSwzKSxyb3VuZChzZChYMiR1ZCksMyksIHJvdW5kKG1pbihYMiR1ZCksMyksDQogICAgICByb3VuZChtYXgoWDIkdWQpLDMpLA0KICAgICAgDQogICAgICBjKCJwc2xtIiksbnJvdyhYMikscm91bmQobWVhbihYMiRwc2xtKSwzKSxyb3VuZChzZChYMiRwc2xtKSwzKSxyb3VuZChtaW4oWDIkcHNsbSksMyksDQogICAgICByb3VuZChtYXgoWDIkcHNsbSksMyksDQogICAgICANCiAgICAgIGMoImVwbCIpLG5yb3coWDIpLHJvdW5kKG1lYW4oWDIkZXBsKSwzKSwgcm91bmQoc2QoWDIkZXBsKSwzKSwNCiAgICAgIHJvdW5kKG1pbihYMiRlcGwpLDMpLHJvdW5kKG1heChYMiRlcGwpLDMpLA0KICAgICAgDQogICAgICBjKCJ3c2MiKSxucm93KFgyKSxyb3VuZChtZWFuKFgyJHdzYyksMyksIHJvdW5kKHNkKFgyJHdzYyksMyksDQogICAgICByb3VuZChtaW4oWDIkd3NjKSwzKSxyb3VuZChtYXgoWDIkd3NjKSwzKSwNCiAgICAgIA0KICAgICAgYygiY2JjIiksbnJvdyhYMikscm91bmQobWVhbihYMiRjYmMpLDMpLA0KICAgICAgcm91bmQoc2QoWDIkY2JjKSwzKSxyb3VuZChtaW4oWDIkY2JjKSwzKSxyb3VuZChtYXgoWDIkY2JjKSwzKSwNCiAgICAgIA0KICAgICAgYygiYnJyMXkiKSxucm93KFgyKSwgcm91bmQobWVhbihYMiRicnIxeSksMyksIHJvdW5kKHNkKFgyJGJycjF5KSwzKSwNCiAgICAgIHJvdW5kKG1pbihYMiRicnIxeSksMykscm91bmQobWF4KFgyJGJycjF5KSwzKSwNCiAgICAgIA0KICAgICAgYygidHRyIiksbnJvdyhYMiksIHJvdW5kKG1lYW4oWDIkdHRyKSwzKSwgcm91bmQoc2QoWDIkdHRyKSwzKSwgcm91bmQobWluKFgyJHR0ciksMyksDQogICAgICByb3VuZChtYXgoWDIkdHRyKSwzKSwNCiAgICAgIA0KICAgICAgYygiaW5mX2dkcGQiKSxucm93KFgyKSxyb3VuZChtZWFuKFgyJGluZl9nZHBkKSwzKSxyb3VuZChzZChYMiRpbmZfZ2RwZCksMyksDQogICAgICByb3VuZChtaW4oWDIkaW5mX2dkcGQpLDMpLHJvdW5kKG1heChYMiRpbmZfZ2RwZCksMykNCiAgICApLA0KICBuY29sID0gNiwgYnlyb3cgPSBUKQ0KDQpjb2xuYW1lcyhEZXNjcmlwdGl2ZTEpIDwtIGMoIlN0YXRpc3RpYyIsIk4iLCAiTWVhbiIsICJTRCIsIk1pbiIsIk1heCIpDQojcm93bmFtZXMoRGVzY3JpcHRpdmUxKSA8LSBjKCJodXIiLCJ0YXhjb3JwIiwidWQiLCJwc2xtIiwiZXBsIiwid3NjIiwiY2JjIiwiYnJyMXkiLCJ0dHIiLCJpbmZfZ2RwZCIpDQoNCkRlc2NyaXB0aXZlMV9WIDwtIGtibChEZXNjcmlwdGl2ZTEsIGNhcHRpb24gPSAiVGFibGUgMjogVmFyaWFibGUgU3VtbWFyeSBTdGF0aXN0aWNzLCBBbGwgT2JzZXJ2YXRpb25zIikgJT4lIA0KICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsImNvbmRlbnNlZCIpKSANCkRlc2NyaXB0aXZlMV9WDQpgYGANCg0KIyMjICBGaWd1cmVzIDMgYW5kIDQsIEhVUiB2cy4gVGF4Y29ycCwgYnkgeWVhcg0KYGBge3IsIEhVUiB2IHRheGNvcnAgYW5udWFsIEZpZ3VyZSAyfQ0KSFZUQU0gPC0gWDIgJT4lIHNlbGVjdCh0aW1lMSwgaHVyLCB0YXhjb3JwKSAlPiUgDQogIGdyb3VwX2J5KHRpbWUxKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUgDQogIHN1bW1hcml6ZShodXJfbWVhbj1tZWFuKGh1ciksIHRheGNvcnBfbWVhbiA9IG1lYW4odGF4Y29ycCkpDQoNCmNvbG9ycyA8LSBjKCJodXIiID0gIiNFRTExOUEiLCAidGF4Y29ycCIgPSAiIzExRUU2NSIpDQoNCkhWVEFNViA8LSBnZ3Bsb3QoSFZUQU0sIGFlcyh4PXRpbWUxKSkrDQogIGdlb21fbGluZShhZXMoeT1odXJfbWVhbiwgY29sb3IgPSAiaHVyIiksIHNob3cubGVnZW5kID0gVCkrDQogIGdlb21fbGluZShhZXMoeT10YXhjb3JwX21lYW4sIGNvbG9yID0gInRheGNvcnAiKSwgc2hvdy5sZWdlbmQgPSBUKSsNCiAgbGFicyh4PSJZZWFyIiwgeT0iTWVhbiwgJSIsIA0KICAgICAgIHRpdGxlID0gIkZpZ3VyZSAyOiBodXIgYW5kIHRheGNvcnAsIG1lYW5zIGJ5IHllYXIiLA0KICAgICAgIGNvbG9yID0gIkxlZ2VuZCIsIGNhcHRpb24gPSAiMzIgT0VDRCBDb3VudHJpZXMgZnJvbSAyMDAxLTIwMTkgTiA9IDM1NyIpKw0KICB5bGltKDAsMTApDQpIVlRBTVYgIyBGaXggTGVnZW5kIGFuZCBjb2xvcnMNCg0KWDMgPC0gWDINClgzJHRpbWUxIDwtIGFzLmZhY3RvcihYMyR0aW1lMSkNCkhWVEFNVjEgPC0gZ2dwbG90KGRhdGEgPSBYMywgYWVzKHg9dGltZTEpKSsNCiAgZ2VvbV9ib3hwbG90KGFlcyh5PWh1ciwgY29sb3I9Imh1ciIpLCBzaG93LmxlZ2VuZCA9IFQpKw0KICBnZW9tX2JveHBsb3QoYWVzKHk9dGF4Y29ycCwgY29sb3I9InRheGNvcnAiKSwgc2hvdy5sZWdlbmQgPSBUKSsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgc2l6ZSA9IDcpKSsNCiAgbGFicyh0aXRsZSA9ICJGaWd1cmUgMzogVGltZSBGYWN0b3IgaHVyIGFuZCB0YXhjb3JwIGJveHBsb3RzIiwgeD0iWWVhciIsIHk9IlBlcmNlbnQiICkNCkhWVEFNVjENCmBgYA0KDQojIyMgRmlndXJlcyA1IGFuZCA2OiBIVVIgdnMuIHRheGNvcnAsIGJ5IGNvdW50cnkNCmBgYHtyfQ0KSFZUSU0gPC0gWDIgJT4lIHNlbGVjdChsb2NhdGlvbjEsIGh1ciwgdGF4Y29ycCwgd3NjLCBlcGwpICU+JSANCiAgZ3JvdXBfYnkobG9jYXRpb24xKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUgDQogIHN1bW1hcmlzZShodXJfbWVhbjE9bWVhbihodXIpLCB0YXhjb3JwX21lYW4xPSBtZWFuKHRheGNvcnApLCB3c2NfbWVhbj1tZWFuKHdzYyksDQogICAgICAgICAgICBlcGxfbWVhbj1tZWFuKGVwbCkpDQoNCkhWVElNViA8LSBnZ3Bsb3QoSFZUSU0sIGFlcyh4PWxvY2F0aW9uMSwgZ3JvdXA9MSkpKw0KICBnZW9tX2xpbmUoYWVzKHk9aHVyX21lYW4xLCBjb2xvciA9ICJodXIiKSwgc2hvdy5sZWdlbmQgPSBUKSsNCiAgZ2VvbV9saW5lKGFlcyh5PXRheGNvcnBfbWVhbjEsIGNvbG9yPSAidGF4Y29ycCIpLCBzaG93LmxlZ2VuZCA9IFQpKw0KICAjZ2VvbV9jb2woYWVzKHk9d3NjX21lYW4sIGNvbG9yID0gIndzYyIpLCBhbHBoYSA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZTIocHJlc2VydmUgPSAic2luZ2xlIiksIHNob3cubGVnZW5kID0gVCkrDQogIGdlb21fY29sKGFlcyh5PWVwbF9tZWFuLCBjb2xvciA9ICJlcGwiKSwgY29sb3I9ICIjMkNFRTExIiwgYWxwaGEgPSAwLjUpKw0KICBsYWJzKHg9IkxvY2F0aW9uIC8gSW5kaXZpZHVhbCIsIHk9Ik1lYW4sICUiLCANCiAgICAgICB0aXRsZSA9ICJGaWd1cmUgNDogaHVyIGFuZCB0YXhjb3JwLCBtZWFucyBieSBsb2NhdGlvbiIsDQogICAgICAgc3VidGl0bGUgPSAid2l0aCBtZWFuIG9mIHdzYyBpbnN0cnVtZW50IGZvciBsb2NhdGlvbiIsDQogICAgICAgY29sb3IgPSAiTGVnZW5kIixjYXB0aW9uID0gIjMyIE9FQ0QgQ291bnRyaWVzIGZyb20gMjAwMS0yMDE5IE4gPSAzNTciKSsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgc2l6ZSA9IDcpKQ0KSFZUSU1WDQoNClgzJGxvY2F0aW9uMSA8LSBhcy5mYWN0b3IoWDMkbG9jYXRpb24xKQ0KSFZUSU1WMSA8LSBnZ3Bsb3QoZGF0YSA9IFgzLCBhZXMoeD1sb2NhdGlvbjEpKSsNCiAgZ2VvbV9ib3hwbG90KGFlcyh5PWh1ciwgY29sb3I9Imh1ciIpLCBzaG93LmxlZ2VuZCA9IFQpKw0KICBnZW9tX2JveHBsb3QoYWVzKHk9dGF4Y29ycCwgY29sb3I9InRheGNvcnAiKSwgc2hvdy5sZWdlbmQgPSBUKSsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgc2l6ZSA9IDcpKSsNCiAgbGFicyh0aXRsZSA9ICJGaWd1cmUgNTogTG9jYXRpb24gRmFjdG9yIGh1ciBhbmQgdGF4Y29ycCIsIHg9IkxvY2F0aW9uIiwgeT0iUGVyY2VudCIgKQ0KSFZUSU1WMQ0KYGBgDQojIyMgRmlndXJlcyA3IGFuZCA4DQoqIEhpc3RvZ3JhbXMgc2hvd2luZyBkaXN0cmlidXRpb24gb2YgaW5zdHJ1bWVudHMNCiogZ2VvbV9iYXIgY291bnRzIHRoZSBudW1iZXIgb2Ygb2NjdXJlbmNlIG9mIGVhY2ggaW5zdHJ1bWVudGVkIHZhbHVlIHRocm91Z2ggdGhlIGRhdGFzZXQuDQpgYGB7ciBXU0MgYmFyIGNoYXJ0fQ0KZXBsX2JhciA8LSBnZ3Bsb3QoZGF0YSA9IFgyKSsNCiAgZ2VvbV9iYXIoYWVzKGVwbCksIHdpZHRoID0gMC4xLCBmaWxsID0gIiMxMTJDRUUiLCBzaG93LmxlZ2VuZCA9IEYpKw0KICBsYWJzKHg9ICJlcGwgSW5zdHJ1bWVudCIsIHk9IkNvdW50Iix0aXRsZSA9ICJGaWd1cmUgNjogRW1wbG95bWVudCBQcm90ZWN0aW9uIExlZ2lzbGF0aW9uLCBvY2N1cmVuY2Ugb2YgbGV2ZWxzIiwgY2FwdGlvbiA9ICJOPTM1NyIpDQp3c2NfYmFyIDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9iYXIoYWVzKHdzYyksIGZpbGwgPSAiIzExMkNFRSIsIHNob3cubGVnZW5kID0gRikrDQogIGxhYnMoeD0id3NjIEluc3RydW1lbnQiLCB5PSJDb3VudCIsIHRpdGxlID0gIkZpZ3VyZSA3OiBXYWdlIFNldHRpbmcgQ29vcmRpbmF0aW9uLCBvY2N1cmVuY2Ugb2YgdHlwZSIsIGNhcHRpb24gPSAiTj0zNTciKQ0KDQplcGxfYmFyO3dzY19iYXINCg0KYGBgDQoNCg0KIyMjIEZpZ3VyZXMgOC0xNDogRmFjZXQgV3JhcHBlZCBDaGFydHMgZm9yIHBhcGVyDQoqIGNoZWNrIGZpZ3VyZSBudW1iZXJzDQpgYGB7ciBGYWNldCB3cmFwcGVkIGNoYXJ0c30NCiNGYWNldCBjaGFydHMNCiNodXIgdnMgdGF4Y29ycCBieSB5ZWFyDQpGVzEgPC0gZ2dwbG90KGRhdGE9WDIpKw0KICBnZW9tX3BvaW50KG1hcHBpbmc9YWVzKHg9dGF4Y29ycCx5PWh1ciksIGNvbG9yID0gIiNFRUQzMTEiICkgKyANCiAgZ2VvbV9zbW9vdGgobWFwcGluZz1hZXMoeD10YXhjb3JwLHk9aHVyKSwgbWV0aG9kID0gbG0sIHNlPUYsIGNvbG9yID0gIiMxMTJDRUUiKSsNCiAgZmFjZXRfd3JhcCh+dGltZTEpICsgbGFicyh4ID0gInRheGNvcnAiLCB5PSJodXIiLCB0aXRsZSA9ICJGaWd1cmUgODogaHVyIHZzIHRheGNvcnAgdGltZSBmYWN0b3IiKQ0KRlcxMSA8LSBnZ3Bsb3QoZGF0YT1YMikrDQogIGdlb21fcG9pbnQobWFwcGluZz1hZXMoeD10YXhjb3JwLHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIgKSArIA0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PXRheGNvcnAseT1odXIpLCBtZXRob2QgPSBsbSwgc2U9RiwgY29sb3IgPSAiIzExMkNFRSIpKw0KICBmYWNldF93cmFwKH5sb2NhdGlvbjEpICsgbGFicyh4ID0gInRheGNvcnAiLCB5PSJodXIiLCB0aXRsZSA9ICJGaWd1cmUgODogaHVyIHZzIHRheGNvcnAgbG9jYXRpb24gZmFjdG9yIikNCg0KI2h1ciB2cyB1ZA0KRlcyIDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9wb2ludChtYXBwaW5nPWFlcyh4PXVkLHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIpKw0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PXVkLHk9aHVyKSwgbWV0aG9kID0gbG0sIHNlPUYsIGNvbG9yID0gIiMxMTJDRUUiKSsNCiAgZmFjZXRfd3JhcCh+dGltZTEpKyBsYWJzKHggPSAidWQiLCB5PSJodXIiLCB0aXRsZSA9ICJGaWd1cmUgOTogaHVyIHZzIHVkIHRpbWUgZmFjdG9yIikNCkZXMjEgPC0gZ2dwbG90KGRhdGE9WDIpKw0KICBnZW9tX3BvaW50KG1hcHBpbmc9YWVzKHg9dWQseT1odXIpLCBjb2xvciA9ICIjRUVEMzExIikrDQogIGdlb21fc21vb3RoKG1hcHBpbmc9YWVzKHg9dWQseT1odXIpLCBtZXRob2QgPSBsbSwgc2U9RiwgY29sb3IgPSAiIzExMkNFRSIpKw0KICBmYWNldF93cmFwKH5sb2NhdGlvbjEpKyBsYWJzKHggPSAidWQiLCB5PSJodXIiLCB0aXRsZSA9ICJGaWd1cmUgOTogaHVyIHZzIHVkIGxvY2F0aW9uIGZhY3RvciIpDQoNCiNodXIgdnMgY2JjDQpGVzMgPC0gZ2dwbG90KGRhdGE9WDIpKw0KICBnZW9tX3BvaW50KG1hcHBpbmc9YWVzKHg9Y2JjLHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIpKw0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PWNiYyx5PWh1ciksIG1ldGhvZCA9IGxtLCBzZT1GLCBjb2xvciA9ICIjMTEyQ0VFIikrDQogIGZhY2V0X3dyYXAofnRpbWUxKSsgbGFicyh4ID0gImNiYyIsIHk9Imh1ciIsIHRpdGxlID0gIkZpZ3VyZSAxMDogaHVyIHZzIGNiYyB0aW1lIGZhY3RvciIpDQpGVzMxIDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9wb2ludChtYXBwaW5nPWFlcyh4PWNiYyx5PWh1ciksIGNvbG9yID0gIiNFRUQzMTEiKSsNCiAgZ2VvbV9zbW9vdGgobWFwcGluZz1hZXMoeD1jYmMseT1odXIpLCBtZXRob2QgPSBsbSwgc2U9RiwgY29sb3IgPSAiIzExMkNFRSIpKw0KICBmYWNldF93cmFwKH5sb2NhdGlvbjEpKyBsYWJzKHggPSAiY2JjIiwgeT0iaHVyIiwgdGl0bGUgPSAiRmlndXJlIDEwOiBodXIgdnMgY2JjIGxvY2F0aW9uIGZhY3RvciIpDQoNCiNodXIgdnMgYnJyDQpGVzQgPC0gZ2dwbG90KGRhdGE9WDIpKw0KICBnZW9tX3BvaW50KG1hcHBpbmc9YWVzKHg9YnJyMXkseT1odXIpLCBjb2xvciA9ICIjRUVEMzExIikrDQogIGdlb21fc21vb3RoKG1hcHBpbmc9YWVzKHg9YnJyMXkseT1odXIpLCBtZXRob2QgPSBsbSwgc2U9RiwgY29sb3IgPSAiIzExMkNFRSIpKw0KICBmYWNldF93cmFwKH50aW1lMSkrIGxhYnMoeCA9ICJicnIiLCB5PSJodXIiLCB0aXRsZSA9ICJGaWd1cmUgMTE6IGh1ciB2cyBicnIxeSB0aW1lIGZhY3RvciIpDQpGVzQxIDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9wb2ludChtYXBwaW5nPWFlcyh4PWJycjF5LHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIpKw0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PWJycjF5LHk9aHVyKSwgbWV0aG9kID0gbG0sIHNlPUYsIGNvbG9yID0gIiMxMTJDRUUiKSsNCiAgZmFjZXRfd3JhcCh+bG9jYXRpb24xKSsgbGFicyh4ID0gImJyciIsIHk9Imh1ciIsIHRpdGxlID0gIkZpZ3VyZSAxMTogaHVyIHZzIGJycjF5IGxvY2F0aW9uIGZhY3RvciIpDQoNCiNodXIgdnMgcHNsbQ0KRlc1IDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9wb2ludChtYXBwaW5nPSBhZXMoeD1wc2xtLHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIpKw0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PXBzbG0sIHk9aHVyKSwgbWV0aG9kID0gbG0sIHNlPUYsIGNvbG9yID0gIiMxMTJDRUUiKSsNCiAgZmFjZXRfd3JhcCh+dGltZTEpKyBsYWJzKHg9InBzbG0iLCB5PSJodXIiLCB0aXRsZSA9ICJGaWd1cmUgMTI6IHVyIHZzIHBzbG0gdGltZSBmYWN0b3IiKQ0KRlc1MSA8LSBnZ3Bsb3QoZGF0YT1YMikrDQogIGdlb21fcG9pbnQobWFwcGluZz0gYWVzKHg9cHNsbSx5PWh1ciksIGNvbG9yID0gIiNFRUQzMTEiKSsNCiAgZ2VvbV9zbW9vdGgobWFwcGluZz1hZXMoeD1wc2xtLCB5PWh1ciksIG1ldGhvZCA9IGxtLCBzZT1GLCBjb2xvciA9ICIjMTEyQ0VFIikrDQogIGZhY2V0X3dyYXAofmxvY2F0aW9uMSkrIGxhYnMoeD0icHNsbSIsIHk9Imh1ciIsIHRpdGxlID0gIkZpZ3VyZSAxMjogdXIgdnMgcHNsbSBsb2NhdGlvbiBmYWN0b3IiKQ0KDQoNCiNodXIgdnMgdHRyDQpGVzcgPC0gZ2dwbG90KGRhdGE9WDIpKw0KICBnZW9tX3BvaW50KG1hcHBpbmc9YWVzKHg9dHRyLHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIpKw0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PXR0cix5PWh1ciksIG1ldGhvZCA9IGxtLCBzZT1GLCBjb2xvciA9ICIjMTEyQ0VFIikrDQogIGZhY2V0X3dyYXAofnRpbWUxKSsgbGFicyh4ID0gInR0ciIsIHk9Imh1ciIsIHRpdGxlID0gIkZpZ3VyZSAxMzogaHVyIHZzIHR0ciB0aW1lIGZhY3RvciIpDQpGVzcxIDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9wb2ludChtYXBwaW5nPWFlcyh4PXR0cix5PWh1ciksIGNvbG9yID0gIiNFRUQzMTEiKSsNCiAgZ2VvbV9zbW9vdGgobWFwcGluZz1hZXMoeD10dHIseT1odXIpLCBtZXRob2QgPSBsbSwgc2U9RiwgY29sb3IgPSAiIzExMkNFRSIpKw0KICBmYWNldF93cmFwKH5sb2NhdGlvbjEpKyBsYWJzKHggPSAidHRyIiwgeT0iaHVyIiwgdGl0bGUgPSAiRmlndXJlIDEzOiBodXIgdnMgdHRyIGxvY2F0aW9uIGZhY3RvciIpDQoNCiNodXIgdnMgZGVsdGFfaQ0KRlc4IDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9wb2ludChtYXBwaW5nPWFlcyh4PWluZl9nZHBkLHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIpKw0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PWluZl9nZHBkLHk9aHVyKSwgbWV0aG9kID0gbG0sIHNlPUYsIGNvbG9yID0gIiMxMTJDRUUiKSsNCiAgZmFjZXRfd3JhcCh+dGltZTEpKyBsYWJzKHggPSAiaW5mX2dkcGQiLCB5PSJodXIiLCB0aXRsZSA9ICJGaWd1cmUgMTQ6IGh1ciB2cyBpbmZfZ2RwZCB0aW1lIGZhY3RvciIpDQpGVzgxIDwtIGdncGxvdChkYXRhPVgyKSsNCiAgZ2VvbV9wb2ludChtYXBwaW5nPWFlcyh4PWluZl9nZHBkLHk9aHVyKSwgY29sb3IgPSAiI0VFRDMxMSIpKw0KICBnZW9tX3Ntb290aChtYXBwaW5nPWFlcyh4PWluZl9nZHBkLHk9aHVyKSwgbWV0aG9kID0gbG0sIHNlPUYsIGNvbG9yID0gIiMxMTJDRUUiKSsNCiAgZmFjZXRfd3JhcCh+bG9jYXRpb24xKSsgbGFicyh4ID0gImluZl9nZHBkIiwgeT0iaHVyIiwgdGl0bGUgPSAiRmlndXJlIDE0OiBodXIgdnMgaW5mX2dkcGQgbG9jYXRpb24gZmFjdG9yIikNCg0KRlcxOyBGVzExO0ZXMjtGVzIxO0ZXMztGVzMxO0ZXNDtGVzQxO0ZXNTtGVzUxO0ZXNztGVzcxO0ZXODtGVzgxDQpgYGANCiMjIERhdGEgQW5hbHlzaXMsIHdpdGggZXhwZXJpbWVudHMgYW5kIHRlc3RzDQoNCiogZGV0YWlscyBvZiB1c2Ugb2YgdGhlIHBsbSBwYWNrYWdlIGFyZSBmb3VuZCBoZXJlIDxodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvcGxtL3BsbS5wZGY+DQoqICJnZXR0aW5nIHN0YXJ0ZWQgaW4gRml4ZWQvUmFuZG9tIGVmZmVjdHMgbW9kZWxzIHVzaW5nIFIiDQo8aHR0cHM6Ly9yc3R1ZGlvLXB1YnMtc3RhdGljLnMzLmFtYXpvbmF3cy5jb20vMzcyNDkyXzNlMDVmMzhkZDNmMjQ4ZTg5Y2RlZGQzMTdkNjAzYjlhLmh0bWw+DQoNCmBgYHtyIERhdGEgQW5hbHlzaXMgd2l0aCB0ZXN0cyBhbmQgRXhwZXJpbWVudHN9DQojUF9kYXRhIGNyZWF0ZWQgaW4gc3RlcCAxDQojIEV4cGVyaW1lbnRzIHdpdGggbG0gYW5kIHBsbQ0KI09MUyBwZXIgImdldHRpbmcgc3RhcnRlZCINCiNyZXF1aXJlKGNhcikNCiMgb2xzIDwtIGxtKGh1cn50YXhjb3JwLCBkYXRhID0gUF9kYXRhKQ0KIyB5aGF0IDwtIG9scyRmaXR0ZWQNCiMgUGxvdDEgPC0gZ2dwbG90KGRhdGE9UF9kYXRhLCBhZXMoeD10YXhjb3JwKSkrDQojICAgZ2VvbV9wb2ludChtYXBwaW5nPWFlcyh4PXRheGNvcnAseT1odXIpLCBjb2xvciA9ICIjRUVEMzExIiApICsgDQojICAgZ2VvbV9zbW9vdGgobWFwcGluZz1hZXMoeD10YXhjb3JwLHk9aHVyKSwgbWV0aG9kID0gbG0sIHNlPUYsIGNvbG9yID0gIiMxMTJDRUUiKQ0KIyBmaXhlZC5kdW0gPC0gbG0oaHVyfnRheGNvcnAgKyBmYWN0b3IobG9jYXRpb24xKS0xLCBkYXRhPVBfZGF0YSkNCiMgeWhhdDEgPC0gZml4ZWQuZHVtJGZpdHRlZA0KIyBQbG90MiA8LSBzcCh5aGF0MX5QX2RhdGEkdGF4Y29ycHxQX2RhdGEkbG9jYXRpb24xLCB4bGFiPSJ0YXhjb3JwIiwgeWxhYj15aGF0LA0KIyAgICAgICAgICAgIGJveHBsb3Q9Riwgc21vb3RoPUYpDQoNCiMgUGxvdDMgPC0gc2NhdHRlcnBsb3QoZGF0YT1QX2RhdGEsaHVyfnRpbWUxfGxvY2F0aW9uMSkNCiNPTFMgd2l0aCBMTSwgbm8gaW5zdHJ1bWVudHMgZnJvbSBYMg0KUmVnMDEgPC0gbG0oaHVyfnRheGNvcnAgKyB1ZCArIGNiYyArIGJycjF5ICsgcHNsbSArdHRyICsgaW5mX2dkcGQsIGRhdGE9WDIpDQojT0xTIHdpdGggcGxtLCBubyBpbnN0cnVtZW50cyBmcm9tIFBfZGF0YQ0KUmVnMDIgPC0gcGxtKGh1cn50YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHBzbG0gKyB0dHIgKyBpbmZfZ2RwZCwgZGF0YT1QX2RhdGEpDQojT0xTIHdpdGggbG0sIGluc3RydW1lbnRzLCBmcm9tIFBfZGF0YSAtIGluY2x1ZGUgYXMgYmFzZWxpbmUNClJlZzAzIDwtIGxtKGh1cn50YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHBzbG0gK3dzYyArZXBsICt0dHIgKyBpbmZfZ2RwZCwgZGF0YT1QX2RhdGEpDQojT0xTIHdpdGggcGxtLCBpbnN0cnVtZW50cyBmcm9tIFBfZGF0YQ0KUmVnMDQgPC0gcGxtKGh1cn50YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHBzbG0gK3dzYyArZXBsICt0dHIgKyBpbmZfZ2RwZCwgZGF0YT1QX2RhdGEpDQojUG9vbGVkLCBwcmVmZXJyZWQgbW9kZWwgKGNsZWFuKQ0KUDJTTFMgPC0gcGxtKGh1ciB+IHRheGNvcnAgKyB1ZCArIGNiYyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQgKyBwc2xtDQogICAgICAgICAgICAgICAgfC4tdGF4Y29ycCArIGVwbCArIHdzYywgDQogICAgICAgICAgICAgICAgZGF0YSA9IFBfZGF0YSwgbW9kZWwgPSAicG9vbGluZyIpDQojUG9vbGVkIEV4cGVyaW1lbnQsIHZlcmlmaWVkIGFsbCB0aGUgc2FtZSBhcyBQMlNMUw0KUDJTTFNfMSA8LSBwbG0oaHVyIH4gdGF4Y29ycCArIHVkICsgY2JjICsgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArIHBzbG0NCiAgICAgICAgICAgICAgICAgfC4gLXRheGNvcnAgKyBlcGwgKyB3c2MsIA0KICAgICAgICAgICAgICAgICBkYXRhID0gWDIsIG1vZGVsID0gInBvb2xpbmciKQ0KUDJTTFNfMiA8LSBwbG0oaHVyIH4gdGF4Y29ycCArIHVkICsgY2JjICsgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArIHBzbG0NCiAgICAgICAgICAgICAgICAgfCArIHVkICsgY2JjICsgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArIHBzbG0gKyBlcGwgKyB3c2MsIA0KICAgICAgICAgICAgICAgICBkYXRhID0gUF9kYXRhLCBtb2RlbCA9ICJwb29saW5nIikNCiNCZXR3ZWVuIGVzdGltYXRvciANCkIyU0xTIDwtIHVwZGF0ZShQMlNMUywgbW9kZWw9ImJldHdlZW4iKSAjdGhpcyBpcyBiYWQNCiNGRSBvciB3aXRoaW4gZXN0aW1hdG9yDQpGRTJTTFMgPC0gdXBkYXRlKFAyU0xTLCBtb2RlbD0id2l0aGluIikNCiNSYW5kb20gZXN0aW1hdG9yDQpSRTJTTFMgPC0gdXBkYXRlKFAyU0xTLCBtb2RlbD0icmFuZG9tIikNCiNDaGVjayBvdXRwdXQgLSBsb29rcyBiYWQgbG9sDQojIHN0YXJnYXplcihSZWcwMSxSZWcwMixSZWcwMyxSZWcwNCxQMlNMUyxCMlNMUywgdHlwZSA9ICJ0ZXh0IikNCg0KDQojVGltZSBGaXhlZCBFZmZlY3RzIGFuZCBleHBlcmltZW50cw0KI09yaWdpbmFsIEZvcm0gLSBiZXN0IGZpdCBtb2RlbA0KRkUyU0xTX1QgPC0gcGxtKGh1ciB+IHRheGNvcnAgKyB1ZCArIGNiYyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQgK3BzbG0NCiAgICAgICAgICAgICAgICArZmFjdG9yKHRpbWUxKQ0KICAgICAgICAgICAgICAgIHwuIC10YXhjb3JwICsgZXBsICsgd3NjLCANCiAgICAgICAgICAgICAgICBkYXRhID0gUF9kYXRhLCBtb2RlbCA9ICJ3aXRoaW4iKQ0KI2FkZGVkICJ0aW1lIiBlZmZlY3QgdG8gYXJndW1lbnRzDQpGRTJTTFNfVDEgPC0gcGxtKGh1ciB+IHRheGNvcnAgKyB1ZCArIGNiYyArIGJycjF5ICsgdHRyICsgaW5mX2dkcGQgK3BzbG0NCiAgICAgICAgICAgICAgICArZmFjdG9yKHRpbWUxKQ0KICAgICAgICAgICAgICAgIHwuIC10YXhjb3JwICsgZXBsICsgd3NjLCANCiAgICAgICAgICAgICAgICBkYXRhID0gUF9kYXRhLCBtb2RlbCA9ICJ3aXRoaW4iLCBlZmZlY3QgPSAidGltZSIpDQojU3RyZWFtbGluZWQNClRGRTJTTFMxIDwtIHVwZGF0ZShQMlNMUywgbW9kZWw9IndpdGhpbiIsIGVmZmVjdCA9ICJ0aW1lIikNCg0KI2NoZWNrIG91dHB1dA0KI3N0YXJnYXplcihGRTJTTFNfVCxGRTJTTFNfVDEsVEZFMlNMUzEsIHR5cGUgPSAidGV4dCIpDQoNCiNJbmRpdmlkdWFsIEZFIGFuZCBFeHBlcmltZW50cw0KI09yaWdpbmFsIG1vZGVsIC0gYWxsIGFyZSBleGFjdCBzYW1lDQpGRTJTTFNfTCA8LSBwbG0oaHVyIH4gdGF4Y29ycCArIHVkICsgY2JjICsgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArIHBzbG0NCiAgICAgICAgICAgICAgICArZmFjdG9yKGxvY2F0aW9uMSkNCiAgICAgICAgICAgICAgICB8LiAtdGF4Y29ycCArIGVwbCArIHdzYywgDQogICAgICAgICAgICAgICAgZGF0YSA9IFBfZGF0YSwgbW9kZWwgPSAid2l0aGluIikNCiMgYWRkZWQgImluZGl2aWR1YWwiIGVmZmVjdCB0byBhcmd1bWVudHMgLSBzcGVjaWZ5aW5nIGVmZmVjdCBwcmV2ZW50cyBzYW1lIHJlc3VsdHMgYXNfVEwgcmVncw0KRkUyU0xTX0wxIDwtIHBsbShodXIgfiB0YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHR0ciArIGluZl9nZHBkICsgcHNsbQ0KICAgICAgICAgICAgICAgICtmYWN0b3IobG9jYXRpb24xKQ0KICAgICAgICAgICAgICAgIHwuIC10YXhjb3JwICsgZXBsICsgd3NjLCANCiAgICAgICAgICAgICAgICBkYXRhID0gUF9kYXRhLCBtb2RlbCA9ICJ3aXRoaW4iLCBlZmZlY3QgPSAiaW5kaXZpZHVhbCIpDQojIHN0cmVhbWxpbmVkLCB5ZXMgc2FtZSBhcyBhYm92ZQ0KRkUyU0xTX0wyIDwtIHVwZGF0ZShQMlNMUywgbW9kZWw9IndpdGhpbiIsIGVmZmVjdD0iaW5kaXZpZHVhbCIpDQojY2hlY2sgb3V0cHV0DQojc3RhcmdhemVyKEZFMlNMU19MLCBGRTJTTFNfTDEsIEZFMlNMU19MMiwgdHlwZSA9ICJ0ZXh0IikNCg0KI1RpbWUgYW5kIEluZGl2aWR1YWwgRkUNCiNPcmlnaW5hbCBtb2RlbA0KRkUyU0xTX1RMIDwtIHBsbShodXIgfiB0YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHR0ciArIGluZl9nZHBkICsgcHNsbQ0KICAgICAgICAgICAgICAgICArZmFjdG9yKHRpbWUxKSArZmFjdG9yKGxvY2F0aW9uMSkNCiAgICAgICAgICAgICAgICAgfC4gLXRheGNvcnAgKyBlcGwgKyB3c2MsIA0KICAgICAgICAgICAgICAgICBkYXRhID0gUF9kYXRhLCBtb2RlbCA9ICJ3aXRoaW4iLCBlZmZlY3QgPSAidHdvd2F5cyIpDQojIHJlbW92ZWQgdHdvd2F5cyBlZmZlY3QgZnJvbSBhcmd1bWVudCAtIGJlc3QgZml0DQpGRTJTTFNfVEwxIDwtIHBsbShodXIgfiB0YXhjb3JwICsgdWQgKyBjYmMgKyBicnIxeSArIHR0ciArIGluZl9nZHBkICsgcHNsbQ0KICAgICAgICAgICAgICAgICArZmFjdG9yKHRpbWUxKSArZmFjdG9yKGxvY2F0aW9uMSkNCiAgICAgICAgICAgICAgICAgfC4gLXRheGNvcnAgKyBlcGwgKyB3c2MsIA0KICAgICAgICAgICAgICAgICBkYXRhID0gUF9kYXRhLCBtb2RlbCA9ICJ3aXRoaW4iKQ0KI3N0cmVhbWxpbmVkMSwgYWRkZWQgYmFjayBlZmZlY3QNCkZFMlNMU19UTDIgPC0gdXBkYXRlKFAyU0xTLCBtb2RlbD0id2l0aGluIiwgZWZmZWN0PSJ0d293YXlzIikNCiNzdHJlYW1saW5lZDIsIHJlbW92ZWQgZWZmZWN0IGZyb20gdXBkYXRlIA0KRkUyU0xTX1RMMyA8LSB1cGRhdGUoUDJTTFMsIG1vZGVsPSJ3aXRoaW4iKQ0KI2NoZWNrIG91dHB1dA0KI3N0YXJnYXplcihGRTJTTFNfVEwsIEZFMlNMU19UTDEsIEZFMlNMU19UTDIsIEZFMlNMU19UTDMsIHR5cGUgPSAidGV4dCIpDQoNCiNMTSBmb3IgcmFuZG9tIGVmZmVjdHMgdnMgT0xTDQpQWDEgPC0gcGxtdGVzdChQMlNMUykNCiMjQlAgTE0gZm9yIHJhbmRvbSBlZmZlY3RzLCBudWxsIGlzIG5vIHBhbmVsIGVmZmVjdCwgaW5jbHVkZQ0KUFgxMSA8LSBwbG10ZXN0KFAyU0xTLCB0eXBlPWMoImJwIikpDQoNCiMgVGVzdGluZyB0aW1lLWZpeGVkIGVmZmVjdHMsIG51bGwgaXMgbm8gRlRFDQpQWDEyIDwtIHBsbXRlc3QoRkUyU0xTLCBjKCJ0aW1lIiksIHR5cGU9YygiYnAiKSkNCg0KI0xNIGZvciBmaXhlZCBlZmZlY3RzIHZzIE9MUywgZ2VuZXJpYyANClBYMiA8LSBwRnRlc3QoRkUyU0xTLFAyU0xTKQ0KI0xNIGZvciBmaXhlZCBlZmZlY3RzdyB2cyBPTFMsIFRpbWUgc3BlY2lmaWMNClBYMjEgPC0gcEZ0ZXN0KFRGRTJTTFMxLCBGRTJTTFMpDQojaGF1c21hbiB0ZXN0IGZvciBmaXhlZCB2cyByYW5kb20gZWZmZWN0cywgbnVsbD1yYW5kb20gcHJlZmVycmVkDQpQWDYgPC0gcGh0ZXN0KFJFMlNMUyxGRTJTTFMpDQoNCiNDcm9zcyBzZWN0aW9uYWwgZGVwZW5kYW5jZSwgbnVsbCBpcyB0aGF0IHJlc2lkdWFscyBhY3Jvc3MgZW50aXRpZXMgYXJlIG5vdA0KI2NvcnJlbGF0ZWQuIFVzZWQgdG8gdGVzdCB3aGV0aGVyIHJlc2lkdWFscyBhcmUgY29ycmVsYXRlZCBhY3Jvc3MgZW50aXRpZXMuIENTIGRlcCANCiNjYW4gbGVhZCB0byBiaWFzIGluIHRlc3QgcmVzdWx0cw0KI0JQTE0gZm9yIGNyb3NzIHNlY3Rpb25hbCBkZXBlbmRlbmNlIGluIHBhbmVscw0KUFg3IDwtIHBjZHRlc3QoRkUyU0xTLCB0ZXN0PWMoImxtIikpDQojIFBlc2FyYW4gY3Jvc3Mgc2VjdGlvbmFsIGRlcGVuZGVuY2UNClBYNzEgPC0gcGNkdGVzdChGRTJTTFMsIHRlc3Q9YygiY2QiKSkNCg0KIyBCcmV1c2NoIEdvZGZyZXkgZm9yIFNDIGluIHBhbmVscy4gTnVsbCBpcyBubyBTQy4gTWF5IG5vdCBtYXR0ZXIgYXMgYSByZWxhdGl2aWx5IA0KIyBzaG9ydCBzdHVkeSBwZXJpb2QgVD0xOQ0KUFg4IDwtIHBiZ3Rlc3QoRkUyU0xTKQ0KI0FERiBmb3Igc3RvY2hhc3RpYyB0cmVuZHMsIE51bGwtIHNlcmllcyBoYXMgdW5pdCByb290Lg0KcmVxdWlyZSh0c2VyaWVzKQ0KUFg5IDwtIGFkZi50ZXN0KFBfZGF0YSRodXIsIGs9MikNCiNCUCBudWxsIGlzIGhvbW9za2VkYXN0aWNpdHksIGFsdGVybmF0aXZlOiBoZXRlcm9za2FkYXN0aWNpdHkNClBYMCA8LSBicHRlc3QoaHVyIH4gdGF4Y29ycCArIHVkICsgY2JjICsgYnJyMXkgKyB0dHIgKyBpbmZfZ2RwZCArIHBzbG0NCiAgICAgICAgICAgICAgICArZmFjdG9yKGxvY2F0aW9uMSksIGRhdGE9UF9kYXRhLCBzdHVkZW50aXplID0gRikNCg0KUFgxMTtQWDI7UFg2O1BYNztQWDcxO1BYODtQWDk7UFgwDQpgYGANCg0KDQojIyMgRmluYWwgT3V0cHV0IFRhYmxlIDMNCipOT1RFOiB0aGUgcCB2YWx1ZXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUgaGF2ZSB0byBiZSBmaXhlZCBpbiB0aGUgb3V0cHV0IGRvY3VtZW50LCB3aXRoIGNvZGUgKHRvIGNvcHlwYXN0YSk6IA0KPHNwYW4+JiM0Mjs8L3NwYW4+IHRvIHJlcGxhY2UgYXN0ZXJpc2tzIHRoYXQgY2F1c2UgYm9sZGluZw0KYGBge3IgUmVncmVzc2lvbiBPdXRwdXR9DQpGT3V0cHV0IDwtIHN0YXJnYXplcihSZWcwMywgUDJTTFMsICBGRTJTTFNfVDEsIEZFMlNMU19MMSwgIEZFMlNMU19UTCwgUkUyU0xTLA0KICAgICAgICAgIHR5cGUgPSAiaHRtbCIsIHRpdGxlID0gIlRhYmxlIDM6IFJlZ3Jlc3Npb25zIHRvIEV4cGxhaW4gdGhlIFVuZW1wbG95bWVudCBSYXRlIiwgDQogICAgICAgICAgbW9kZWwubmFtZXMgPSBGLA0KICAgICAgICAgIGtlZXAgPSBjKCJ0YXhjb3JwIiwgInVkIiwiY2JjIiwiYnJyMXkiLCAidHRyIiwiaW5mX2dkcGQiLCAiaHVyIiwgInBzbG0iLCAiZXBsIiwid3NjIiwgIkNvbnN0YW50IiksDQogICAgICAgICAgY29sdW1uLmxhYmVscyA9IGMoIk9MUyIsICIyU0xTIFBvb2xlZCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyU0xTIFRpbWUgRml4ZWQgRWZmZWN0cyIsICIyU0xTIEluZGl2aWR1YWwgRml4ZWQgRWZmZWN0cyIsICIyU0xTIFRpbWUgYW5kIEluZGl2aWR1YWwgRml4ZWQgRWZmZWN0cyIsICIyU0xTIFJhbmRvbSBFZmZlY3RzIikNCiAgICAgICAgICApDQojIHJ1biBpbiBjb25zb2xlLCBpdCdzIG1lc3N5DQpgYGANCjx0YWJsZSBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxjYXB0aW9uPjxzdHJvbmc+VGFibGUgMzogUmVncmVzc2lvbnMgdG8gRXhwbGFpbiB0aGUgVW5lbXBsb3ltZW50IFJhdGU8L3N0cm9uZz48L2NhcHRpb24+DQo8dHI+PHRkIGNvbHNwYW49IjciIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2siPjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkIGNvbHNwYW49IjYiPjxlbT5EZXBlbmRlbnQgdmFyaWFibGU6PC9lbT48L3RkPjwvdHI+DQo8dHI+PHRkPjwvdGQ+PHRkIGNvbHNwYW49IjYiIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2siPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQgY29sc3Bhbj0iNiI+aHVyPC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48L3RkPjx0ZD5PTFM8L3RkPjx0ZD4yU0xTIFBvb2xlZDwvdGQ+PHRkPjJTTFMgVGltZSBGaXhlZCBFZmZlY3RzPC90ZD48dGQ+MlNMUyBJbmRpdmlkdWFsIEZpeGVkIEVmZmVjdHM8L3RkPjx0ZD4yU0xTIFRpbWUgYW5kIEluZGl2aWR1YWwgRml4ZWQgRWZmZWN0czwvdGQ+PHRkPjJTTFMgUmFuZG9tIEVmZmVjdHM8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPigxKTwvdGQ+PHRkPigyKTwvdGQ+PHRkPigzKTwvdGQ+PHRkPig0KTwvdGQ+PHRkPig1KTwvdGQ+PHRkPig2KTwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bhbj0iNyIgc3R5bGU9ImJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjayI+PC90ZD48L3RyPjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+dGF4Y29ycDwvdGQ+PHRkPi0wLjUwMTxzdXA+KioqPC9zdXA+PC90ZD48dGQ+LTEyLjkwNDwvdGQ+PHRkPi0zLjI2NzwvdGQ+PHRkPi0zLjc1MjxzdXA+Kjwvc3VwPjwvdGQ+PHRkPi0xLjk5MjwvdGQ+PHRkPi0zLjIwODwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQ+KDAuMTM0KTwvdGQ+PHRkPigxNC41MTYpPC90ZD48dGQ+KDQuMDg4KTwvdGQ+PHRkPigyLjAyNik8L3RkPjx0ZD4oMS45MzApPC90ZD48dGQ+KDIuMjM4KTwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij51ZDwvdGQ+PHRkPi0wLjAwNDwvdGQ+PHRkPjAuMjYzPC90ZD48dGQ+MC4wMzM8L3RkPjx0ZD4wLjAxMTwvdGQ+PHRkPjAuMTE5PC90ZD48dGQ+LTAuMDAxPC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48L3RkPjx0ZD4oMC4wMTQpPC90ZD48dGQ+KDAuMzUxKTwvdGQ+PHRkPigwLjEwMik8L3RkPjx0ZD4oMC4wNjgpPC90ZD48dGQ+KDAuMTI5KTwvdGQ+PHRkPigwLjA1Mik8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+Y2JjPC90ZD48dGQ+MC4wNDI8c3VwPioqKjwvc3VwPjwvdGQ+PHRkPjAuMTU4PC90ZD48dGQ+MC4wNTQ8L3RkPjx0ZD4wLjA1NzwvdGQ+PHRkPjAuMDc1PHN1cD4qKjwvc3VwPjwvdGQ+PHRkPi0wLjAwMjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQ+KDAuMDExKTwvdGQ+PHRkPigwLjE2MCk8L3RkPjx0ZD4oMC4wNDQpPC90ZD48dGQ+KDAuMDQ5KTwvdGQ+PHRkPigwLjAzNyk8L3RkPjx0ZD4oMC4wMzgpPC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPmJycjF5PC90ZD48dGQ+LTAuMDA2PC90ZD48dGQ+MC4yNDY8L3RkPjx0ZD4wLjAzODwvdGQ+PHRkPjAuMDM5PHN1cD4qKjwvc3VwPjwvdGQ+PHRkPjAuMDM2PHN1cD4qKio8L3N1cD48L3RkPjx0ZD4wLjAzOTxzdXA+KioqPC9zdXA+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48L3RkPjx0ZD4oMC4wMTApPC90ZD48dGQ+KDAuMzIxKTwvdGQ+PHRkPigwLjA5MSk8L3RkPjx0ZD4oMC4wMTYpPC90ZD48dGQ+KDAuMDEzKTwvdGQ+PHRkPigwLjAxNCk8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+cHNsbTwvdGQ+PHRkPjEuNzI3PHN1cD4qKio8L3N1cD48L3RkPjx0ZD4tOS45MzQ8L3RkPjx0ZD4tMC44ODU8L3RkPjx0ZD4xLjQ1NzxzdXA+Kjwvc3VwPjwvdGQ+PHRkPjIuMTgwPHN1cD4qKio8L3N1cD48L3RkPjx0ZD4xLjYzNzxzdXA+Kio8L3N1cD48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPigwLjMyMCk8L3RkPjx0ZD4oMTMuNjY2KTwvdGQ+PHRkPigzLjcyNSk8L3RkPjx0ZD4oMC43NzkpPC90ZD48dGQ+KDAuNTU4KTwvdGQ+PHRkPigwLjgyNSk8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+d3NjPC90ZD48dGQ+LTEuMzA2PHN1cD4qKio8L3N1cD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPigwLjE3NCk8L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+ZXBsPC90ZD48dGQ+MC41NDM8c3VwPioqKjwvc3VwPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQ+KDAuMjAyKTwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij50dHI8L3RkPjx0ZD4tMC4xMzc8c3VwPioqKjwvc3VwPjwvdGQ+PHRkPi0wLjcwMDwvdGQ+PHRkPi0wLjI2MDwvdGQ+PHRkPjAuNTE4PC90ZD48dGQ+MC4yMjA8L3RkPjx0ZD4wLjMyMjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQ+KDAuMDQ4KTwvdGQ+PHRkPigwLjcwNCk8L3RkPjx0ZD4oMC4yMjkpPC90ZD48dGQ+KDAuMzQzKTwvdGQ+PHRkPigwLjM1Nik8L3RkPjx0ZD4oMC4zMzEpPC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPmluZl9nZHBkPC90ZD48dGQ+LTAuMjA3PHN1cD4qKjwvc3VwPjwvdGQ+PHRkPjIuMDc4PC90ZD48dGQ+MC41MjY8L3RkPjx0ZD4wLjE1NjwvdGQ+PHRkPjAuMDE5PC90ZD48dGQ+MC4xMjM8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPigwLjEwMik8L3RkPjx0ZD4oMi40NjEpPC90ZD48dGQ+KDAuNjQ5KTwvdGQ+PHRkPigwLjI3OSk8L3RkPjx0ZD4oMC4xOTgpPC90ZD48dGQ+KDAuMzA0KTwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij5Db25zdGFudDwvdGQ+PHRkPjExLjgxODxzdXA+KioqPC9zdXA+PC90ZD48dGQ+NTMuOTMwPC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+Mi4xMzU8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPigxLjMwOSk8L3RkPjx0ZD4oNTAuMDEzKTwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPig0LjU5NSk8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bhbj0iNyIgc3R5bGU9ImJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjayI+PC90ZD48L3RyPjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+T2JzZXJ2YXRpb25zPC90ZD48dGQ+MzU3PC90ZD48dGQ+MzU3PC90ZD48dGQ+MzU3PC90ZD48dGQ+MzU3PC90ZD48dGQ+MzU3PC90ZD48dGQ+MzU3PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij5SPHN1cD4yPC9zdXA+PC90ZD48dGQ+MC4zNjc8L3RkPjx0ZD4wLjA0OTwvdGQ+PHRkPjAuMTAzPC90ZD48dGQ+MC4xODk8L3RkPjx0ZD4wLjI2NDwvdGQ+PHRkPjAuMjAyPC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij5BZGp1c3RlZCBSPHN1cD4yPC9zdXA+PC90ZD48dGQ+MC4zNTA8L3RkPjx0ZD4wLjAzMDwvdGQ+PHRkPjAuMDM1PC90ZD48dGQ+MC4wOTI8L3RkPjx0ZD4wLjEyNzwvdGQ+PHRkPjAuMTg2PC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij5SZXNpZHVhbCBTdGQuIEVycm9yPC90ZD48dGQ+Mi44ODEgKGRmID0gMzQ3KTwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+RiBTdGF0aXN0aWM8L3RkPjx0ZD4yMi4zMzg8c3VwPioqKjwvc3VwPiAoZGYgPSA5OyAzNDcpPC90ZD48dGQ+NS40Njk8L3RkPjx0ZD40My4yODU8c3VwPioqKjwvc3VwPjwvdGQ+PHRkPjk2LjcyNTxzdXA+KioqPC9zdXA+PC90ZD48dGQ+MTQ0LjkwOTxzdXA+KioqPC9zdXA+PC90ZD48dGQ+MTEzLjY0ODxzdXA+KioqPC9zdXA+PC90ZD48L3RyPg0KPHRyPjx0ZCBjb2xzcGFuPSI3IiBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrIj48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48ZW0+Tm90ZTo8L2VtPjwvdGQ+PHRkIGNvbHNwYW49IjYiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3VwPjxzcGFuPiYjNDI7PC9zcGFuPjwvc3VwPnA8MC4xOyA8c3VwPjxzcGFuPiYjNDI7PC9zcGFuPjxzcGFuPiYjNDI7PC9zcGFuPjwvc3VwPnA8MC4wNTsgPHN1cD48c3Bhbj4mIzQyOzwvc3Bhbj48c3Bhbj4mIzQyOzwvc3Bhbj48c3Bhbj4mIzQyOzwvc3Bhbj48L3N1cD5wPDAuMDE8L3RkPjwvdHI+DQo8L3RhYmxlPg==