1 Basic Descriptive Indicators

1.1 Graph Showing Countries Added Yearwise

The following graph shows how countries are being added every year with the progression in the dataset since the end of WWII

1.2 Proportion of Dynastic Countries Across Time (All Regime Types)

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast. Therefore a dynastic country i at point t will be a country whose leader is a dynast.

The first graph shows the proportion of dynastic countries at a given time over the years.

The second graph shows the proportion of dynastic countries at a given time over a period of 25-25-25 years.

1.3 Proportion of Dynastic Countries (Ruled by Dynastic Leaders) across regime/time by different Regions of the world

1.4 Table on the Proportion of Dynastic Leaders Over Time in a Region (Classified by Regime Type)

1.5 Proportion of Years Under Dynastic Rule by Democratic Regime Type (Presidential, Parliamentary, and Mixed Democratic)

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast. Therefore, dynastic rule will be years under a dynast.

These classifications are extended and replicated based on the regime types given in WhoGov Dataset (Nuffield Research Center which is based in turn on Cheibub et. al (2010))

Proportion of Years Under Dynastic Rule in Democratic Regimes
system_category year_bin Prop_Dyn_Years
Mixed Democratic 1945-1970 5.902778
Mixed Democratic 1970-1995 14.804159
Mixed Democratic 1995-2020 10.337995
Parliamentary Democracy 1945-1970 27.408962
Parliamentary Democracy 1970-1995 22.937322
Parliamentary Democracy 1995-2020 16.101495
Presidential Democracy 1945-1970 29.876087
Presidential Democracy 1970-1995 18.575780
Presidential Democracy 1995-2020 26.152900

1.6 Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Dictatorship/Democracy Status and System Category

## # A tibble: 2 × 4
##   dictatorship Prop_Dyn_Years Cummulative_Dyn_Years Dynastic_Rulers_percentage
##          <dbl>          <dbl>                 <dbl>                      <dbl>
## 1            0           21.5                  1078                       18.8
## 2            1           30.8                  1641                       24.1

1.7 Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Regime Type (System Category)

## # A tibble: 8 × 4
##   system_category    Prop_Dyn_Years Cummulative_Dyn_Years Dynastic_Rulers_perc…¹
##   <chr>                       <dbl>                 <dbl>                  <dbl>
## 1 ""                           23.6                    13                   6.35
## 2 "Civilian Dictato…           21.5                   590                  18.7 
## 3 "Military Dictato…           14.5                   257                  20.2 
## 4 "Mixed Democratic"           11.9                   146                  10.4 
## 5 "Parliamentary De…           21.3                   468                  19.5 
## 6 "Presidential Dem…           29.3                   451                  25.2 
## 7 "Royal Dictatorsh…           98.9                   794                  72.7 
## 8 "military Dictato…            0                       0                   0   
## # ℹ abbreviated name: ¹​Dynastic_Rulers_percentage

##Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Regime Change Binary

## # A tibble: 2 × 4
##   Regime_Change Prop_Dyn_Years Cummulative_Dyn_Years Dynastic_Rulers_percentage
##           <dbl>          <dbl>                 <dbl>                      <dbl>
## 1             0           28.5                  1472                       21.0
## 2             1           24.1                  1247                       20.4
##Country Count and dynastic information for Countries by Regime Change Status
Country Count for Countries that have/haven’t undergone Regime change
Regime_Change Number_Of_Countries
0 91
1 78

1.8 Country Count for Countries that have faced no regime change and have either remained Democracies or Dictatorships throughout and Dynastic Information

Country Count for Countries that have faced no regime change and have either remained Democracies or Dictatorships throughout
dictatorship Number_Of_Countries_With_No_RegChange
0 47
1 44

1.9 Countries that have had no regime change and have remained Democratic by democracy type

Percentage of years under Dynastic Rule in PURE Democracies by System Category
system_category Prop_Dyn_Years
Mixed Democratic 12.46291
Parliamentary Democracy 17.41505
Presidential Democracy 35.66667

1.10 Countries that have had no regime change and have remained dictatorship by dictatorship type

Percentage of years under Dynastic Rule in PURE Dictatorships by System Category
system_category Prop_Dyn_Years
Civilian Dictatorship 10.33275
Military Dictatorship 16.86747
Royal Dictatorship 99.44341

1.11 Country Count for number of Regime Transitions and Dynastic Information

Country Count for number of Regime Transitions
Num_Transitions Number_Countries
0 91
1 34
2 17
3 12
4 6
5 4
6 2
7 1
8 2
Percentage of years under Dynastic Rule by number of Regime Transitions
Num_Transitions Percentage_Dynastic_Years
1 23.28345
2 28.46088
3 28.34437
4 14.04959
5 12.95547
6 30.87248
7 10.66667
8 24.00000
Percentage of years under Dynastic Rule by One and Two or More transitions
Number_of_Transitions Percentage_Dynastic_Years
One Transition 23.28345
Two or More Transitions 24.74156
Percentage of Dynastic Leaders by One and Two or More transitions
Number_of_Transitions Dynastic_Rulers_percentage
One Transition 16.71470
Two or More Transitions 22.64808

1.12 Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Post-WW2 Independence status

## # A tibble: 18 × 6
##    year_bin.x postww2_ind Prop_Dyn_Years Cummulative_Dyn_Years year_bin.y
##    <ord>            <dbl>          <dbl>                 <dbl> <ord>     
##  1 1945-1970            0           29.6                   462 1945-1970 
##  2 1945-1970            0           29.6                   462 1970-1995 
##  3 1945-1970            0           29.6                   462 1995-2020 
##  4 1945-1970            1           27.9                   205 1945-1970 
##  5 1945-1970            1           27.9                   205 1970-1995 
##  6 1945-1970            1           27.9                   205 1995-2020 
##  7 1970-1995            0           26.9                   438 1945-1970 
##  8 1970-1995            0           26.9                   438 1970-1995 
##  9 1970-1995            0           26.9                   438 1995-2020 
## 10 1970-1995            1           24.0                   481 1945-1970 
## 11 1970-1995            1           24.0                   481 1970-1995 
## 12 1970-1995            1           24.0                   481 1995-2020 
## 13 1995-2020            0           25.2                   426 1945-1970 
## 14 1995-2020            0           25.2                   426 1970-1995 
## 15 1995-2020            0           25.2                   426 1995-2020 
## 16 1995-2020            1           25.9                   707 1945-1970 
## 17 1995-2020            1           25.9                   707 1970-1995 
## 18 1995-2020            1           25.9                   707 1995-2020 
## # ℹ 1 more variable: Dynastic_Rulers_percentage <dbl>

1.13 Proportion of Years Under Dynastic Rule by Former British Colony Status (Information Scraped from Wikipedia)

Proportion of Years Under Dynastic Rule in Democratic Regimes
former_british_colony year_bin Prop_Dyn_Years
0 1945-1970 25.06917
0 1970-1995 18.15867
0 1995-2020 21.99519
1 1945-1970 38.09904
1 1970-1995 36.20000
1 1995-2020 35.83490

1.14 Proportion of Years Under Dynastic Rule by Regions (Across all regime types)

1.15 Mapping of Dynastic Relation Type Across all regime Types

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast.

This graph shows what kind of dynastic relationships are most relevant across regime types (Civilian Dictatorship, Military Dictatorship, Mixed Democratic, Parliamentary Democracy, Presidential Democracy, Royal Dictatorship)

gdd_relation_all <- gdd %>% 
    distinct(nominal_leader, .keep_all = TRUE) %>% 
    filter(pred_bin == 1, relation_code_pred != 0)

gdd_relation_all <-gdd_relation_all %>% 
  group_by(fln_gender) %>%
  count(relation_code_pred) %>%
  mutate(Relation_Type = case_when(
  fln_gender == 0 & relation_code_pred == 2  ~ "Father-Son",
  fln_gender == 0 & relation_code_pred == 3  ~ "Mother-Son",
  fln_gender == 0 & relation_code_pred == 8  ~ "Brother-Brother",
  fln_gender == 0 & relation_code_pred == 10 ~ "Grandfather-Grandson",
  fln_gender == 0 & relation_code_pred == 11 ~ "Grandmother-Grandson",
  fln_gender == 0 & relation_code_pred == 14 ~ "Uncle-Nephew",
  relation_code_pred == 18 ~ "Cousin-Cousin",
  relation_code_pred == 19 ~ "Other",
  fln_gender == 1 & relation_code_pred == 2  ~ "Father-Daughter",
  fln_gender == 1 & relation_code_pred == 6  ~ "Husband-Wife",
  fln_gender == 1 & relation_code_pred == 8  ~ "Brother-Sister",
  fln_gender == 1 & relation_code_pred == 10  ~ "Grandfather-Granddaughter",
    TRUE ~ NA_character_)
  ) %>% 
  rename(Total = n) %>% 
  mutate(percentage_tot_dyn = Total/sum(Total)*100)

relation <- ggplot(gdd_relation_all, aes(x = Relation_Type, y = Total, fill = Relation_Type)) +
  geom_bar(stat = "identity") +
  labs(title = "Dynastic Relationship Across All Regime Types",
       x = "Dynastic Relationship Type",
       y = "Total") +
  theme_stata()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        legend.position = "none")

ggplotly(relation)

1.16 Mapping of Dynastic Relation Type in Democratic regime Types

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast.

This graph shows what kind of dynastic relationships are most relevant in democratic regime types (Mixed Democratic, Parliamentary Democracy, Presidential Democracy)

2 The Different Dynasts (across regime types)

While our definition of a dynast is clear as stated in the previous section. This section expands on that definition at talks about three different kinds of dynast.

2.1 THE FIRST DYNAST

The First definition of Dynast is the one mentioned before. This shows the proportion of leaders that necessarily have an ancestor in politics and may or may not have a successor. The necessary precondition is a family member preceding him/her in politics before his time. ((pred_bin == 1 & suc_bin doesn’t matter))

2.2 THE SECOND DYNAST (DYNASTY-SUSTAINER)

The Second definition of Dynast is the one of dynasty sustainers. This means that the following graph shows the proportion of leaders that necessarily come from apolitical family and also leaves a successor in politics. Therefore, a dynasty sustainer The necessary preconditions are a family member preceding him/her in politics before his/her time and a family member suceeding him/her in politics after his/her time. (pred_bin == 1 & suc_bin == 1)

2.3 THE THIRD DYNAST (DYNASTY-ENDER)

The THIRD definition of Dynast is the one of dynasty-enderss. This means that the following graph shows the proportion of leaders that necessarily come from a political family BUT DO NOT LEAVE a successor in politics. Therefore, for a dynasty ENDER The necessary preconditions are a family member preceding him/her in politics before his/her time and a family member NOT suceeding him/her in politics after his/her time. (pred_bin == 1 & suc_bin == 0)

2.4 THE FOURTH DYNAST (DYNASTY-FORMERS)

The fourth definition of Dynast is the one of dynasty-formers. This means that the following graph shows the proportion of leaders that DO NOT come from a political family HAVE a successor in politics. Therefore, for a dynasty former the necessary preconditions are the ABSENCE OF A family member preceding him/her in politics before his/her time and a family member SUCCEEDING him/her in politics after his/her time. (pred_bin == 0 & suc_bin == 1)

2.5 THE PURE NON-DYNAST

The last category is a category of leaders that have no family before or after them in politics. These are not-dynasts and are included to show declining prevalence of family ties in politics.

3 Predicted Probabilities and Regime Types: Two Different Models

3.1 Model 1,2,3: Using dictatorship as the independent variable

## 
## Call:
## glm(formula = dynastic ~ dictatorship, family = binomial(link = "logit"), 
##     data = gdd)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.32321    0.03464  -38.19   <2e-16 ***
## dictatorship  0.50542    0.04565   11.07   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11848  on 10342  degrees of freedom
## Residual deviance: 11723  on 10341  degrees of freedom
## AIC: 11727
## 
## Number of Fisher Scoring iterations: 4
## 
## Call:
## glm(formula = dynastic ~ dictatorship + factor(Country) + factor(Year), 
##     family = binomial(link = "logit"), data = gdd)
## 
## Coefficients:
##                                                   Estimate Std. Error z value
## (Intercept)                                      1.316e+00  4.208e-01   3.127
## dictatorship                                    -2.050e-01  1.005e-01  -2.039
## factor(Country)Albania                          -2.342e+00  3.907e-01  -5.994
## factor(Country)Algeria                          -2.039e+01  1.391e+03  -0.015
## factor(Country)Angola                           -2.039e+01  1.575e+03  -0.013
## factor(Country)Argentina                        -1.681e+00  3.606e-01  -4.662
## factor(Country)Armenia                          -2.063e+01  1.951e+03  -0.011
## factor(Country)Australia                        -9.541e-01  3.581e-01  -2.664
## factor(Country)Austria                          -2.063e+01  1.233e+03  -0.017
## factor(Country)Azerbaijan                       -4.144e-01  4.547e-01  -0.911
## factor(Country)Bahamas                          -2.056e+01  1.543e+03  -0.013
## factor(Country)Bahrain                           1.882e+01  1.513e+03   0.012
## factor(Country)Bangladesh                       -4.403e-01  3.873e-01  -1.137
## factor(Country)Barbados                         -2.267e+00  4.263e-01  -5.317
## factor(Country)Belarus                          -2.042e+01  1.951e+03  -0.010
## factor(Country)Belgium                          -3.342e+00  4.822e-01  -6.932
## factor(Country)Belize                           -2.056e+01  1.689e+03  -0.012
## factor(Country)Benin                             1.091e-01  3.859e-01   0.283
## factor(Country)Bhutan                            6.368e-01  3.912e-01   1.628
## factor(Country)Bosnia and Herzegovina           -1.858e+00  4.882e-01  -3.806
## factor(Country)Botswana                         -2.162e+00  4.194e-01  -5.155
## factor(Country)Brazil                           -3.462e+00  5.022e-01  -6.893
## factor(Country)Bulgaria                         -2.820e+00  4.270e-01  -6.604
## factor(Country)Burkina Faso                     -3.202e+00  5.319e-01  -6.020
## factor(Country)Burundi                          -1.570e+00  3.790e-01  -4.143
## factor(Country)Cambodia                          9.093e-02  3.684e-01   0.247
## factor(Country)Cameroon                         -2.035e+01  1.370e+03  -0.015
## factor(Country)Canada                           -1.682e+00  3.657e-01  -4.598
## factor(Country)Cape Verde                       -2.050e+01  1.573e+03  -0.013
## factor(Country)Central African Republic         -2.152e+00  4.048e-01  -5.315
## factor(Country)Chad                             -2.035e+01  1.370e+03  -0.015
## factor(Country)Chile                            -2.326e+00  3.890e-01  -5.978
## factor(Country)China                            -2.241e+00  3.850e-01  -5.821
## factor(Country)Colombia                         -1.282e+00  3.591e-01  -3.569
## factor(Country)Costa Rica                       -3.901e-01  3.657e-01  -1.067
## factor(Country)Croatia                          -2.063e+01  1.951e+03  -0.011
## factor(Country)Cuba                             -2.516e+00  4.051e-01  -6.211
## factor(Country)Cyprus                           -2.043e+00  3.984e-01  -5.127
## factor(Country)Czech Republic                   -2.065e+01  2.020e+03  -0.010
## factor(Country)Democratic Republic of the Congo -1.741e+00  3.829e-01  -4.548
## factor(Country)Denmark                          -2.063e+01  1.233e+03  -0.017
## factor(Country)Djibouti                         -7.605e-01  3.961e-01  -1.920
## factor(Country)Dominican Republic               -2.772e+00  4.206e-01  -6.591
## factor(Country)Ecuador                          -2.307e+00  3.871e-01  -5.959
## factor(Country)Egypt                            -3.137e+00  4.717e-01  -6.651
## factor(Country)El Salvador                      -2.052e+01  1.233e+03  -0.017
## factor(Country)Equatorial Guinea                 5.960e-01  4.242e-01   1.405
## factor(Country)Eritrea                          -2.044e+01  2.020e+03  -0.010
## factor(Country)Estonia                          -2.669e+00  5.617e-01  -4.751
## factor(Country)Eswatini                          1.883e+01  1.470e+03   0.013
## factor(Country)Ethiopia                         -1.367e+00  3.491e-01  -3.917
## factor(Country)Fiji                             -1.074e+00  3.813e-01  -2.818
## factor(Country)Finland                          -4.967e+00  6.438e-01  -7.714
## factor(Country)France                           -3.342e+00  4.822e-01  -6.932
## factor(Country)Gabon                            -2.294e+00  4.195e-01  -5.469
## factor(Country)Georgia                          -2.056e+01  1.942e+03  -0.011
## factor(Country)Germany                          -2.062e+01  1.919e+03  -0.011
## factor(Country)Ghana                            -1.990e+00  3.892e-01  -5.114
## factor(Country)Greece                           -9.865e-01  3.554e-01  -2.776
## factor(Country)Guatemala                        -3.018e+00  4.448e-01  -6.785
## factor(Country)Guinea                           -2.039e+01  1.345e+03  -0.015
## factor(Country)Guinea-Bissau                    -2.043e+01  1.556e+03  -0.013
## factor(Country)Guyana                           -4.136e+00  7.653e-01  -5.405
## factor(Country)Haiti                            -1.188e+00  3.461e-01  -3.432
## factor(Country)Honduras                         -3.135e+00  4.585e-01  -6.837
## factor(Country)Hungary                          -2.052e+01  1.232e+03  -0.017
## factor(Country)Iceland                          -1.804e+00  3.690e-01  -4.889
## factor(Country)India                            -2.044e+00  3.787e-01  -5.396
## factor(Country)Indonesia                        -3.522e+00  5.307e-01  -6.637
## factor(Country)Iran                             -6.399e-01  3.443e-01  -1.858
## factor(Country)Iraq                             -1.662e+00  3.572e-01  -4.653
## factor(Country)Ireland                          -1.804e+00  3.690e-01  -4.889
## factor(Country)Israel                           -4.214e+00  4.982e-01  -8.459
## factor(Country)Italy                            -3.710e+00  5.378e-01  -6.899
## factor(Country)Ivory Coast                      -2.035e+01  1.370e+03  -0.015
## factor(Country)Jamaica                          -1.649e+00  3.881e-01  -4.249
## factor(Country)Japan                            -6.415e-01  3.618e-01  -1.773
## factor(Country)Jordan                            1.876e+01  1.233e+03   0.015
## factor(Country)Kazakhstan                       -2.042e+01  1.951e+03  -0.010
## factor(Country)Kenya                            -2.719e+00  4.616e-01  -5.891
## factor(Country)Kosovo                           -2.085e+01  3.577e+03  -0.006
## factor(Country)Kuwait                            2.208e+00  6.448e-01   3.424
## factor(Country)Kyrgyzstan                       -2.054e+01  1.942e+03  -0.011
## factor(Country)Laos                              3.982e-01  3.829e-01   1.040
## factor(Country)Latvia                           -2.063e+01  1.951e+03  -0.011
## factor(Country)Lebanon                          -9.516e-03  3.614e-01  -0.026
## factor(Country)Lesotho                          -2.040e+01  1.439e+03  -0.014
## factor(Country)Liberia                          -8.280e-01  3.442e-01  -2.406
## factor(Country)Libya                            -1.544e+00  3.603e-01  -4.285
## factor(Country)Lithuania                        -2.063e+01  1.951e+03  -0.011
## factor(Country)Luxembourg                       -2.063e+01  1.233e+03  -0.017
## factor(Country)Madagascar                       -2.039e+01  1.369e+03  -0.015
## factor(Country)Malawi                           -3.248e+00  5.366e-01  -6.052
## factor(Country)Malaysia                         -1.128e+00  3.602e-01  -3.130
## factor(Country)Maldives                         -1.186e-01  3.812e-01  -0.311
## factor(Country)Mali                             -2.184e+00  4.069e-01  -5.368
## factor(Country)Malta                            -2.810e+00  4.695e-01  -5.985
## factor(Country)Mauritius                        -1.634e+00  3.990e-01  -4.096
## factor(Country)Mexico                           -2.955e-01  3.515e-01  -0.841
## factor(Country)Moldova                          -2.063e+01  1.951e+03  -0.011
## factor(Country)Mongolia                         -2.051e+01  1.232e+03  -0.017
## factor(Country)Montenegro                       -2.064e+01  2.772e+03  -0.007
## factor(Country)Morocco                           1.881e+01  1.327e+03   0.014
## factor(Country)Mozambique                       -2.036e+01  1.576e+03  -0.013
## factor(Country)Myanmar                          -3.513e+00  5.299e-01  -6.628
## factor(Country)Namibia                          -2.041e+01  1.919e+03  -0.011
## factor(Country)Nepal                             4.283e-01  3.813e-01   1.123
## factor(Country)Netherlands                      -2.063e+01  1.233e+03  -0.017
## factor(Country)New Zealand                      -2.624e+00  4.098e-01  -6.404
## factor(Country)Nicaragua                        -1.330e+00  3.496e-01  -3.803
## factor(Country)Niger                            -2.044e+01  1.366e+03  -0.015
## factor(Country)Nigeria                          -2.533e+00  4.346e-01  -5.828
## factor(Country)North Korea                      -2.285e+00  3.916e-01  -5.836
## factor(Country)North Macedonia                  -1.739e+00  4.749e-01  -3.662
## factor(Country)Norway                           -1.742e+00  3.672e-01  -4.744
## factor(Country)Oman                              1.883e+01  1.498e+03   0.013
## factor(Country)Pakistan                         -1.883e+00  3.673e-01  -5.127
## factor(Country)Panama                           -6.189e-01  3.538e-01  -1.750
## factor(Country)Papua New Guinea                 -2.056e+01  1.576e+03  -0.013
## factor(Country)Paraguay                         -3.834e+00  5.755e-01  -6.662
## factor(Country)Peru                             -1.661e+00  3.588e-01  -4.628
## factor(Country)Philippines                       1.987e-01  3.780e-01   0.526
## factor(Country)Poland                           -3.593e+00  5.304e-01  -6.775
## factor(Country)Portugal                         -3.625e+00  5.317e-01  -6.818
## factor(Country)Qatar                             1.882e+01  1.381e+03   0.014
## factor(Country)Republic of the Congo            -2.036e+01  1.370e+03  -0.015
## factor(Country)Republic of the Gambia           -7.113e-01  3.700e-01  -1.922
## factor(Country)Romania                          -2.942e+00  4.396e-01  -6.693
## factor(Country)Russia                           -2.042e+01  1.233e+03  -0.017
## factor(Country)Rwanda                           -2.035e+01  1.393e+03  -0.015
## factor(Country)Saudi Arabia                      1.876e+01  1.233e+03   0.015
## factor(Country)Senegal                          -2.043e+01  1.365e+03  -0.015
## factor(Country)Serbia                           -2.058e+01  1.943e+03  -0.011
## factor(Country)Sierra Leone                     -2.085e+00  4.025e-01  -5.179
## factor(Country)Singapore                        -1.613e+00  3.870e-01  -4.168
## factor(Country)Slovakia                         -2.065e+01  2.020e+03  -0.010
## factor(Country)Slovenia                         -3.262e+00  6.678e-01  -4.885
## factor(Country)Solomon Islands                  -2.056e+01  1.630e+03  -0.013
## factor(Country)Somalia                          -2.038e+01  1.369e+03  -0.015
## factor(Country)South Africa                     -2.595e+00  3.400e-01  -7.634
## factor(Country)South Korea                      -4.151e+00  6.465e-01  -6.420
## factor(Country)South Sudan                      -2.065e+01  3.394e+03  -0.006
## factor(Country)Spain                            -2.972e+00  4.410e-01  -6.738
## factor(Country)Sri Lanka                        -5.697e-01  3.597e-01  -1.584
## factor(Country)Sudan                            -7.293e-01  3.566e-01  -2.045
## factor(Country)Suriname                         -2.053e+01  1.574e+03  -0.013
## factor(Country)Sweden                           -2.533e+00  4.034e-01  -6.279
## factor(Country)Switzerland                      -4.251e+00  6.497e-01  -6.543
## factor(Country)Syria                            -2.186e+00  3.806e-01  -5.743
## factor(Country)Taiwan                           -2.630e+00  4.170e-01  -6.308
## factor(Country)Tajikistan                       -2.042e+01  1.951e+03  -0.010
## factor(Country)Tanzania                         -2.036e+01  1.417e+03  -0.014
## factor(Country)Thailand                         -2.703e+00  4.159e-01  -6.500
## factor(Country)Timor-Leste                      -2.078e+01  2.460e+03  -0.008
## factor(Country)Togo                             -1.488e+00  3.733e-01  -3.986
## factor(Country)Trinidad and Tobago              -1.727e+00  3.907e-01  -4.421
## factor(Country)Tunisia                          -2.040e+01  1.324e+03  -0.015
## factor(Country)Turkey                           -3.319e+00  4.801e-01  -6.912
## factor(Country)Turkmenistan                     -2.042e+01  1.951e+03  -0.010
## factor(Country)Uganda                           -2.653e+00  4.587e-01  -5.784
## factor(Country)Ukraine                          -2.063e+01  1.951e+03  -0.011
## factor(Country)United Arab Emirates              1.882e+01  1.513e+03   0.012
## factor(Country)United Kingdom                   -2.066e+00  3.782e-01  -5.462
## factor(Country)United States of America         -1.931e+00  3.731e-01  -5.177
## factor(Country)Uruguay                          -2.040e+00  3.754e-01  -5.436
## factor(Country)Uzbekistan                       -2.042e+01  1.951e+03  -0.010
## factor(Country)Venezuela                        -1.963e+00  3.715e-01  -5.282
## factor(Country)Vietnam                          -2.035e+01  1.594e+03  -0.013
## factor(Country)Yemen                            -2.172e+00  3.795e-01  -5.722
## factor(Country)Zambia                           -2.041e+01  1.415e+03  -0.014
## factor(Year)1947                                 6.261e-02  4.467e-01   0.140
## factor(Year)1948                                -1.405e-01  4.454e-01  -0.315
## factor(Year)1949                                -7.194e-02  4.414e-01  -0.163
## factor(Year)1950                                -1.639e-01  4.439e-01  -0.369
## factor(Year)1951                                 1.553e-01  4.342e-01   0.358
## factor(Year)1952                                 3.216e-01  4.312e-01   0.746
## factor(Year)1953                                 3.469e-01  4.289e-01   0.809
## factor(Year)1954                                 1.911e-01  4.315e-01   0.443
## factor(Year)1955                                 2.790e-01  4.303e-01   0.649
## factor(Year)1956                                -2.808e-02  4.339e-01  -0.065
## factor(Year)1957                                -1.180e-02  4.299e-01  -0.027
## factor(Year)1958                                -1.752e-01  4.336e-01  -0.404
## factor(Year)1959                                -3.466e-01  4.379e-01  -0.791
## factor(Year)1960                                -5.407e-01  4.318e-01  -1.252
## factor(Year)1961                                -5.527e-01  4.305e-01  -1.284
## factor(Year)1962                                -4.585e-01  4.236e-01  -1.082
## factor(Year)1963                                -4.020e-01  4.208e-01  -0.955
## factor(Year)1964                                -3.445e-01  4.183e-01  -0.824
## factor(Year)1965                                -1.748e-01  4.106e-01  -0.426
## factor(Year)1966                                 4.015e-02  4.050e-01   0.099
## factor(Year)1967                                -7.473e-02  4.070e-01  -0.184
## factor(Year)1968                                -4.692e-01  4.139e-01  -1.133
## factor(Year)1969                                -4.596e-01  4.139e-01  -1.110
## factor(Year)1970                                -6.205e-01  4.168e-01  -1.489
## factor(Year)1971                                -3.314e-01  4.082e-01  -0.812
## factor(Year)1972                                -4.576e-01  4.111e-01  -1.113
## factor(Year)1973                                -5.215e-01  4.128e-01  -1.263
## factor(Year)1974                                -3.312e-01  4.082e-01  -0.811
## factor(Year)1975                                -9.131e-02  4.036e-01  -0.226
## factor(Year)1976                                -2.073e-01  4.057e-01  -0.511
## factor(Year)1977                                -3.571e-01  4.078e-01  -0.876
## factor(Year)1978                                -2.955e-01  4.064e-01  -0.727
## factor(Year)1979                                -4.198e-01  4.090e-01  -1.027
## factor(Year)1980                                -1.846e-01  4.038e-01  -0.457
## factor(Year)1981                                -5.558e-01  4.118e-01  -1.350
## factor(Year)1982                                -5.517e-01  4.119e-01  -1.339
## factor(Year)1983                                -3.627e-01  4.074e-01  -0.890
## factor(Year)1984                                -3.646e-01  4.074e-01  -0.895
## factor(Year)1985                                -5.564e-01  4.118e-01  -1.351
## factor(Year)1986                                -6.313e-01  4.138e-01  -1.526
## factor(Year)1987                                -6.313e-01  4.138e-01  -1.526
## factor(Year)1988                                -6.990e-01  4.157e-01  -1.681
## factor(Year)1989                                -7.018e-01  4.157e-01  -1.688
## factor(Year)1990                                -5.902e-01  4.115e-01  -1.434
## factor(Year)1991                                -5.323e-01  4.073e-01  -1.307
## factor(Year)1992                                -7.280e-01  4.123e-01  -1.766
## factor(Year)1993                                -6.697e-01  4.104e-01  -1.632
## factor(Year)1994                                -6.749e-01  4.103e-01  -1.645
## factor(Year)1995                                -7.391e-01  4.121e-01  -1.793
## factor(Year)1996                                -6.140e-01  4.087e-01  -1.503
## factor(Year)1997                                -4.898e-01  4.057e-01  -1.207
## factor(Year)1998                                -6.751e-01  4.103e-01  -1.646
## factor(Year)1999                                -4.900e-01  4.056e-01  -1.208
## factor(Year)2000                                -5.484e-01  4.071e-01  -1.347
## factor(Year)2001                                -2.597e-01  4.009e-01  -0.648
## factor(Year)2002                                -4.292e-01  4.042e-01  -1.062
## factor(Year)2003                                -3.710e-01  4.030e-01  -0.921
## factor(Year)2004                                -3.139e-01  4.018e-01  -0.781
## factor(Year)2005                                -3.710e-01  4.030e-01  -0.921
## factor(Year)2006                                -1.546e-01  3.992e-01  -0.387
## factor(Year)2007                                 9.721e-03  3.967e-01   0.025
## factor(Year)2008                                 6.078e-02  3.961e-01   0.153
## factor(Year)2009                                -1.609e-01  3.994e-01  -0.403
## factor(Year)2010                                 5.209e-02  3.964e-01   0.131
## factor(Year)2011                                -2.863e-04  3.971e-01  -0.001
## factor(Year)2012                                -1.068e-01  3.985e-01  -0.268
## factor(Year)2013                                 1.057e-01  3.956e-01   0.267
## factor(Year)2014                                 1.583e-01  3.950e-01   0.401
## factor(Year)2015                                 2.130e-01  3.944e-01   0.540
## factor(Year)2016                                -1.557e-01  3.992e-01  -0.390
## factor(Year)2017                                 2.026e-03  3.969e-01   0.005
## factor(Year)2018                                -2.768e-01  4.016e-01  -0.689
## factor(Year)2019                                -1.661e-01  3.996e-01  -0.416
## factor(Year)2020                                -1.661e-01  3.996e-01  -0.416
##                                                 Pr(>|z|)    
## (Intercept)                                     0.001768 ** 
## dictatorship                                    0.041478 *  
## factor(Country)Albania                          2.04e-09 ***
## factor(Country)Algeria                          0.988308    
## factor(Country)Angola                           0.989670    
## factor(Country)Argentina                        3.13e-06 ***
## factor(Country)Armenia                          0.991565    
## factor(Country)Australia                        0.007722 ** 
## factor(Country)Austria                          0.986651    
## factor(Country)Azerbaijan                       0.362057    
## factor(Country)Bahamas                          0.989371    
## factor(Country)Bahrain                          0.990073    
## factor(Country)Bangladesh                       0.255680    
## factor(Country)Barbados                         1.06e-07 ***
## factor(Country)Belarus                          0.991648    
## factor(Country)Belgium                          4.15e-12 ***
## factor(Country)Belize                           0.990291    
## factor(Country)Benin                            0.777315    
## factor(Country)Bhutan                           0.103522    
## factor(Country)Bosnia and Herzegovina           0.000141 ***
## factor(Country)Botswana                         2.54e-07 ***
## factor(Country)Brazil                           5.45e-12 ***
## factor(Country)Bulgaria                         4.00e-11 ***
## factor(Country)Burkina Faso                     1.75e-09 ***
## factor(Country)Burundi                          3.44e-05 ***
## factor(Country)Cambodia                         0.805021    
## factor(Country)Cameroon                         0.988148    
## factor(Country)Canada                           4.26e-06 ***
## factor(Country)Cape Verde                       0.989600    
## factor(Country)Central African Republic         1.07e-07 ***
## factor(Country)Chad                             0.988148    
## factor(Country)Chile                            2.25e-09 ***
## factor(Country)China                            5.85e-09 ***
## factor(Country)Colombia                         0.000359 ***
## factor(Country)Costa Rica                       0.286104    
## factor(Country)Croatia                          0.991565    
## factor(Country)Cuba                             5.25e-10 ***
## factor(Country)Cyprus                           2.94e-07 ***
## factor(Country)Czech Republic                   0.991845    
## factor(Country)Democratic Republic of the Congo 5.42e-06 ***
## factor(Country)Denmark                          0.986651    
## factor(Country)Djibouti                         0.054888 .  
## factor(Country)Dominican Republic               4.38e-11 ***
## factor(Country)Ecuador                          2.54e-09 ***
## factor(Country)Egypt                            2.91e-11 ***
## factor(Country)El Salvador                      0.986721    
## factor(Country)Equatorial Guinea                0.160091    
## factor(Country)Eritrea                          0.991925    
## factor(Country)Estonia                          2.02e-06 ***
## factor(Country)Eswatini                         0.989777    
## factor(Country)Ethiopia                         8.97e-05 ***
## factor(Country)Fiji                             0.004832 ** 
## factor(Country)Finland                          1.21e-14 ***
## factor(Country)France                           4.15e-12 ***
## factor(Country)Gabon                            4.54e-08 ***
## factor(Country)Georgia                          0.991554    
## factor(Country)Germany                          0.991428    
## factor(Country)Ghana                            3.16e-07 ***
## factor(Country)Greece                           0.005501 ** 
## factor(Country)Guatemala                        1.16e-11 ***
## factor(Country)Guinea                           0.987901    
## factor(Country)Guinea-Bissau                    0.989523    
## factor(Country)Guyana                           6.48e-08 ***
## factor(Country)Haiti                            0.000600 ***
## factor(Country)Honduras                         8.10e-12 ***
## factor(Country)Hungary                          0.986704    
## factor(Country)Iceland                          1.01e-06 ***
## factor(Country)India                            6.81e-08 ***
## factor(Country)Indonesia                        3.21e-11 ***
## factor(Country)Iran                             0.063145 .  
## factor(Country)Iraq                             3.27e-06 ***
## factor(Country)Ireland                          1.01e-06 ***
## factor(Country)Israel                            < 2e-16 ***
## factor(Country)Italy                            5.25e-12 ***
## factor(Country)Ivory Coast                      0.988146    
## factor(Country)Jamaica                          2.14e-05 ***
## factor(Country)Japan                            0.076248 .  
## factor(Country)Jordan                           0.987864    
## factor(Country)Kazakhstan                       0.991648    
## factor(Country)Kenya                            3.84e-09 ***
## factor(Country)Kosovo                           0.995350    
## factor(Country)Kuwait                           0.000617 ***
## factor(Country)Kyrgyzstan                       0.991561    
## factor(Country)Laos                             0.298266    
## factor(Country)Latvia                           0.991565    
## factor(Country)Lebanon                          0.978993    
## factor(Country)Lesotho                          0.988686    
## factor(Country)Liberia                          0.016138 *  
## factor(Country)Libya                            1.83e-05 ***
## factor(Country)Lithuania                        0.991565    
## factor(Country)Luxembourg                       0.986651    
## factor(Country)Madagascar                       0.988120    
## factor(Country)Malawi                           1.43e-09 ***
## factor(Country)Malaysia                         0.001745 ** 
## factor(Country)Maldives                         0.755643    
## factor(Country)Mali                             7.98e-08 ***
## factor(Country)Malta                            2.16e-09 ***
## factor(Country)Mauritius                        4.21e-05 ***
## factor(Country)Mexico                           0.400582    
## factor(Country)Moldova                          0.991565    
## factor(Country)Mongolia                         0.986719    
## factor(Country)Montenegro                       0.994059    
## factor(Country)Morocco                          0.988691    
## factor(Country)Mozambique                       0.989695    
## factor(Country)Myanmar                          3.39e-11 ***
## factor(Country)Namibia                          0.991514    
## factor(Country)Nepal                            0.261253    
## factor(Country)Netherlands                      0.986651    
## factor(Country)New Zealand                      1.52e-10 ***
## factor(Country)Nicaragua                        0.000143 ***
## factor(Country)Niger                            0.988064    
## factor(Country)Nigeria                          5.61e-09 ***
## factor(Country)North Korea                      5.34e-09 ***
## factor(Country)North Macedonia                  0.000250 ***
## factor(Country)Norway                           2.10e-06 ***
## factor(Country)Oman                             0.989971    
## factor(Country)Pakistan                         2.94e-07 ***
## factor(Country)Panama                           0.080187 .  
## factor(Country)Papua New Guinea                 0.989591    
## factor(Country)Paraguay                         2.70e-11 ***
## factor(Country)Peru                             3.69e-06 ***
## factor(Country)Philippines                      0.599054    
## factor(Country)Poland                           1.24e-11 ***
## factor(Country)Portugal                         9.24e-12 ***
## factor(Country)Qatar                            0.989129    
## factor(Country)Republic of the Congo            0.988146    
## factor(Country)Republic of the Gambia           0.054557 .  
## factor(Country)Romania                          2.19e-11 ***
## factor(Country)Russia                           0.986784    
## factor(Country)Rwanda                           0.988340    
## factor(Country)Saudi Arabia                     0.987864    
## factor(Country)Senegal                          0.988057    
## factor(Country)Serbia                           0.991551    
## factor(Country)Sierra Leone                     2.23e-07 ***
## factor(Country)Singapore                        3.07e-05 ***
## factor(Country)Slovakia                         0.991845    
## factor(Country)Slovenia                         1.04e-06 ***
## factor(Country)Solomon Islands                  0.989937    
## factor(Country)Somalia                          0.988121    
## factor(Country)South Africa                     2.28e-14 ***
## factor(Country)South Korea                      1.36e-10 ***
## factor(Country)South Sudan                      0.995147    
## factor(Country)Spain                            1.61e-11 ***
## factor(Country)Sri Lanka                        0.113184    
## factor(Country)Sudan                            0.040832 *  
## factor(Country)Suriname                         0.989592    
## factor(Country)Sweden                           3.41e-10 ***
## factor(Country)Switzerland                      6.02e-11 ***
## factor(Country)Syria                            9.28e-09 ***
## factor(Country)Taiwan                           2.82e-10 ***
## factor(Country)Tajikistan                       0.991648    
## factor(Country)Tanzania                         0.988535    
## factor(Country)Thailand                         8.06e-11 ***
## factor(Country)Timor-Leste                      0.993260    
## factor(Country)Togo                             6.71e-05 ***
## factor(Country)Trinidad and Tobago              9.85e-06 ***
## factor(Country)Tunisia                          0.987711    
## factor(Country)Turkey                           4.78e-12 ***
## factor(Country)Turkmenistan                     0.991648    
## factor(Country)Uganda                           7.31e-09 ***
## factor(Country)Ukraine                          0.991565    
## factor(Country)United Arab Emirates             0.990073    
## factor(Country)United Kingdom                   4.70e-08 ***
## factor(Country)United States of America         2.25e-07 ***
## factor(Country)Uruguay                          5.45e-08 ***
## factor(Country)Uzbekistan                       0.991648    
## factor(Country)Venezuela                        1.28e-07 ***
## factor(Country)Vietnam                          0.989810    
## factor(Country)Yemen                            1.05e-08 ***
## factor(Country)Zambia                           0.988486    
## factor(Year)1947                                0.888532    
## factor(Year)1948                                0.752478    
## factor(Year)1949                                0.870530    
## factor(Year)1950                                0.711977    
## factor(Year)1951                                0.720612    
## factor(Year)1952                                0.455849    
## factor(Year)1953                                0.418535    
## factor(Year)1954                                0.657790    
## factor(Year)1955                                0.516653    
## factor(Year)1956                                0.948404    
## factor(Year)1957                                0.978098    
## factor(Year)1958                                0.686084    
## factor(Year)1959                                0.428707    
## factor(Year)1960                                0.210462    
## factor(Year)1961                                0.199222    
## factor(Year)1962                                0.279118    
## factor(Year)1963                                0.339407    
## factor(Year)1964                                0.410166    
## factor(Year)1965                                0.670410    
## factor(Year)1966                                0.921025    
## factor(Year)1967                                0.854328    
## factor(Year)1968                                0.257013    
## factor(Year)1969                                0.266810    
## factor(Year)1970                                0.136567    
## factor(Year)1971                                0.416834    
## factor(Year)1972                                0.265675    
## factor(Year)1973                                0.206470    
## factor(Year)1974                                0.417231    
## factor(Year)1975                                0.821003    
## factor(Year)1976                                0.609352    
## factor(Year)1977                                0.381142    
## factor(Year)1978                                0.467153    
## factor(Year)1979                                0.304620    
## factor(Year)1980                                0.647603    
## factor(Year)1981                                0.177152    
## factor(Year)1982                                0.180488    
## factor(Year)1983                                0.373368    
## factor(Year)1984                                0.370827    
## factor(Year)1985                                0.176622    
## factor(Year)1986                                0.127125    
## factor(Year)1987                                0.127125    
## factor(Year)1988                                0.092680 .  
## factor(Year)1989                                0.091354 .  
## factor(Year)1990                                0.151478    
## factor(Year)1991                                0.191225    
## factor(Year)1992                                0.077420 .  
## factor(Year)1993                                0.102728    
## factor(Year)1994                                0.100008    
## factor(Year)1995                                0.072910 .  
## factor(Year)1996                                0.132941    
## factor(Year)1997                                0.227314    
## factor(Year)1998                                0.099866 .  
## factor(Year)1999                                0.227043    
## factor(Year)2000                                0.177936    
## factor(Year)2001                                0.517231    
## factor(Year)2002                                0.288305    
## factor(Year)2003                                0.357258    
## factor(Year)2004                                0.434746    
## factor(Year)2005                                0.357258    
## factor(Year)2006                                0.698530    
## factor(Year)2007                                0.980450    
## factor(Year)2008                                0.878050    
## factor(Year)2009                                0.687010    
## factor(Year)2010                                0.895446    
## factor(Year)2011                                0.999425    
## factor(Year)2012                                0.788592    
## factor(Year)2013                                0.789341    
## factor(Year)2014                                0.688495    
## factor(Year)2015                                0.589253    
## factor(Year)2016                                0.696483    
## factor(Year)2017                                0.995927    
## factor(Year)2018                                0.490590    
## factor(Year)2019                                0.677597    
## factor(Year)2020                                0.677597    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11848  on 10342  degrees of freedom
## Residual deviance:  7110  on 10099  degrees of freedom
## AIC: 7598
## 
## Number of Fisher Scoring iterations: 18
## 
## Call:
## glm(formula = dynastic ~ dictatorship + v2x_polyarchy + former_british_colony + 
##     factor(Year) + factor(Country), family = binomial(link = "logit"), 
##     data = gdd_clean, na.action = na.exclude)
## 
## Coefficients: (1 not defined because of singularities)
##                                                   Estimate Std. Error z value
## (Intercept)                                     -1.284e+00  4.462e-01  -2.878
## dictatorship                                     2.258e-01  1.271e-01   1.776
## v2x_polyarchy                                    1.645e+00  2.958e-01   5.561
## former_british_colony                            2.154e+00  3.810e-01   5.654
## factor(Year)1947                                 1.046e-01  4.464e-01   0.234
## factor(Year)1948                                -1.615e-01  4.447e-01  -0.363
## factor(Year)1949                                -8.455e-02  4.409e-01  -0.192
## factor(Year)1950                                -1.935e-01  4.436e-01  -0.436
## factor(Year)1951                                 1.166e-01  4.338e-01   0.269
## factor(Year)1952                                 2.705e-01  4.313e-01   0.627
## factor(Year)1953                                 2.840e-01  4.298e-01   0.661
## factor(Year)1954                                 1.115e-01  4.325e-01   0.258
## factor(Year)1955                                 1.839e-01  4.315e-01   0.426
## factor(Year)1956                                -1.290e-01  4.353e-01  -0.296
## factor(Year)1957                                -1.251e-01  4.314e-01  -0.290
## factor(Year)1958                                -3.001e-01  4.350e-01  -0.690
## factor(Year)1959                                -4.783e-01  4.393e-01  -1.089
## factor(Year)1960                                -6.723e-01  4.337e-01  -1.550
## factor(Year)1961                                -6.921e-01  4.322e-01  -1.601
## factor(Year)1962                                -6.072e-01  4.251e-01  -1.428
## factor(Year)1963                                -5.520e-01  4.220e-01  -1.308
## factor(Year)1964                                -5.024e-01  4.196e-01  -1.197
## factor(Year)1965                                -3.388e-01  4.125e-01  -0.821
## factor(Year)1966                                -1.116e-01  4.065e-01  -0.275
## factor(Year)1967                                -2.330e-01  4.086e-01  -0.570
## factor(Year)1968                                -6.228e-01  4.155e-01  -1.499
## factor(Year)1969                                -6.227e-01  4.158e-01  -1.498
## factor(Year)1970                                -7.923e-01  4.191e-01  -1.890
## factor(Year)1971                                -4.996e-01  4.100e-01  -1.218
## factor(Year)1972                                -6.200e-01  4.128e-01  -1.502
## factor(Year)1973                                -6.844e-01  4.148e-01  -1.650
## factor(Year)1974                                -4.960e-01  4.101e-01  -1.209
## factor(Year)1975                                -2.601e-01  4.056e-01  -0.641
## factor(Year)1976                                -3.755e-01  4.077e-01  -0.921
## factor(Year)1977                                -5.389e-01  4.097e-01  -1.315
## factor(Year)1978                                -4.899e-01  4.087e-01  -1.199
## factor(Year)1979                                -6.255e-01  4.113e-01  -1.521
## factor(Year)1980                                -3.968e-01  4.062e-01  -0.977
## factor(Year)1981                                -7.699e-01  4.143e-01  -1.858
## factor(Year)1982                                -7.716e-01  4.143e-01  -1.862
## factor(Year)1983                                -5.833e-01  4.098e-01  -1.423
## factor(Year)1984                                -6.009e-01  4.099e-01  -1.466
## factor(Year)1985                                -8.020e-01  4.143e-01  -1.936
## factor(Year)1986                                -8.719e-01  4.154e-01  -2.099
## factor(Year)1987                                -8.810e-01  4.158e-01  -2.119
## factor(Year)1988                                -9.555e-01  4.178e-01  -2.287
## factor(Year)1989                                -9.529e-01  4.175e-01  -2.282
## factor(Year)1990                                -8.619e-01  4.137e-01  -2.084
## factor(Year)1991                                -8.857e-01  4.122e-01  -2.149
## factor(Year)1992                                -1.035e+00  4.158e-01  -2.488
## factor(Year)1993                                -9.886e-01  4.142e-01  -2.387
## factor(Year)1994                                -9.831e-01  4.140e-01  -2.375
## factor(Year)1995                                -1.061e+00  4.159e-01  -2.551
## factor(Year)1996                                -9.412e-01  4.125e-01  -2.282
## factor(Year)1997                                -8.410e-01  4.099e-01  -2.052
## factor(Year)1998                                -1.031e+00  4.147e-01  -2.486
## factor(Year)1999                                -8.496e-01  4.101e-01  -2.072
## factor(Year)2000                                -9.117e-01  4.115e-01  -2.216
## factor(Year)2001                                -6.247e-01  4.053e-01  -1.541
## factor(Year)2002                                -8.091e-01  4.091e-01  -1.978
## factor(Year)2003                                -7.653e-01  4.082e-01  -1.875
## factor(Year)2004                                -7.036e-01  4.069e-01  -1.729
## factor(Year)2005                                -7.683e-01  4.084e-01  -1.881
## factor(Year)2006                                -5.517e-01  4.045e-01  -1.364
## factor(Year)2007                                -3.881e-01  4.021e-01  -0.965
## factor(Year)2008                                -3.467e-01  4.022e-01  -0.862
## factor(Year)2009                                -5.590e-01  4.053e-01  -1.379
## factor(Year)2010                                -3.470e-01  4.024e-01  -0.862
## factor(Year)2011                                -4.009e-01  4.030e-01  -0.995
## factor(Year)2012                                -5.035e-01  4.044e-01  -1.245
## factor(Year)2013                                -2.865e-01  4.014e-01  -0.714
## factor(Year)2014                                -2.306e-01  4.009e-01  -0.575
## factor(Year)2015                                -1.822e-01  4.007e-01  -0.455
## factor(Year)2016                                -5.489e-01  4.056e-01  -1.353
## factor(Year)2017                                -3.845e-01  4.032e-01  -0.954
## factor(Year)2018                                -6.509e-01  4.071e-01  -1.599
## factor(Year)2019                                -5.294e-01  4.049e-01  -1.307
## factor(Year)2020                                -5.209e-01  4.046e-01  -1.288
## factor(Country)Albania                          -4.309e-02  4.121e-01  -0.105
## factor(Country)Algeria                          -1.825e+01  1.391e+03  -0.013
## factor(Country)Angola                           -1.814e+01  1.572e+03  -0.012
## factor(Country)Argentina                         1.291e-01  3.900e-01   0.331
## factor(Country)Armenia                          -1.838e+01  1.950e+03  -0.009
## factor(Country)Australia                         4.693e-01  4.043e-01   1.161
## factor(Country)Austria                          -1.917e+01  1.232e+03  -0.016
## factor(Country)Azerbaijan                        1.752e+00  4.715e-01   3.715
## factor(Country)Bahrain                           1.898e+01  1.509e+03   0.013
## factor(Country)Bangladesh                        1.638e+00  4.096e-01   4.000
## factor(Country)Barbados                         -2.759e+00  4.370e-01  -6.314
## factor(Country)Belarus                          -1.837e+01  1.958e+03  -0.009
## factor(Country)Belgium                          -1.871e+00  5.151e-01  -3.633
## factor(Country)Benin                             2.139e+00  4.088e-01   5.233
## factor(Country)Bhutan                            2.903e+00  4.134e-01   7.023
## factor(Country)Bosnia and Herzegovina           -3.617e-01  5.332e-01  -0.678
## factor(Country)Botswana                         -2.520e+00  4.257e-01  -5.920
## factor(Country)Brazil                           -1.644e+00  5.240e-01  -3.138
## factor(Country)Bulgaria                         -8.784e-01  4.487e-01  -1.958
## factor(Country)Burkina Faso                     -1.405e+00  5.535e-01  -2.538
## factor(Country)Burundi                           6.845e-01  4.003e-01   1.710
## factor(Country)Cambodia                          2.152e+00  3.913e-01   5.499
## factor(Country)Cameroon                         -1.829e+01  1.381e+03  -0.013
## factor(Country)Canada                           -1.759e-01  4.064e-01  -0.433
## factor(Country)Cape Verde                       -1.873e+01  1.565e+03  -0.012
## factor(Country)Central African Republic          5.063e-02  4.252e-01   0.119
## factor(Country)Chad                             -1.823e+01  1.367e+03  -0.013
## factor(Country)Chile                            -5.379e-01  4.187e-01  -1.285
## factor(Country)China                             1.392e-02  4.068e-01   0.034
## factor(Country)Colombia                          8.356e-01  3.821e-01   2.187
## factor(Country)Costa Rica                        1.137e+00  4.049e-01   2.808
## factor(Country)Croatia                          -1.880e+01  1.919e+03  -0.010
## factor(Country)Cuba                             -3.868e-01  4.281e-01  -0.904
## factor(Country)Cyprus                           -2.571e+00  4.112e-01  -6.253
## factor(Country)Czech Republic                   -1.912e+01  2.022e+03  -0.009
## factor(Country)Democratic Republic of the Congo  3.914e-01  4.051e-01   0.966
## factor(Country)Denmark                          -1.930e+01  1.229e+03  -0.016
## factor(Country)Djibouti                          1.364e+00  4.166e-01   3.274
## factor(Country)Dominican Republic               -7.149e-01  4.407e-01  -1.622
## factor(Country)Ecuador                          -3.942e-01  4.105e-01  -0.960
## factor(Country)Egypt                            -3.194e+00  4.731e-01  -6.751
## factor(Country)El Salvador                      -1.846e+01  1.224e+03  -0.015
## factor(Country)Equatorial Guinea                 2.829e+00  4.435e-01   6.379
## factor(Country)Eritrea                          -1.803e+01  2.024e+03  -0.009
## factor(Country)Estonia                          -1.114e+00  5.878e-01  -1.896
## factor(Country)Eswatini                          1.893e+01  1.470e+03   0.013
## factor(Country)Ethiopia                          8.260e-01  3.721e-01   2.220
## factor(Country)Fiji                             -1.388e+00  3.886e-01  -3.570
## factor(Country)Finland                          -3.519e+00  6.699e-01  -5.253
## factor(Country)France                           -1.872e+00  5.153e-01  -3.633
## factor(Country)Gabon                            -2.907e-01  4.402e-01  -0.660
## factor(Country)Georgia                          -1.857e+01  1.944e+03  -0.010
## factor(Country)Germany                          -1.912e+01  1.921e+03  -0.010
## factor(Country)Ghana                            -2.211e+00  3.954e-01  -5.591
## factor(Country)Greece                            7.551e-01  3.876e-01   1.948
## factor(Country)Guatemala                        -8.655e-01  4.641e-01  -1.865
## factor(Country)Guinea                           -1.821e+01  1.348e+03  -0.014
## factor(Country)Guinea-Bissau                    -1.830e+01  1.552e+03  -0.012
## factor(Country)Guyana                           -4.457e+00  7.686e-01  -5.799
## factor(Country)Haiti                             8.088e-01  3.715e-01   2.177
## factor(Country)Honduras                         -9.629e-01  4.759e-01  -2.023
## factor(Country)Hungary                          -1.860e+01  1.224e+03  -0.015
## factor(Country)Iceland                          -3.606e-01  4.130e-01  -0.873
## factor(Country)India                            -2.384e+00  3.858e-01  -6.178
## factor(Country)Indonesia                        -1.617e+00  5.496e-01  -2.942
## factor(Country)Iran                              1.520e+00  3.681e-01   4.129
## factor(Country)Iraq                             -1.702e+00  3.608e-01  -4.717
## factor(Country)Ireland                          -3.531e-01  4.124e-01  -0.856
## factor(Country)Israel                           -4.685e+00  5.069e-01  -9.242
## factor(Country)Italy                            -2.163e+00  5.646e-01  -3.831
## factor(Country)Ivory Coast                      -1.841e+01  1.363e+03  -0.014
## factor(Country)Jamaica                          -1.964e+00  3.950e-01  -4.972
## factor(Country)Japan                             9.122e-01  4.038e-01   2.259
## factor(Country)Jordan                            1.873e+01  1.231e+03   0.015
## factor(Country)Kazakhstan                       -1.830e+01  1.955e+03  -0.009
## factor(Country)Kenya                            -2.755e+00  4.620e-01  -5.962
## factor(Country)Kuwait                            2.104e+00  6.464e-01   3.256
## factor(Country)Kyrgyzstan                       -1.835e+01  1.951e+03  -0.009
## factor(Country)Laos                              2.617e+00  4.052e-01   6.460
## factor(Country)Latvia                           -1.897e+01  1.950e+03  -0.010
## factor(Country)Lebanon                           1.944e+00  3.861e-01   5.035
## factor(Country)Lesotho                          -2.060e+01  1.427e+03  -0.014
## factor(Country)Liberia                           1.147e+00  3.708e-01   3.094
## factor(Country)Libya                            -1.470e+00  3.631e-01  -4.049
## factor(Country)Lithuania                        -1.901e+01  1.952e+03  -0.010
## factor(Country)Luxembourg                       -1.922e+01  1.231e+03  -0.016
## factor(Country)Madagascar                       -1.840e+01  1.367e+03  -0.013
## factor(Country)Malawi                           -3.300e+00  5.375e-01  -6.139
## factor(Country)Malaysia                          9.266e-01  3.828e-01   2.421
## factor(Country)Maldives                         -1.455e-01  3.836e-01  -0.379
## factor(Country)Mali                             -1.193e-01  4.278e-01  -0.279
## factor(Country)Malta                            -3.302e+00  4.793e-01  -6.890
## factor(Country)Mauritius                        -2.083e+00  4.086e-01  -5.098
## factor(Country)Mexico                            1.565e+00  3.783e-01   4.138
## factor(Country)Moldova                          -1.858e+01  1.948e+03  -0.010
## factor(Country)Mongolia                         -1.855e+01  1.229e+03  -0.015
## factor(Country)Montenegro                       -1.888e+01  2.773e+03  -0.007
## factor(Country)Morocco                           2.095e+01  1.326e+03   0.016
## factor(Country)Mozambique                       -1.839e+01  1.564e+03  -0.012
## factor(Country)Myanmar                          -3.527e+00  5.323e-01  -6.626
## factor(Country)Namibia                          -1.895e+01  1.918e+03  -0.010
## factor(Country)Nepal                             2.608e+00  4.032e-01   6.469
## factor(Country)Netherlands                      -1.917e+01  1.232e+03  -0.016
## factor(Country)New Zealand                      -1.198e+00  4.507e-01  -2.659
## factor(Country)Nicaragua                         7.355e-01  3.727e-01   1.974
## factor(Country)Niger                            -1.837e+01  1.364e+03  -0.013
## factor(Country)Nigeria                          -2.529e+00  4.355e-01  -5.806
## factor(Country)North Korea                      -2.677e-02  4.130e-01  -0.065
## factor(Country)North Macedonia                   4.160e-01  4.934e-01   0.843
## factor(Country)Norway                           -3.179e-01  4.124e-01  -0.771
## factor(Country)Oman                              1.904e+01  1.494e+03   0.013
## factor(Country)Pakistan                         -1.819e+00  3.682e-01  -4.939
## factor(Country)Panama                            1.394e+00  3.790e-01   3.678
## factor(Country)Papua New Guinea                 -1.847e+01  1.579e+03  -0.012
## factor(Country)Paraguay                         -1.788e+00  5.906e-01  -3.028
## factor(Country)Peru                              2.329e-01  3.862e-01   0.603
## factor(Country)Philippines                       2.261e+00  4.003e-01   5.648
## factor(Country)Poland                           -1.808e+00  5.525e-01  -3.272
## factor(Country)Portugal                         -1.934e+00  5.569e-01  -3.474
## factor(Country)Qatar                             1.908e+01  1.381e+03   0.014
## factor(Country)Republic of the Congo            -1.821e+01  1.369e+03  -0.013
## factor(Country)Republic of the Gambia           -9.860e-01  3.752e-01  -2.628
## factor(Country)Romania                          -9.694e-01  4.603e-01  -2.106
## factor(Country)Russia                           -1.836e+01  1.233e+03  -0.015
## factor(Country)Rwanda                           -1.822e+01  1.391e+03  -0.013
## factor(Country)Saudi Arabia                      2.115e+01  1.230e+03   0.017
## factor(Country)Senegal                          -1.870e+01  1.370e+03  -0.014
## factor(Country)Serbia                           -1.848e+01  1.942e+03  -0.010
## factor(Country)Sierra Leone                     -2.096e+00  4.042e-01  -5.185
## factor(Country)Singapore                         2.326e-01  4.121e-01   0.564
## factor(Country)Slovakia                         -1.903e+01  2.017e+03  -0.009
## factor(Country)Slovenia                         -1.673e+00  6.882e-01  -2.431
## factor(Country)Solomon Islands                  -2.065e+01  1.629e+03  -0.013
## factor(Country)Somalia                          -1.817e+01  1.369e+03  -0.013
## factor(Country)South Africa                     -6.908e-01  3.680e-01  -1.877
## factor(Country)South Korea                      -2.278e+00  6.621e-01  -3.441
## factor(Country)South Sudan                      -2.053e+01  3.394e+03  -0.006
## factor(Country)Spain                            -1.245e+00  4.704e-01  -2.646
## factor(Country)Sri Lanka                        -8.495e-01  3.657e-01  -2.323
## factor(Country)Sudan                            -6.352e-01  3.588e-01  -1.770
## factor(Country)Suriname                         -1.878e+01  1.567e+03  -0.012
## factor(Country)Sweden                           -1.121e+00  4.455e-01  -2.518
## factor(Country)Switzerland                      -2.719e+00  6.726e-01  -4.042
## factor(Country)Syria                             6.507e-03  4.021e-01   0.016
## factor(Country)Taiwan                           -7.094e-01  4.417e-01  -1.606
## factor(Country)Tajikistan                       -1.823e+01  1.953e+03  -0.009
## factor(Country)Tanzania                         -1.850e+01  1.415e+03  -0.013
## factor(Country)Thailand                         -5.486e-01  4.356e-01  -1.259
## factor(Country)Timor-Leste                      -1.883e+01  2.458e+03  -0.008
## factor(Country)Togo                              5.326e-01  3.975e-01   1.340
## factor(Country)Trinidad and Tobago              -2.145e+00  3.994e-01  -5.370
## factor(Country)Tunisia                          -1.835e+01  1.315e+03  -0.014
## factor(Country)Turkey                           -1.278e+00  4.983e-01  -2.564
## factor(Country)Turkmenistan                     -1.808e+01  1.952e+03  -0.009
## factor(Country)Uganda                           -2.703e+00  4.604e-01  -5.872
## factor(Country)Ukraine                          -1.844e+01  1.951e+03  -0.009
## factor(Country)United Arab Emirates              1.908e+01  1.512e+03   0.013
## factor(Country)United Kingdom                   -6.018e-01  4.204e-01  -1.432
## factor(Country)United States of America         -2.533e+00  3.902e-01  -6.492
## factor(Country)Uruguay                          -4.529e-01  4.147e-01  -1.092
## factor(Country)Uzbekistan                       -1.816e+01  1.953e+03  -0.009
## factor(Country)Venezuela                        -5.726e-02  3.967e-01  -0.144
## factor(Country)Vietnam                          -1.811e+01  1.595e+03  -0.011
## factor(Country)Yemen                                    NA         NA      NA
## factor(Country)Zambia                           -2.058e+01  1.412e+03  -0.015
##                                                 Pr(>|z|)    
## (Intercept)                                     0.004007 ** 
## dictatorship                                    0.075706 .  
## v2x_polyarchy                                   2.69e-08 ***
## former_british_colony                           1.56e-08 ***
## factor(Year)1947                                0.814725    
## factor(Year)1948                                0.716477    
## factor(Year)1949                                0.847929    
## factor(Year)1950                                0.662611    
## factor(Year)1951                                0.788003    
## factor(Year)1952                                0.530524    
## factor(Year)1953                                0.508741    
## factor(Year)1954                                0.796596    
## factor(Year)1955                                0.670052    
## factor(Year)1956                                0.766923    
## factor(Year)1957                                0.771763    
## factor(Year)1958                                0.490328    
## factor(Year)1959                                0.276267    
## factor(Year)1960                                0.121119    
## factor(Year)1961                                0.109276    
## factor(Year)1962                                0.153206    
## factor(Year)1963                                0.190867    
## factor(Year)1964                                0.231188    
## factor(Year)1965                                0.411427    
## factor(Year)1966                                0.783658    
## factor(Year)1967                                0.568571    
## factor(Year)1968                                0.133934    
## factor(Year)1969                                0.134217    
## factor(Year)1970                                0.058696 .  
## factor(Year)1971                                0.223112    
## factor(Year)1972                                0.133108    
## factor(Year)1973                                0.098896 .  
## factor(Year)1974                                0.226484    
## factor(Year)1975                                0.521326    
## factor(Year)1976                                0.357036    
## factor(Year)1977                                0.188433    
## factor(Year)1978                                0.230646    
## factor(Year)1979                                0.128341    
## factor(Year)1980                                0.328601    
## factor(Year)1981                                0.063148 .  
## factor(Year)1982                                0.062546 .  
## factor(Year)1983                                0.154603    
## factor(Year)1984                                0.142678    
## factor(Year)1985                                0.052893 .  
## factor(Year)1986                                0.035819 *  
## factor(Year)1987                                0.034108 *  
## factor(Year)1988                                0.022206 *  
## factor(Year)1989                                0.022471 *  
## factor(Year)1990                                0.037193 *  
## factor(Year)1991                                0.031668 *  
## factor(Year)1992                                0.012840 *  
## factor(Year)1993                                0.017002 *  
## factor(Year)1994                                0.017563 *  
## factor(Year)1995                                0.010753 *  
## factor(Year)1996                                0.022504 *  
## factor(Year)1997                                0.040184 *  
## factor(Year)1998                                0.012932 *  
## factor(Year)1999                                0.038282 *  
## factor(Year)2000                                0.026710 *  
## factor(Year)2001                                0.123247    
## factor(Year)2002                                0.047979 *  
## factor(Year)2003                                0.060819 .  
## factor(Year)2004                                0.083760 .  
## factor(Year)2005                                0.059914 .  
## factor(Year)2006                                0.172580    
## factor(Year)2007                                0.334433    
## factor(Year)2008                                0.388624    
## factor(Year)2009                                0.167873    
## factor(Year)2010                                0.388448    
## factor(Year)2011                                0.319830    
## factor(Year)2012                                0.213150    
## factor(Year)2013                                0.475297    
## factor(Year)2014                                0.565120    
## factor(Year)2015                                0.649339    
## factor(Year)2016                                0.175955    
## factor(Year)2017                                0.340263    
## factor(Year)2018                                0.109870    
## factor(Year)2019                                0.191062    
## factor(Year)2020                                0.197905    
## factor(Country)Albania                          0.916722    
## factor(Country)Algeria                          0.989534    
## factor(Country)Angola                           0.990794    
## factor(Country)Argentina                        0.740635    
## factor(Country)Armenia                          0.992482    
## factor(Country)Australia                        0.245765    
## factor(Country)Austria                          0.987584    
## factor(Country)Azerbaijan                       0.000203 ***
## factor(Country)Bahrain                          0.989965    
## factor(Country)Bangladesh                       6.33e-05 ***
## factor(Country)Barbados                         2.72e-10 ***
## factor(Country)Belarus                          0.992515    
## factor(Country)Belgium                          0.000280 ***
## factor(Country)Benin                            1.67e-07 ***
## factor(Country)Bhutan                           2.17e-12 ***
## factor(Country)Bosnia and Herzegovina           0.497510    
## factor(Country)Botswana                         3.23e-09 ***
## factor(Country)Brazil                           0.001702 ** 
## factor(Country)Bulgaria                         0.050262 .  
## factor(Country)Burkina Faso                     0.011147 *  
## factor(Country)Burundi                          0.087270 .  
## factor(Country)Cambodia                         3.81e-08 ***
## factor(Country)Cameroon                         0.989429    
## factor(Country)Canada                           0.665098    
## factor(Country)Cape Verde                       0.990450    
## factor(Country)Central African Republic         0.905212    
## factor(Country)Chad                             0.989360    
## factor(Country)Chile                            0.198883    
## factor(Country)China                            0.972702    
## factor(Country)Colombia                         0.028765 *  
## factor(Country)Costa Rica                       0.004987 ** 
## factor(Country)Croatia                          0.992182    
## factor(Country)Cuba                             0.366237    
## factor(Country)Cyprus                           4.04e-10 ***
## factor(Country)Czech Republic                   0.992457    
## factor(Country)Democratic Republic of the Congo 0.333979    
## factor(Country)Denmark                          0.987477    
## factor(Country)Djibouti                         0.001060 ** 
## factor(Country)Dominican Republic               0.104782    
## factor(Country)Ecuador                          0.337002    
## factor(Country)Egypt                            1.47e-11 ***
## factor(Country)El Salvador                      0.987967    
## factor(Country)Equatorial Guinea                1.78e-10 ***
## factor(Country)Eritrea                          0.992892    
## factor(Country)Estonia                          0.058019 .  
## factor(Country)Eswatini                         0.989730    
## factor(Country)Ethiopia                         0.026427 *  
## factor(Country)Fiji                             0.000356 ***
## factor(Country)Finland                          1.50e-07 ***
## factor(Country)France                           0.000280 ***
## factor(Country)Gabon                            0.509043    
## factor(Country)Georgia                          0.992377    
## factor(Country)Germany                          0.992062    
## factor(Country)Ghana                            2.26e-08 ***
## factor(Country)Greece                           0.051380 .  
## factor(Country)Guatemala                        0.062196 .  
## factor(Country)Guinea                           0.989223    
## factor(Country)Guinea-Bissau                    0.990589    
## factor(Country)Guyana                           6.67e-09 ***
## factor(Country)Haiti                            0.029456 *  
## factor(Country)Honduras                         0.043022 *  
## factor(Country)Hungary                          0.987874    
## factor(Country)Iceland                          0.382575    
## factor(Country)India                            6.48e-10 ***
## factor(Country)Indonesia                        0.003256 ** 
## factor(Country)Iran                             3.64e-05 ***
## factor(Country)Iraq                             2.40e-06 ***
## factor(Country)Ireland                          0.391836    
## factor(Country)Israel                            < 2e-16 ***
## factor(Country)Italy                            0.000128 ***
## factor(Country)Ivory Coast                      0.989220    
## factor(Country)Jamaica                          6.62e-07 ***
## factor(Country)Japan                            0.023862 *  
## factor(Country)Jordan                           0.987858    
## factor(Country)Kazakhstan                       0.992534    
## factor(Country)Kenya                            2.48e-09 ***
## factor(Country)Kuwait                           0.001132 ** 
## factor(Country)Kyrgyzstan                       0.992497    
## factor(Country)Laos                             1.04e-10 ***
## factor(Country)Latvia                           0.992239    
## factor(Country)Lebanon                          4.77e-07 ***
## factor(Country)Lesotho                          0.988484    
## factor(Country)Liberia                          0.001978 ** 
## factor(Country)Libya                            5.13e-05 ***
## factor(Country)Lithuania                        0.992228    
## factor(Country)Luxembourg                       0.987537    
## factor(Country)Madagascar                       0.989262    
## factor(Country)Malawi                           8.28e-10 ***
## factor(Country)Malaysia                         0.015493 *  
## factor(Country)Maldives                         0.704402    
## factor(Country)Mali                             0.780364    
## factor(Country)Malta                            5.59e-12 ***
## factor(Country)Mauritius                        3.43e-07 ***
## factor(Country)Mexico                           3.50e-05 ***
## factor(Country)Moldova                          0.992391    
## factor(Country)Mongolia                         0.987952    
## factor(Country)Montenegro                       0.994567    
## factor(Country)Morocco                          0.987398    
## factor(Country)Mozambique                       0.990621    
## factor(Country)Myanmar                          3.45e-11 ***
## factor(Country)Namibia                          0.992115    
## factor(Country)Nepal                            9.85e-11 ***
## factor(Country)Netherlands                      0.987590    
## factor(Country)New Zealand                      0.007844 ** 
## factor(Country)Nicaragua                        0.048436 *  
## factor(Country)Niger                            0.989255    
## factor(Country)Nigeria                          6.39e-09 ***
## factor(Country)North Korea                      0.948319    
## factor(Country)North Macedonia                  0.399195    
## factor(Country)Norway                           0.440799    
## factor(Country)Oman                             0.989832    
## factor(Country)Pakistan                         7.85e-07 ***
## factor(Country)Panama                           0.000235 ***
## factor(Country)Papua New Guinea                 0.990667    
## factor(Country)Paraguay                         0.002462 ** 
## factor(Country)Peru                             0.546451    
## factor(Country)Philippines                      1.62e-08 ***
## factor(Country)Poland                           0.001067 ** 
## factor(Country)Portugal                         0.000513 ***
## factor(Country)Qatar                            0.988981    
## factor(Country)Republic of the Congo            0.989391    
## factor(Country)Republic of the Gambia           0.008590 ** 
## factor(Country)Romania                          0.035177 *  
## factor(Country)Russia                           0.988120    
## factor(Country)Rwanda                           0.989551    
## factor(Country)Saudi Arabia                     0.986285    
## factor(Country)Senegal                          0.989112    
## factor(Country)Serbia                           0.992406    
## factor(Country)Sierra Leone                     2.16e-07 ***
## factor(Country)Singapore                        0.572445    
## factor(Country)Slovakia                         0.992472    
## factor(Country)Slovenia                         0.015048 *  
## factor(Country)Solomon Islands                  0.989888    
## factor(Country)Somalia                          0.989416    
## factor(Country)South Africa                     0.060489 .  
## factor(Country)South Korea                      0.000581 ***
## factor(Country)South Sudan                      0.995174    
## factor(Country)Spain                            0.008146 ** 
## factor(Country)Sri Lanka                        0.020164 *  
## factor(Country)Sudan                            0.076715 .  
## factor(Country)Suriname                         0.990438    
## factor(Country)Sweden                           0.011817 *  
## factor(Country)Switzerland                      5.30e-05 ***
## factor(Country)Syria                            0.987090    
## factor(Country)Taiwan                           0.108225    
## factor(Country)Tajikistan                       0.992554    
## factor(Country)Tanzania                         0.989566    
## factor(Country)Thailand                         0.207900    
## factor(Country)Timor-Leste                      0.993888    
## factor(Country)Togo                             0.180296    
## factor(Country)Trinidad and Tobago              7.88e-08 ***
## factor(Country)Tunisia                          0.988867    
## factor(Country)Turkey                           0.010346 *  
## factor(Country)Turkmenistan                     0.992609    
## factor(Country)Uganda                           4.31e-09 ***
## factor(Country)Ukraine                          0.992457    
## factor(Country)United Arab Emirates             0.989932    
## factor(Country)United Kingdom                   0.152232    
## factor(Country)United States of America         8.45e-11 ***
## factor(Country)Uruguay                          0.274824    
## factor(Country)Uzbekistan                       0.992581    
## factor(Country)Venezuela                        0.885228    
## factor(Country)Vietnam                          0.990943    
## factor(Country)Yemen                                  NA    
## factor(Country)Zambia                           0.988371    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11785  on 10242  degrees of freedom
## Residual deviance:  7073  on 10001  degrees of freedom
## AIC: 7557
## 
## Number of Fisher Scoring iterations: 18

3.2 Model 4: Using Dem_Type as the independent variable, with mixed (1) as the reference category

# Model 4: Using Dem_Type as the independent variable, with mixed (1) as the reference category
gdd_clean$Dem_Type <- factor(gdd_clean$Dem_Type, levels = c(1, 0, 2, 3))

model4 <- glm(dynastic ~ Dem_Type + v2x_polyarchy + former_british_colony + factor(Year) + factor(Country), data = gdd_clean, family = binomial(link = "logit"))
summary(model4)
## 
## Call:
## glm(formula = dynastic ~ Dem_Type + v2x_polyarchy + former_british_colony + 
##     factor(Year) + factor(Country), family = binomial(link = "logit"), 
##     data = gdd_clean)
## 
## Coefficients: (1 not defined because of singularities)
##                                                   Estimate Std. Error z value
## (Intercept)                                     -1.369e+00  4.826e-01  -2.837
## Dem_Type0                                        2.278e-01  2.147e-01   1.061
## Dem_Type2                                        2.323e-02  2.271e-01   0.102
## Dem_Type3                                       -3.911e-02  2.401e-01  -0.163
## v2x_polyarchy                                    1.632e+00  2.984e-01   5.468
## former_british_colony                            2.152e+00  3.808e-01   5.651
## factor(Year)1947                                 1.162e-01  4.542e-01   0.256
## factor(Year)1948                                -1.523e-01  4.527e-01  -0.336
## factor(Year)1949                                -7.146e-02  4.487e-01  -0.159
## factor(Year)1950                                -1.837e-01  4.516e-01  -0.407
## factor(Year)1951                                 1.385e-01  4.410e-01   0.314
## factor(Year)1952                                 2.968e-01  4.382e-01   0.677
## factor(Year)1953                                 3.118e-01  4.365e-01   0.714
## factor(Year)1954                                 2.198e-01  4.380e-01   0.502
## factor(Year)1955                                 2.937e-01  4.371e-01   0.672
## factor(Year)1956                                -2.269e-02  4.406e-01  -0.051
## factor(Year)1957                                -1.926e-02  4.367e-01  -0.044
## factor(Year)1958                                -1.968e-01  4.401e-01  -0.447
## factor(Year)1959                                -3.764e-01  4.444e-01  -0.847
## factor(Year)1960                                -5.720e-01  4.386e-01  -1.304
## factor(Year)1961                                -5.915e-01  4.371e-01  -1.353
## factor(Year)1962                                -5.066e-01  4.301e-01  -1.178
## factor(Year)1963                                -4.512e-01  4.270e-01  -1.057
## factor(Year)1964                                -4.012e-01  4.246e-01  -0.945
## factor(Year)1965                                -2.370e-01  4.176e-01  -0.567
## factor(Year)1966                                -8.769e-03  4.117e-01  -0.021
## factor(Year)1967                                -1.306e-01  4.137e-01  -0.316
## factor(Year)1968                                -5.229e-01  4.205e-01  -1.244
## factor(Year)1969                                -5.230e-01  4.207e-01  -1.243
## factor(Year)1970                                -6.932e-01  4.240e-01  -1.635
## factor(Year)1971                                -3.996e-01  4.151e-01  -0.963
## factor(Year)1972                                -5.206e-01  4.177e-01  -1.246
## factor(Year)1973                                -5.852e-01  4.197e-01  -1.394
## factor(Year)1974                                -3.960e-01  4.152e-01  -0.954
## factor(Year)1975                                -1.586e-01  4.108e-01  -0.386
## factor(Year)1976                                -2.745e-01  4.129e-01  -0.665
## factor(Year)1977                                -4.392e-01  4.148e-01  -1.059
## factor(Year)1978                                -3.907e-01  4.138e-01  -0.944
## factor(Year)1979                                -5.272e-01  4.164e-01  -1.266
## factor(Year)1980                                -2.972e-01  4.113e-01  -0.722
## factor(Year)1981                                -6.727e-01  4.193e-01  -1.605
## factor(Year)1982                                -6.769e-01  4.190e-01  -1.615
## factor(Year)1983                                -4.881e-01  4.146e-01  -1.177
## factor(Year)1984                                -5.057e-01  4.147e-01  -1.219
## factor(Year)1985                                -7.075e-01  4.190e-01  -1.689
## factor(Year)1986                                -7.765e-01  4.201e-01  -1.849
## factor(Year)1987                                -7.855e-01  4.205e-01  -1.868
## factor(Year)1988                                -8.602e-01  4.225e-01  -2.036
## factor(Year)1989                                -8.583e-01  4.222e-01  -2.033
## factor(Year)1990                                -7.676e-01  4.184e-01  -1.835
## factor(Year)1991                                -7.891e-01  4.169e-01  -1.893
## factor(Year)1992                                -9.389e-01  4.205e-01  -2.233
## factor(Year)1993                                -8.928e-01  4.188e-01  -2.132
## factor(Year)1994                                -8.870e-01  4.186e-01  -2.119
## factor(Year)1995                                -9.647e-01  4.205e-01  -2.294
## factor(Year)1996                                -8.452e-01  4.172e-01  -2.026
## factor(Year)1997                                -7.446e-01  4.146e-01  -1.796
## factor(Year)1998                                -9.347e-01  4.193e-01  -2.229
## factor(Year)1999                                -7.529e-01  4.148e-01  -1.815
## factor(Year)2000                                -8.154e-01  4.161e-01  -1.959
## factor(Year)2001                                -5.279e-01  4.101e-01  -1.287
## factor(Year)2002                                -7.128e-01  4.139e-01  -1.722
## factor(Year)2003                                -6.689e-01  4.130e-01  -1.620
## factor(Year)2004                                -6.071e-01  4.117e-01  -1.475
## factor(Year)2005                                -6.717e-01  4.131e-01  -1.626
## factor(Year)2006                                -4.542e-01  4.093e-01  -1.110
## factor(Year)2007                                -2.909e-01  4.070e-01  -0.715
## factor(Year)2008                                -2.491e-01  4.070e-01  -0.612
## factor(Year)2009                                -4.614e-01  4.102e-01  -1.125
## factor(Year)2010                                -2.486e-01  4.072e-01  -0.611
## factor(Year)2011                                -3.027e-01  4.079e-01  -0.742
## factor(Year)2012                                -4.057e-01  4.093e-01  -0.991
## factor(Year)2013                                -1.883e-01  4.062e-01  -0.464
## factor(Year)2014                                -1.324e-01  4.058e-01  -0.326
## factor(Year)2015                                -8.356e-02  4.056e-01  -0.206
## factor(Year)2016                                -5.011e-01  4.115e-01  -1.218
## factor(Year)2017                                -3.337e-01  4.090e-01  -0.816
## factor(Year)2018                                -6.058e-01  4.133e-01  -1.466
## factor(Year)2019                                -4.821e-01  4.109e-01  -1.173
## factor(Year)2020                                -4.735e-01  4.106e-01  -1.153
## factor(Country)Albania                          -1.072e+00  6.831e-01  -1.569
## factor(Country)Algeria                          -1.828e+01  1.511e+03  -0.012
## factor(Country)Angola                           -1.812e+01  1.664e+03  -0.011
## factor(Country)Argentina                         1.188e-01  3.952e-01   0.301
## factor(Country)Armenia                          -1.837e+01  1.951e+03  -0.009
## factor(Country)Australia                         5.184e-01  4.220e-01   1.229
## factor(Country)Austria                          -1.916e+01  1.233e+03  -0.016
## factor(Country)Azerbaijan                        1.749e+00  4.715e-01   3.711
## factor(Country)Bahrain                           1.898e+01  1.509e+03   0.013
## factor(Country)Bangladesh                        1.648e+00  4.117e-01   4.003
## factor(Country)Barbados                         -2.715e+00  4.546e-01  -5.972
## factor(Country)Belarus                          -1.837e+01  1.958e+03  -0.009
## factor(Country)Belgium                          -1.821e+00  5.293e-01  -3.440
## factor(Country)Benin                             2.124e+00  4.106e-01   5.173
## factor(Country)Bhutan                            2.904e+00  4.134e-01   7.024
## factor(Country)Bosnia and Herzegovina           -3.591e-01  5.333e-01  -0.673
## factor(Country)Botswana                         -2.516e+00  4.577e-01  -5.497
## factor(Country)Brazil                           -1.655e+00  5.286e-01  -3.130
## factor(Country)Bulgaria                         -8.732e-01  4.556e-01  -1.916
## factor(Country)Burkina Faso                     -1.408e+00  5.533e-01  -2.544
## factor(Country)Burundi                           6.719e-01  4.006e-01   1.677
## factor(Country)Cambodia                          2.145e+00  3.912e-01   5.481
## factor(Country)Cameroon                         -1.830e+01  1.381e+03  -0.013
## factor(Country)Canada                           -1.264e-01  4.243e-01  -0.298
## factor(Country)Cape Verde                       -1.873e+01  1.567e+03  -0.012
## factor(Country)Central African Republic          3.998e-02  4.254e-01   0.094
## factor(Country)Chad                             -1.824e+01  1.367e+03  -0.013
## factor(Country)Chile                            -5.498e-01  4.255e-01  -1.292
## factor(Country)China                             1.438e-02  4.065e-01   0.035
## factor(Country)Colombia                          8.173e-01  3.906e-01   2.093
## factor(Country)Costa Rica                        1.123e+00  4.149e-01   2.707
## factor(Country)Croatia                          -1.880e+01  1.920e+03  -0.010
## factor(Country)Cuba                             -3.825e-01  4.276e-01  -0.895
## factor(Country)Cyprus                           -2.585e+00  4.163e-01  -6.209
## factor(Country)Czech Republic                   -1.907e+01  2.022e+03  -0.009
## factor(Country)Democratic Republic of the Congo  3.843e-01  4.052e-01   0.949
## factor(Country)Denmark                          -1.924e+01  1.230e+03  -0.016
## factor(Country)Djibouti                          1.359e+00  4.165e-01   3.263
## factor(Country)Dominican Republic               -7.262e-01  4.449e-01  -1.632
## factor(Country)Ecuador                          -4.049e-01  4.153e-01  -0.975
## factor(Country)Egypt                            -3.189e+00  4.729e-01  -6.744
## factor(Country)El Salvador                      -1.847e+01  1.225e+03  -0.015
## factor(Country)Equatorial Guinea                 2.821e+00  4.434e-01   6.361
## factor(Country)Eritrea                          -1.803e+01  2.024e+03  -0.009
## factor(Country)Estonia                          -1.066e+00  6.009e-01  -1.774
## factor(Country)Eswatini                          1.892e+01  1.471e+03   0.013
## factor(Country)Ethiopia                          8.270e-01  3.720e-01   2.223
## factor(Country)Fiji                             -1.388e+00  3.894e-01  -3.564
## factor(Country)Finland                          -3.505e+00  6.903e-01  -5.078
## factor(Country)France                           -1.860e+00  5.415e-01  -3.435
## factor(Country)Gabon                            -2.970e-01  4.401e-01  -0.675
## factor(Country)Georgia                          -1.857e+01  1.946e+03  -0.010
## factor(Country)Germany                          -1.907e+01  1.921e+03  -0.010
## factor(Country)Ghana                            -2.224e+00  3.977e-01  -5.591
## factor(Country)Greece                            7.745e-01  3.889e-01   1.992
## factor(Country)Guatemala                        -8.764e-01  4.683e-01  -1.871
## factor(Country)Guinea                           -1.822e+01  1.348e+03  -0.014
## factor(Country)Guinea-Bissau                    -1.831e+01  1.551e+03  -0.012
## factor(Country)Guyana                           -4.463e+00  7.690e-01  -5.804
## factor(Country)Haiti                             8.096e-01  3.713e-01   2.181
## factor(Country)Honduras                         -9.744e-01  4.792e-01  -2.034
## factor(Country)Hungary                          -1.857e+01  1.225e+03  -0.015
## factor(Country)Iceland                          -3.494e-01  4.452e-01  -0.785
## factor(Country)India                            -2.337e+00  4.062e-01  -5.752
## factor(Country)Indonesia                        -1.624e+00  5.506e-01  -2.949
## factor(Country)Iran                              1.518e+00  3.679e-01   4.127
## factor(Country)Iraq                             -1.698e+00  3.605e-01  -4.711
## factor(Country)Ireland                          -3.420e-01  4.447e-01  -0.769
## factor(Country)Israel                           -4.636e+00  5.221e-01  -8.879
## factor(Country)Italy                            -2.112e+00  5.778e-01  -3.656
## factor(Country)Ivory Coast                      -1.842e+01  1.375e+03  -0.013
## factor(Country)Jamaica                          -1.925e+00  4.107e-01  -4.688
## factor(Country)Japan                             9.589e-01  4.219e-01   2.273
## factor(Country)Jordan                            1.873e+01  1.232e+03   0.015
## factor(Country)Kazakhstan                       -1.830e+01  1.955e+03  -0.009
## factor(Country)Kenya                            -2.767e+00  4.633e-01  -5.972
## factor(Country)Kuwait                            2.099e+00  6.463e-01   3.248
## factor(Country)Kyrgyzstan                       -1.835e+01  1.951e+03  -0.009
## factor(Country)Laos                              2.609e+00  4.051e-01   6.440
## factor(Country)Latvia                           -1.892e+01  1.950e+03  -0.010
## factor(Country)Lebanon                           1.960e+00  3.887e-01   5.043
## factor(Country)Lesotho                          -2.060e+01  1.429e+03  -0.014
## factor(Country)Liberia                           1.145e+00  3.708e-01   3.089
## factor(Country)Libya                            -1.474e+00  3.628e-01  -4.063
## factor(Country)Lithuania                        -1.901e+01  1.952e+03  -0.010
## factor(Country)Luxembourg                       -1.917e+01  1.232e+03  -0.016
## factor(Country)Madagascar                       -1.840e+01  1.367e+03  -0.013
## factor(Country)Malawi                           -3.313e+00  5.392e-01  -6.145
## factor(Country)Malaysia                          9.198e-01  3.840e-01   2.395
## factor(Country)Maldives                         -1.527e-01  3.836e-01  -0.398
## factor(Country)Mali                             -1.234e-01  4.361e-01  -0.283
## factor(Country)Malta                            -3.259e+00  4.954e-01  -6.578
## factor(Country)Mauritius                        -2.039e+00  4.276e-01  -4.769
## factor(Country)Mexico                            1.562e+00  3.790e-01   4.121
## factor(Country)Moldova                          -1.854e+01  1.948e+03  -0.010
## factor(Country)Mongolia                         -1.855e+01  1.230e+03  -0.015
## factor(Country)Montenegro                       -1.887e+01  2.772e+03  -0.007
## factor(Country)Morocco                           2.094e+01  1.327e+03   0.016
## factor(Country)Mozambique                       -1.839e+01  1.565e+03  -0.012
## factor(Country)Myanmar                          -3.523e+00  5.337e-01  -6.601
## factor(Country)Namibia                          -1.895e+01  1.918e+03  -0.010
## factor(Country)Nepal                             2.620e+00  4.054e-01   6.462
## factor(Country)Netherlands                      -1.912e+01  1.233e+03  -0.016
## factor(Country)New Zealand                      -1.147e+00  4.666e-01  -2.458
## factor(Country)Nicaragua                         7.280e-01  3.743e-01   1.945
## factor(Country)Niger                            -1.837e+01  1.365e+03  -0.013
## factor(Country)Nigeria                          -2.538e+00  4.368e-01  -5.811
## factor(Country)North Korea                      -2.925e-02  4.128e-01  -0.071
## factor(Country)North Macedonia                   4.197e-01  5.223e-01   0.804
## factor(Country)Norway                           -2.676e-01  4.297e-01  -0.623
## factor(Country)Oman                              1.903e+01  1.494e+03   0.013
## factor(Country)Pakistan                         -1.796e+00  3.730e-01  -4.816
## factor(Country)Panama                            1.381e+00  3.835e-01   3.602
## factor(Country)Papua New Guinea                 -1.843e+01  1.579e+03  -0.012
## factor(Country)Paraguay                         -1.794e+00  5.918e-01  -3.031
## factor(Country)Peru                              2.240e-01  3.900e-01   0.574
## factor(Country)Philippines                       2.247e+00  4.044e-01   5.557
## factor(Country)Poland                           -1.801e+00  5.597e-01  -3.218
## factor(Country)Portugal                         -1.927e+00  5.694e-01  -3.384
## factor(Country)Qatar                             1.907e+01  1.381e+03   0.014
## factor(Country)Republic of the Congo            -1.821e+01  1.369e+03  -0.013
## factor(Country)Republic of the Gambia           -9.898e-01  3.752e-01  -2.638
## factor(Country)Romania                          -9.639e-01  4.667e-01  -2.065
## factor(Country)Russia                           -1.835e+01  1.233e+03  -0.015
## factor(Country)Rwanda                           -1.823e+01  1.391e+03  -0.013
## factor(Country)Saudi Arabia                      2.115e+01  1.231e+03   0.017
## factor(Country)Senegal                          -1.871e+01  1.371e+03  -0.014
## factor(Country)Serbia                           -1.845e+01  1.943e+03  -0.009
## factor(Country)Sierra Leone                     -2.104e+00  4.052e-01  -5.192
## factor(Country)Singapore                         2.279e-01  4.121e-01   0.553
## factor(Country)Slovakia                         -1.902e+01  2.017e+03  -0.009
## factor(Country)Slovenia                         -1.639e+00  6.933e-01  -2.364
## factor(Country)Solomon Islands                  -2.060e+01  1.629e+03  -0.013
## factor(Country)Somalia                          -1.817e+01  1.370e+03  -0.013
## factor(Country)South Africa                     -6.679e-01  3.715e-01  -1.798
## factor(Country)South Korea                      -2.286e+00  6.634e-01  -3.446
## factor(Country)South Sudan                      -2.052e+01  3.393e+03  -0.006
## factor(Country)Spain                            -1.210e+00  4.777e-01  -2.533
## factor(Country)Sri Lanka                        -8.400e-01  3.673e-01  -2.287
## factor(Country)Sudan                            -6.313e-01  3.603e-01  -1.752
## factor(Country)Suriname                         -1.879e+01  1.567e+03  -0.012
## factor(Country)Sweden                           -1.070e+00  4.615e-01  -2.319
## factor(Country)Switzerland                      -2.730e+00  6.785e-01  -4.024
## factor(Country)Syria                             7.437e-03  4.025e-01   0.018
## factor(Country)Taiwan                           -7.071e-01  4.468e-01  -1.583
## factor(Country)Tajikistan                       -1.823e+01  1.953e+03  -0.009
## factor(Country)Tanzania                         -1.851e+01  1.415e+03  -0.013
## factor(Country)Thailand                         -5.296e-01  4.386e-01  -1.207
## factor(Country)Timor-Leste                      -1.882e+01  2.458e+03  -0.008
## factor(Country)Togo                              5.261e-01  3.974e-01   1.324
## factor(Country)Trinidad and Tobago              -2.102e+00  4.188e-01  -5.018
## factor(Country)Tunisia                          -1.836e+01  1.315e+03  -0.014
## factor(Country)Turkey                           -1.272e+00  5.208e-01  -2.442
## factor(Country)Turkmenistan                     -1.809e+01  1.953e+03  -0.009
## factor(Country)Uganda                           -2.710e+00  4.604e-01  -5.886
## factor(Country)Ukraine                          -1.844e+01  1.951e+03  -0.009
## factor(Country)United Arab Emirates              1.908e+01  1.512e+03   0.013
## factor(Country)United Kingdom                   -5.512e-01  4.375e-01  -1.260
## factor(Country)United States of America         -2.544e+00  4.001e-01  -6.357
## factor(Country)Uruguay                          -4.629e-01  4.227e-01  -1.095
## factor(Country)Uzbekistan                       -1.816e+01  1.953e+03  -0.009
## factor(Country)Venezuela                        -7.195e-02  4.031e-01  -0.178
## factor(Country)Vietnam                          -1.812e+01  1.596e+03  -0.011
## factor(Country)Yemen                                    NA         NA      NA
## factor(Country)Zambia                           -2.059e+01  1.412e+03  -0.015
##                                                 Pr(>|z|)    
## (Intercept)                                     0.004554 ** 
## Dem_Type0                                       0.288697    
## Dem_Type2                                       0.918538    
## Dem_Type3                                       0.870569    
## v2x_polyarchy                                   4.54e-08 ***
## former_british_colony                           1.59e-08 ***
## factor(Year)1947                                0.798028    
## factor(Year)1948                                0.736610    
## factor(Year)1949                                0.873469    
## factor(Year)1950                                0.684141    
## factor(Year)1951                                0.753401    
## factor(Year)1952                                0.498273    
## factor(Year)1953                                0.475075    
## factor(Year)1954                                0.615847    
## factor(Year)1955                                0.501676    
## factor(Year)1956                                0.958928    
## factor(Year)1957                                0.964831    
## factor(Year)1958                                0.654740    
## factor(Year)1959                                0.396928    
## factor(Year)1960                                0.192137    
## factor(Year)1961                                0.175934    
## factor(Year)1962                                0.238803    
## factor(Year)1963                                0.290674    
## factor(Year)1964                                0.344699    
## factor(Year)1965                                0.570380    
## factor(Year)1966                                0.983005    
## factor(Year)1967                                0.752185    
## factor(Year)1968                                0.213640    
## factor(Year)1969                                0.213852    
## factor(Year)1970                                0.102072    
## factor(Year)1971                                0.335633    
## factor(Year)1972                                0.212656    
## factor(Year)1973                                0.163239    
## factor(Year)1974                                0.340161    
## factor(Year)1975                                0.699469    
## factor(Year)1976                                0.506134    
## factor(Year)1977                                0.289679    
## factor(Year)1978                                0.345094    
## factor(Year)1979                                0.205479    
## factor(Year)1980                                0.469999    
## factor(Year)1981                                0.108586    
## factor(Year)1982                                0.106205    
## factor(Year)1983                                0.239091    
## factor(Year)1984                                0.222708    
## factor(Year)1985                                0.091291 .  
## factor(Year)1986                                0.064525 .  
## factor(Year)1987                                0.061722 .  
## factor(Year)1988                                0.041724 *  
## factor(Year)1989                                0.042057 *  
## factor(Year)1990                                0.066556 .  
## factor(Year)1991                                0.058356 .  
## factor(Year)1992                                0.025538 *  
## factor(Year)1993                                0.033038 *  
## factor(Year)1994                                0.034112 *  
## factor(Year)1995                                0.021796 *  
## factor(Year)1996                                0.042745 *  
## factor(Year)1997                                0.072499 .  
## factor(Year)1998                                0.025812 *  
## factor(Year)1999                                0.069474 .  
## factor(Year)2000                                0.050064 .  
## factor(Year)2001                                0.197986    
## factor(Year)2002                                0.085018 .  
## factor(Year)2003                                0.105313    
## factor(Year)2004                                0.140301    
## factor(Year)2005                                0.103997    
## factor(Year)2006                                0.267138    
## factor(Year)2007                                0.474752    
## factor(Year)2008                                0.540513    
## factor(Year)2009                                0.260641    
## factor(Year)2010                                0.541468    
## factor(Year)2011                                0.457931    
## factor(Year)2012                                0.321516    
## factor(Year)2013                                0.643000    
## factor(Year)2014                                0.744176    
## factor(Year)2015                                0.836777    
## factor(Year)2016                                0.223393    
## factor(Year)2017                                0.414605    
## factor(Year)2018                                0.142671    
## factor(Year)2019                                0.240718    
## factor(Year)2020                                0.248870    
## factor(Country)Albania                          0.116597    
## factor(Country)Algeria                          0.990345    
## factor(Country)Angola                           0.991309    
## factor(Country)Argentina                        0.763699    
## factor(Country)Armenia                          0.992489    
## factor(Country)Australia                        0.219241    
## factor(Country)Austria                          0.987599    
## factor(Country)Azerbaijan                       0.000207 ***
## factor(Country)Bahrain                          0.989969    
## factor(Country)Bangladesh                       6.27e-05 ***
## factor(Country)Barbados                         2.34e-09 ***
## factor(Country)Belarus                          0.992515    
## factor(Country)Belgium                          0.000581 ***
## factor(Country)Benin                            2.30e-07 ***
## factor(Country)Bhutan                           2.16e-12 ***
## factor(Country)Bosnia and Herzegovina           0.500692    
## factor(Country)Botswana                         3.86e-08 ***
## factor(Country)Brazil                           0.001747 ** 
## factor(Country)Bulgaria                         0.055319 .  
## factor(Country)Burkina Faso                     0.010956 *  
## factor(Country)Burundi                          0.093507 .  
## factor(Country)Cambodia                         4.22e-08 ***
## factor(Country)Cameroon                         0.989426    
## factor(Country)Canada                           0.765804    
## factor(Country)Cape Verde                       0.990462    
## factor(Country)Central African Republic         0.925126    
## factor(Country)Chad                             0.989357    
## factor(Country)Chile                            0.196357    
## factor(Country)China                            0.971777    
## factor(Country)Colombia                         0.036376 *  
## factor(Country)Costa Rica                       0.006781 ** 
## factor(Country)Croatia                          0.992187    
## factor(Country)Cuba                             0.371011    
## factor(Country)Cyprus                           5.34e-10 ***
## factor(Country)Czech Republic                   0.992476    
## factor(Country)Democratic Republic of the Congo 0.342874    
## factor(Country)Denmark                          0.987521    
## factor(Country)Djibouti                         0.001101 ** 
## factor(Country)Dominican Republic               0.102593    
## factor(Country)Ecuador                          0.329571    
## factor(Country)Egypt                            1.54e-11 ***
## factor(Country)El Salvador                      0.987973    
## factor(Country)Equatorial Guinea                2.00e-10 ***
## factor(Country)Eritrea                          0.992891    
## factor(Country)Estonia                          0.075981 .  
## factor(Country)Eswatini                         0.989733    
## factor(Country)Ethiopia                         0.026187 *  
## factor(Country)Fiji                             0.000366 ***
## factor(Country)Finland                          3.81e-07 ***
## factor(Country)France                           0.000593 ***
## factor(Country)Gabon                            0.499852    
## factor(Country)Georgia                          0.992385    
## factor(Country)Germany                          0.992082    
## factor(Country)Ghana                            2.25e-08 ***
## factor(Country)Greece                           0.046417 *  
## factor(Country)Guatemala                        0.061301 .  
## factor(Country)Guinea                           0.989214    
## factor(Country)Guinea-Bissau                    0.990585    
## factor(Country)Guyana                           6.48e-09 ***
## factor(Country)Haiti                            0.029208 *  
## factor(Country)Honduras                         0.041996 *  
## factor(Country)Hungary                          0.987906    
## factor(Country)Iceland                          0.432611    
## factor(Country)India                            8.83e-09 ***
## factor(Country)Indonesia                        0.003184 ** 
## factor(Country)Iran                             3.67e-05 ***
## factor(Country)Iraq                             2.46e-06 ***
## factor(Country)Ireland                          0.441864    
## factor(Country)Israel                            < 2e-16 ***
## factor(Country)Italy                            0.000256 ***
## factor(Country)Ivory Coast                      0.989308    
## factor(Country)Jamaica                          2.76e-06 ***
## factor(Country)Japan                            0.023041 *  
## factor(Country)Jordan                           0.987866    
## factor(Country)Kazakhstan                       0.992534    
## factor(Country)Kenya                            2.35e-09 ***
## factor(Country)Kuwait                           0.001162 ** 
## factor(Country)Kyrgyzstan                       0.992498    
## factor(Country)Laos                             1.20e-10 ***
## factor(Country)Latvia                           0.992259    
## factor(Country)Lebanon                          4.59e-07 ***
## factor(Country)Lesotho                          0.988497    
## factor(Country)Liberia                          0.002010 ** 
## factor(Country)Libya                            4.85e-05 ***
## factor(Country)Lithuania                        0.992232    
## factor(Country)Luxembourg                       0.987579    
## factor(Country)Madagascar                       0.989260    
## factor(Country)Malawi                           8.01e-10 ***
## factor(Country)Malaysia                         0.016614 *  
## factor(Country)Maldives                         0.690576    
## factor(Country)Mali                             0.777124    
## factor(Country)Malta                            4.77e-11 ***
## factor(Country)Mauritius                        1.85e-06 ***
## factor(Country)Mexico                           3.78e-05 ***
## factor(Country)Moldova                          0.992408    
## factor(Country)Mongolia                         0.987964    
## factor(Country)Montenegro                       0.994567    
## factor(Country)Morocco                          0.987405    
## factor(Country)Mozambique                       0.990622    
## factor(Country)Myanmar                          4.08e-11 ***
## factor(Country)Namibia                          0.992118    
## factor(Country)Nepal                            1.03e-10 ***
## factor(Country)Netherlands                      0.987630    
## factor(Country)New Zealand                      0.013980 *  
## factor(Country)Nicaragua                        0.051756 .  
## factor(Country)Niger                            0.989259    
## factor(Country)Nigeria                          6.20e-09 ***
## factor(Country)North Korea                      0.943515    
## factor(Country)North Macedonia                  0.421570    
## factor(Country)Norway                           0.533516    
## factor(Country)Oman                             0.989838    
## factor(Country)Pakistan                         1.47e-06 ***
## factor(Country)Panama                           0.000316 ***
## factor(Country)Papua New Guinea                 0.990686    
## factor(Country)Paraguay                         0.002440 ** 
## factor(Country)Peru                             0.565685    
## factor(Country)Philippines                      2.75e-08 ***
## factor(Country)Poland                           0.001289 ** 
## factor(Country)Portugal                         0.000715 ***
## factor(Country)Qatar                            0.988986    
## factor(Country)Republic of the Congo            0.989386    
## factor(Country)Republic of the Gambia           0.008340 ** 
## factor(Country)Romania                          0.038907 *  
## factor(Country)Russia                           0.988128    
## factor(Country)Rwanda                           0.989547    
## factor(Country)Saudi Arabia                     0.986297    
## factor(Country)Senegal                          0.989111    
## factor(Country)Serbia                           0.992423    
## factor(Country)Sierra Leone                     2.08e-07 ***
## factor(Country)Singapore                        0.580300    
## factor(Country)Slovakia                         0.992477    
## factor(Country)Slovenia                         0.018085 *  
## factor(Country)Solomon Islands                  0.989912    
## factor(Country)Somalia                          0.989419    
## factor(Country)South Africa                     0.072189 .  
## factor(Country)South Korea                      0.000569 ***
## factor(Country)South Sudan                      0.995174    
## factor(Country)Spain                            0.011299 *  
## factor(Country)Sri Lanka                        0.022185 *  
## factor(Country)Sudan                            0.079789 .  
## factor(Country)Suriname                         0.990431    
## factor(Country)Sweden                           0.020403 *  
## factor(Country)Switzerland                      5.73e-05 ***
## factor(Country)Syria                            0.985259    
## factor(Country)Taiwan                           0.113488    
## factor(Country)Tajikistan                       0.992552    
## factor(Country)Tanzania                         0.989564    
## factor(Country)Thailand                         0.227258    
## factor(Country)Timor-Leste                      0.993891    
## factor(Country)Togo                             0.185521    
## factor(Country)Trinidad and Tobago              5.21e-07 ***
## factor(Country)Tunisia                          0.988859    
## factor(Country)Turkey                           0.014621 *  
## factor(Country)Turkmenistan                     0.992608    
## factor(Country)Uganda                           3.95e-09 ***
## factor(Country)Ukraine                          0.992458    
## factor(Country)United Arab Emirates             0.989937    
## factor(Country)United Kingdom                   0.207712    
## factor(Country)United States of America         2.06e-10 ***
## factor(Country)Uruguay                          0.273397    
## factor(Country)Uzbekistan                       0.992581    
## factor(Country)Venezuela                        0.858335    
## factor(Country)Vietnam                          0.990940    
## factor(Country)Yemen                                  NA    
## factor(Country)Zambia                           0.988366    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11724.1  on 10186  degrees of freedom
## Residual deviance:  7021.8  on  9943  degrees of freedom
##   (56 observations deleted due to missingness)
## AIC: 7509.8
## 
## Number of Fisher Scoring iterations: 18

4 Dynastic Rule and Democracy (based on Predicted probabilites)

4.1 Predicted Probability of Dynastic Leadership and Other IVs (Some Plots)

## `geom_smooth()` using formula = 'y ~ x'

## `geom_smooth()` using formula = 'y ~ x'

## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 80 rows containing non-finite outside the scale range
## (`stat_smooth()`).

## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 80 rows containing non-finite outside the scale range
## (`stat_smooth()`).

## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1709 rows containing non-finite outside the scale range
## (`stat_smooth()`).

5 Boix’s Democracy Classification and Some Results

The results in this section are based on Boix’s definition of democracy and a defined cut-off. This will only include analysis for countries that are classified democracies according to the e_boix variable where Charles Boix classifies democracies/non democracies as 0 and 1. The Cut off Point we choose here for our analysis is to include all countries that have been democracies for at least 25% of their lifetime since 1945.

5.1 How do the Different Dynasts differ in Democracies?

Before we proceed, it is crucial to note that now we are also adding a variable based on the different types of dynasts we have already explained before in order to make the analysis a bit more nuanced. We are adding a variable called “dynast_type” to account for the categorical variation in the types of dynasts that we have. In this classification we have a pure non-dynast (0, no family before or after the said leader is in politics), dynasty-ender (1, definitely has a predecessor in politics but does not have a successor in politics), the DYNAST (2,definitely has a predecessor in politics may or may not have a successor in politics), Dynasty-former (3, does not have any family in politics preceding him/her but definitely leaves a successor in politics), and finally dynasty-sustainer (4, necessarily has both a predecessor and successor in politics). First we will look at some basic characteristic differences in thse kind of dynasts using a basic difference in mean test (education, Spell [the number of time a leader has been in office], tenure length, is also in business)

5.1.1 Comparisons Across All Categories

5.1.2 Comparisons Across Dynasts with predecessors/sucessors at the national level

5.2 The Relationship Between Polyarchy Scores (Level of Minimal Democracy) and Dynasticism (As a Continuous Variable)

Dynastic Variable (0/1) is recoded here as a continuous variable in terms of a dynastic score that varies between 0 and 1 to indicate that up until point t in time for a country i how long Dynastic rule has prevailed (Eg. 1970 in India would mean) TWO BASIC GRAPHS

## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                         Dynastic_Proportion    
## -----------------------------------------------
## v2x_polyarchy                -0.037***         
##                               (0.012)          
##                                                
## Constant                     0.222***          
##                               (0.008)          
##                                                
## -----------------------------------------------
## Observations                   6,300           
## R2                             0.001           
## Adjusted R2                    0.001           
## Residual Std. Error      0.267 (df = 6298)     
## F Statistic           9.090*** (df = 1; 6298)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                         Dynastic_Proportion    
## -----------------------------------------------
## v2x_polyarchy                0.121***          
##                               (0.024)          
##                                                
## log_gdp_percap               -0.021***         
##                               (0.003)          
##                                                
## v2xnp_regcorr                 0.033*           
##                               (0.018)          
##                                                
## v2caviol                     0.030***          
##                               (0.003)          
##                                                
## v2cademmob                   -0.026***         
##                               (0.004)          
##                                                
## Constant                     0.292***          
##                               (0.027)          
##                                                
## -----------------------------------------------
## Observations                   5,171           
## R2                             0.034           
## Adjusted R2                    0.033           
## Residual Std. Error      0.258 (df = 5165)     
## F Statistic          35.948*** (df = 5; 5165)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
## 
## =============================================
##                       Dependent variable:    
##                   ---------------------------
##                       Dynastic_Proportion    
## ---------------------------------------------
## v2x_polyarchy              -0.231**          
##                             (0.115)          
##                                              
## Constant                   -1.249***         
##                             (0.072)          
##                                              
## ---------------------------------------------
## Observations                 6,300           
## Log Likelihood            -2,678.418         
## Akaike Inf. Crit.          5,360.836         
## =============================================
## Note:             *p<0.1; **p<0.05; ***p<0.01

## 
## =============================================
##                       Dependent variable:    
##                   ---------------------------
##                       Dynastic_Proportion    
## ---------------------------------------------
## v2x_polyarchy              0.753***          
##                             (0.236)          
##                                              
## log_gdp_percap             -0.130***         
##                             (0.032)          
##                                              
## v2xnp_regcorr                0.209           
##                             (0.172)          
##                                              
## v2caviol                   0.180***          
##                             (0.031)          
##                                              
## v2cademmob                 -0.160***         
##                             (0.034)          
##                                              
## Constant                   -0.832***         
##                             (0.256)          
##                                              
## ---------------------------------------------
## Observations                 5,171           
## Log Likelihood            -2,175.392         
## Akaike Inf. Crit.          4,362.783         
## =============================================
## Note:             *p<0.1; **p<0.05; ***p<0.01

5.3 Corruption and Dynasticism

Corruption here is Regime Corruption borrowed from VDem and the specific variable details are:

5.4 Mean Polyarchy Scores in Democracies

6 Some Regressions (For democracies ONLY as classified before based on Boix classification and 25% cut-off)

This section covers some basic regressions treating Dynasticism as a DV against other other variables like democracy scores, regime corruption level, media censorship (v2mecenefm), clean elections (v2xel_frefair), former british colony. These are all fixed effects linear models with country and year fixed effects in place and the standard error is clustered at the country level.

6.1 Electoral Democracy and Dynasticism

Are democracies and dynastic leadership compatible (and are former British Colonies likely to be more dynastic?)?

## 
## Call:
##    felm(formula = dynastic ~ v2x_polyarchy + log_gdp_percap + v2xnp_regcorr +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.61677 -0.23364 -0.15015 -0.03872  1.10261 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)  
## v2x_polyarchy          0.28121      0.13089   2.148   0.0639 .
## log_gdp_percap         0.01809      0.01030   1.757   0.1170  
## v2xnp_regcorr          0.13432      0.06402   2.098   0.0692 .
## former_british_colony -0.02203      0.04320  -0.510   0.6238  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3951 on 5157 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.08259   Adjusted R-squared: 0.06978 
## Multiple R-squared(proj model): 0.01442   Adjusted R-squared: 0.0006563 
## F-statistic(full model, *iid*):6.448 on 72 and 5157 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 4.823 on 4 and 8 DF, p-value: 0.02826

This regression results seems to suggest that Dynasties and democracies have been historically compatible. Specifically, A one-unit increase in the electoral democracy score (v2x_polyarchy) is associated with a 33.1 percentage point increase in the probability of that polity being dynastic, according to a linear model probability design.

The significant positive relationship between electoral democracy and dynastic regimes suggests that higher levels of electoral democracy might coexist with dynastic regimes. However, the economic and corruption-related predictors, as well as the colonial history, do not show a significant impact on dynastic regimes in this model.

6.2 Dynasticism and Free and Fair Elections

Is dynastic leadership more likely to produce less free and fair elections?

## 
## Call:
##    felm(formula = v2xel_frefair ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.67449 -0.12838  0.01527  0.14418  0.54477 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.03801      0.01681   2.261   0.0536 .  
## log_gdp_percap         0.15603      0.01180  13.227 1.02e-06 ***
## former_british_colony  0.03811      0.02782   1.370   0.2079    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2071 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.5881   Adjusted R-squared: 0.5824 
## Multiple R-squared(proj model): 0.3187   Adjusted R-squared: 0.3093 
## F-statistic(full model, *iid*):103.7 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 93.18 on 3 and 8 DF, p-value: 1.458e-06

Consistent with our claim on compatibility with democracies, dynastic leadership is in fact not bad for free and fair elections.

6.3 Is Dynastic Leadership more likely to produce Corrupt regimes?

## 
## Call:
##    felm(formula = v2xnp_regcorr ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.57421 -0.10975  0.00622  0.11837  0.64973 
## 
## Coefficients:
##                        Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.004092     0.011517   0.355    0.732    
## log_gdp_percap        -0.174029     0.017943  -9.699 1.07e-05 ***
## former_british_colony -0.071479     0.080857  -0.884    0.402    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1885 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.6254   Adjusted R-squared: 0.6202 
## Multiple R-squared(proj model): 0.4127   Adjusted R-squared: 0.4046 
## F-statistic(full model, *iid*):121.3 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 172.7 on 3 and 8 DF, p-value: 1.309e-07

No significant relationship between dynastic leadership and more regime corruption (leaders using offices for private gain).

6.4 Dynastic Leadership and Barriers to other parties?

v2psbars

## 
## Call:
##    felm(formula = v2psbars ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3329 -0.5140  0.1311  0.7044  2.1835 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.19598      0.10111   1.938   0.0886 .  
## log_gdp_percap         0.36661      0.03915   9.364 1.38e-05 ***
## former_british_colony  0.35558      0.19306   1.842   0.1028    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9967 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3602   Adjusted R-squared: 0.3514 
## Multiple R-squared(proj model): 0.1212   Adjusted R-squared: 0.1091 
## F-statistic(full model, *iid*):40.91 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 40.55 on 3 and 8 DF, p-value: 3.478e-05

6.5 Dynastic Leadership and Candidate Selection

v2pscnslnl

## 
## Call:
##    felm(formula = v2pscnslnl ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8117 -0.5675 -0.0271  0.5574  3.2184 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.06576      0.08190   0.803  0.44522   
## log_gdp_percap         0.55766      0.11567   4.821  0.00132 **
## former_british_colony  0.46325      0.35792   1.294  0.23167   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9797 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4341   Adjusted R-squared: 0.4263 
## Multiple R-squared(proj model): 0.2298   Adjusted R-squared: 0.2192 
## F-statistic(full model, *iid*):55.72 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 21.04 on 3 and 8 DF, p-value: 0.0003759

6.6 Dynastic Leadership and Regime’s opposition Groups Size

v2regoppgroupssize

## 
## Call:
##    felm(formula = v2regoppgroupssize ~ dynastic + log_gdp_percap +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2045 -0.7607 -0.1629  0.5793  4.1028 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)  
## dynastic              -0.18456      0.09499  -1.943   0.0879 .
## log_gdp_percap        -0.46499      0.16232  -2.865   0.0210 *
## former_british_colony  0.35650      0.35610   1.001   0.3461  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.133 on 5152 degrees of freedom
##   (1076 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4896   Adjusted R-squared: 0.4826 
## Multiple R-squared(proj model): 0.1295   Adjusted R-squared: 0.1175 
## F-statistic(full model, *iid*):69.61 on 71 and 5152 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 8.009 on 3 and 8 DF, p-value: 0.008567

6.7 Dynastic Leadership and Regiorous and Impartial Public Administration

v2clrspct

## 
## Call:
##    felm(formula = v2clrspct ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.08441 -0.56830  0.04989  0.58006  2.73383 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.10079      0.12888   0.782    0.457    
## log_gdp_percap         0.81531      0.09203   8.860 2.08e-05 ***
## former_british_colony  0.03852      0.17542   0.220    0.832    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9318 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.6293   Adjusted R-squared: 0.6242 
## Multiple R-squared(proj model): 0.3788   Adjusted R-squared: 0.3702 
## F-statistic(full model, *iid*):123.3 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 31.09 on 3 and 8 DF, p-value: 9.272e-05

6.8 Dynastic Leadership and State Ownership of Enterprise

v2clstown

## 
## Call:
##    felm(formula = v2clstown ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0984 -0.3964  0.0386  0.4523  2.3470 
## 
## Coefficients:
##                        Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic              -0.001765     0.103770  -0.017  0.98685    
## log_gdp_percap         0.246633     0.048847   5.049  0.00099 ***
## former_british_colony -0.232880     0.132812  -1.753  0.11761    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7345 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3814   Adjusted R-squared: 0.3729 
## Multiple R-squared(proj model): 0.08966   Adjusted R-squared: 0.07713 
## F-statistic(full model, *iid*):44.79 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 15.26 on 3 and 8 DF, p-value: 0.001131

6.9 Dynastic Leadership and Criteria for Appointments in Public Administration

v2stcritrecadm (0-5 ordinal scale)

## 
## Call:
##    felm(formula = v2stcritrecadm ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.81116 -0.43096  0.05112  0.45763  2.33686 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic              -0.02354      0.08247  -0.285    0.783    
## log_gdp_percap         0.54400      0.06723   8.092 4.02e-05 ***
## former_british_colony  0.03801      0.14135   0.269    0.795    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7017 on 4934 degrees of freedom
##   (1294 observations deleted due to missingness)
## Multiple R-squared(full model): 0.5039   Adjusted R-squared: 0.4968 
## Multiple R-squared(proj model): 0.3107   Adjusted R-squared: 0.3008 
## F-statistic(full model, *iid*): 70.6 on 71 and 4934 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 25.31 on 3 and 8 DF, p-value: 0.0001953

6.10 Dynastic Leadership and Media Censorship Effort

v2mecenefm

## 
## Call:
##    felm(formula = v2mecenefm ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6960 -0.5252  0.0997  0.7356  2.5041 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.27625      0.15119   1.827   0.1051   
## log_gdp_percap         0.55116      0.15794   3.490   0.0082 **
## former_british_colony -0.06699      0.19704  -0.340   0.7426   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.1 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4827   Adjusted R-squared: 0.4756 
## Multiple R-squared(proj model): 0.175   Adjusted R-squared: 0.1636 
## F-statistic(full model, *iid*):67.79 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model):  33.7 on 3 and 8 DF, p-value: 6.904e-05

6.11 Dynastic Leadership and level of Media Corruption

v2mecorrpt

## 
## Call:
##    felm(formula = v2mecorrpt ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2863 -0.4478  0.1233  0.6098  2.9630 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.09022      0.09131   0.988  0.35209    
## log_gdp_percap         0.78097      0.04147  18.830 6.54e-08 ***
## former_british_colony  0.57095      0.14752   3.870  0.00474 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9619 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.5774   Adjusted R-squared: 0.5716 
## Multiple R-squared(proj model): 0.3711   Adjusted R-squared: 0.3624 
## F-statistic(full model, *iid*):99.25 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 329.2 on 3 and 8 DF, p-value: 1.023e-08

6.12 Dyanstic Leadership and Power Distribution by Socio Economic Position

v2pepwrses (0-4)

## 
## Call:
##    felm(formula = v2pepwrses ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4186 -0.4283  0.0371  0.4748  2.5535 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)  
## dynastic              -0.08648      0.07560  -1.144   0.2857  
## log_gdp_percap         0.29418      0.12252   2.401   0.0431 *
## former_british_colony  0.27228      0.17731   1.536   0.1632  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8236 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3895   Adjusted R-squared: 0.381 
## Multiple R-squared(proj model): 0.1074   Adjusted R-squared: 0.09506 
## F-statistic(full model, *iid*):46.34 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 2.246 on 3 and 8 DF, p-value: 0.1602

6.13 Dynastic Leadership and Power Distribution by Social grouup

v2pepwrsoc

## 
## Call:
##    felm(formula = v2pepwrsoc ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2057 -0.4865  0.0378  0.5671  2.1838 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)
## dynastic              -0.10428      0.09564  -1.090    0.307
## log_gdp_percap         0.21122      0.12212   1.730    0.122
## former_british_colony  0.02199      0.16047   0.137    0.894
## 
## Residual standard error: 0.8394 on 5158 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3827   Adjusted R-squared: 0.3742 
## Multiple R-squared(proj model): 0.04874   Adjusted R-squared: 0.03565 
## F-statistic(full model, *iid*):45.05 on 71 and 5158 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 1.488 on 3 and 8 DF, p-value: 0.2898

6.14 Dynastic Leadership and Legitimate Ideology (Promotion)

v2exl_legitideol

## 
## Call:
##    felm(formula = v2exl_legitideol ~ dynastic + log_gdp_percap +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2795 -0.7966 -0.1499  0.7561  3.9378 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)
## dynastic               0.08410      0.15464   0.544    0.601
## log_gdp_percap        -0.10339      0.16256  -0.636    0.543
## former_british_colony  0.04565      0.36814   0.124    0.904
## 
## Residual standard error: 1.093 on 5143 degrees of freedom
##   (1085 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3146   Adjusted R-squared: 0.3051 
## Multiple R-squared(proj model): 0.007678   Adjusted R-squared: -0.006021 
## F-statistic(full model, *iid*):33.25 on 71 and 5143 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 0.2148 on 3 and 8 DF, p-value: 0.8834

6.15 Dynastic Leadership and Person of Leader (Leader Cult, extraordinary charismatic etc.)

v2exl_legitlead

## 
## Call:
##    felm(formula = v2exl_legitlead ~ dynastic + log_gdp_percap +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5739 -0.7897 -0.1258  0.7445  4.9250 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic              -0.06576      0.08783  -0.749  0.47547   
## log_gdp_percap        -0.38092      0.10363  -3.676  0.00626 **
## former_british_colony  0.13820      0.43637   0.317  0.75957   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.12 on 5156 degrees of freedom
##   (1072 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4003   Adjusted R-squared: 0.3921 
## Multiple R-squared(proj model): 0.08502   Adjusted R-squared: 0.07242 
## F-statistic(full model, *iid*):48.48 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model):  6.49 on 3 and 8 DF, p-value: 0.0155

6.16 Dynastic Leadership and Political Violence by Non-State Actors

v2caviol

## 
## Call:
##    felm(formula = v2caviol ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9826 -0.8518 -0.1209  0.7346  4.0336 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.08914      0.13562   0.657  0.52943   
## log_gdp_percap        -0.40492      0.09299  -4.354  0.00243 **
## former_british_colony -0.36681      0.11284  -3.251  0.01169 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.205 on 5138 degrees of freedom
##   (1090 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3208   Adjusted R-squared: 0.3114 
## Multiple R-squared(proj model): 0.09566   Adjusted R-squared: 0.08317 
## F-statistic(full model, *iid*):34.17 on 71 and 5138 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 39.01 on 3 and 8 DF, p-value: 4.019e-05

6.17 Dynastic Leadership and Mobilisation for Democracy

v2cademmob

## 
## Call:
##    felm(formula = v2cademmob ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2609 -0.7758 -0.1522  0.6511  4.5795 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.19245      0.08997   2.139   0.0649 . 
## log_gdp_percap        -0.13760      0.16114  -0.854   0.4180   
## former_british_colony -0.41357      0.08659  -4.776   0.0014 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.129 on 5099 degrees of freedom
##   (1129 observations deleted due to missingness)
## Multiple R-squared(full model): 0.2116   Adjusted R-squared: 0.2006 
## Multiple R-squared(proj model): 0.03501   Adjusted R-squared: 0.02157 
## F-statistic(full model, *iid*):19.27 on 71 and 5099 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 9.342 on 3 and 8 DF, p-value: 0.005425

LS0tCnRpdGxlOiAiR2xvYmFsIER5bmFzdGllcyBEYXRhc2V0IE1haW4gUlB1YiIKYXV0aG9yOiAiTmFjaGlrZXQgTWlkaGEiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIHRoZW1lOiBjb3NtbwogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlICAjIE51bWJlciBzZWN0aW9ucyBmb3IgdGhlIHRhYmxlIG9mIGNvbnRlbnRzCiAgICBmaWdfY2FwdGlvbjogdHJ1ZSAgICAgICMgRW5hYmxlIGZpZ3VyZSBjYXB0aW9ucwogICAgY3NzOiBzdHlsZXMuY3NzICAgICAgICAjIExpbmsgdG8gYSBjdXN0b20gQ1NTIGZpbGUgZm9yIHN0eWxpbmcKLS0tCgpgYGB7ciBldmFsID0gVFJVRSxlY2hvID1GQUxTRSxtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojTG9hZGluZyBMaWJyYXJpZXMKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShzbmFrZWNhc2UpCmxpYnJhcnkoZ2d0aGVtZXMpCmxpYnJhcnkoV0RJKQpsaWJyYXJ5KGJldGFyZWcpCmxpYnJhcnkoZm9yY2F0cykKbGlicmFyeShzdHJpbmdkaXN0KQpsaWJyYXJ5KGV4cHNzKQpsaWJyYXJ5KGxmZSkKbGlicmFyeShkZXZ0b29scykKbGlicmFyeSh6b28pCmxpYnJhcnkoc2FuZHdpY2gpCmxpYnJhcnkocGxtKQpsaWJyYXJ5KHN0YXJnYXplcikKbGlicmFyeShqYW5pdG9yKQpsaWJyYXJ5KG1vZGVsc3VtbWFyeSkKbGlicmFyeSh0cmFuc2Zvcm1yKQpsaWJyYXJ5KGdnYW5pbWF0ZSkKbGlicmFyeShnaWZza2kpCmxpYnJhcnkoYXYpCmxpYnJhcnkocnZlc3QpCmxpYnJhcnkoZmxleHRhYmxlKQpsaWJyYXJ5KElSZGlzcGxheSkKbGlicmFyeShjb2VmcGxvdCkKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShzbmFrZWNhc2UpCmxpYnJhcnkoZ2d0aGVtZXMpCmxpYnJhcnkoYnJvb20pCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkocm1hcmtkb3duKQpsaWJyYXJ5KGh0bWx3aWRnZXRzKQpsaWJyYXJ5KERUKQpsaWJyYXJ5KHNjYWxlcykKbGlicmFyeShmaXhlc3QpCmxpYnJhcnkoZ2dlZmZlY3RzKQoKYGBgCgoKCmBgYHtyIGV2YWw9VFJVRSxlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiNMb2FkaW5nIERhdGFzZXRzCmdkZCA8LSByZWFkLmNzdigiL1VzZXJzL05hY2hpa2V0L0ZpbGVzIEZyb20gZS5sb2NhbGl6ZWQvVmVybWEgUkEgd29yay9HbG9iYWwgRHluYXN0aWVzIERhdGFzZXQvZ2RkLmNzdiIpCmdkZCA8LWdkZCAlPiUgcmVuYW1lKFllYXI9eWVhcikgJT4lIG11dGF0ZShkeW5hc3RpYyA9IGlmZWxzZShwcmVkX2JpbiAhPTAsMSwwKSkjcHJlZF9iaW4gPT0gMQoKIyBBZGRpbmcgeWVhcl9iaW4gYW5kIGhhbmRsaW5nIE5Bcy4gQWRkaW5nIGEgY29udGludW91cyB2YXJpYWJsZSBmb3IgRHlhbnN0aWMgdmFyaWFibGUgKHByZWRfYmluKQpnZGQgPC0gZ2RkICU+JQogIG11dGF0ZShhY3Jvc3MoYygKICAgIHByZWRfbnVtLCByZWxhdGlvbl9jb2RlX3ByZWQsIHBvc19jb2RlX3ByZWQsIHN1Y19udW0sIHJlbGF0aW9uX2NvZGVfc3VjLCBwb3NfY29kZV9zdWMsZmxuX2dlbmRlciwKICAgIHByZWRfYmluLCBzdWNfYmluLCBwcmVkX25hdGlvbmFsLCBzdWNfbmF0aW9uYWwsIHByZWRfc3RhdGUsIHN1Y19zdGF0ZSwgcHJlZF9sb2NhbCwgc3VjX2xvY2FsLCBkeW5hc3RpYwogICksIH5pZmVsc2UoaXMubmEoLiksIDAsIC4pKSkKZ2RkIDwtIGdkZCAlPiUKICBtdXRhdGUoeWVhcl9iaW4gPSBjYXNlX3doZW4oCiAgICBZZWFyID49IDE5NDUgJiBZZWFyIDwgMTk3MCB+ICIxOTQ1LTE5NzAiLAogICAgWWVhciA+PSAxOTcwICYgWWVhciA8IDE5OTUgfiAiMTk3MC0xOTk1IiwKICAgIFllYXIgPj0gMTk5NSAmIFllYXIgPD0gMjAyMCB+ICIxOTk1LTIwMjAiCiAgKSwKICB5ZWFyX2JpbiA9IGZhY3Rvcih5ZWFyX2JpbiwKICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCIxOTQ1LTE5NzAiLCAiMTk3MC0xOTk1IiwgIjE5OTUtMjAyMCIpLAogICAgICAgICAgICAgICAgICAgIG9yZGVyZWQgPSBUUlVFKQogICklPiUgCiAgYXJyYW5nZShDb3VudHJ5LCBZZWFyKSAlPiUgICMgRW5zdXJlIGRhdGEgaXMgc29ydGVkIGJ5IENvdW50cnkgYW5kIFllYXIKICBncm91cF9ieShDb3VudHJ5KSAlPiUKICBtdXRhdGUoCiAgICBDdW1fUHJlZF9CaW4gPSBjdW1zdW0ocHJlZF9iaW4pLCAgIyBDdW11bGF0aXZlIHN1bSBvZiBwcmVkX2JpbgogICAgWWVhcl9Db3VudCA9IHJvd19udW1iZXIoKSwgICMgQ3VtdWxhdGl2ZSBjb3VudCBvZiB5ZWFycwogICAgRHluYXN0aWNfUHJvcG9ydGlvbiA9IEN1bV9QcmVkX0JpbiAvIFllYXJfQ291bnQgICMgQ2FsY3VsYXRlIHRoZSBwcm9wb3J0aW9uCiAgKSAlPiUKICB1bmdyb3VwKCkKCiNtYWtpbmcgeWVhciBjb2x1bW4gYXMgYSBudW1lcmljIHZhcmlhYmxlIGluIHRoZSB3aG9sZSBkYXRhc2V0CmdkZCRZZWFyIDwtIGFzLm51bWVyaWMoZ2RkJFllYXIpCgoKI21ha2luZyBhbGwgdGhlc2UgZmxuX2dlbmRlcglwcmVkX251bQlyZWxhdGlvbl9jb2RlX3ByZWQJcG9zX2NvZGVfcHJlZAlzdWNfbnVtCXJlbGF0aW9uX2NvZGVfc3VjCXBvc19jb2RlX3N1YwlwcmVkX2JpbglzdWNfYmluCXByZWRfbmF0aW9uYWwJc3VjX25hdGlvbmFsCXByZWRfc3RhdGUJc3VjX3N0YXRlCXByZWRfbG9jYWwJc3VjX2xvY2FsIGFzIG51bWVyaWMKCmdkZCRmbG5fZ2VuZGVyIDwtIGFzLm51bWVyaWMoZ2RkJGZsbl9nZW5kZXIpCmdkZCRwcmVkX251bSA8LSBhcy5udW1lcmljKGdkZCRwcmVkX251bSkKZ2RkJHJlbGF0aW9uX2NvZGVfcHJlZCA8LSBhcy5udW1lcmljKGdkZCRyZWxhdGlvbl9jb2RlX3ByZWQpCmdkZCRwb3NfY29kZV9wcmVkIDwtIGFzLm51bWVyaWMoZ2RkJHBvc19jb2RlX3ByZWQpCmdkZCRzdWNfbnVtIDwtIGFzLm51bWVyaWMoZ2RkJHN1Y19udW0pCmdkZCRyZWxhdGlvbl9jb2RlX3N1YyA8LSBhcy5udW1lcmljKGdkZCRyZWxhdGlvbl9jb2RlX3N1YykKZ2RkJHBvc19jb2RlX3N1YyA8LSBhcy5udW1lcmljKGdkZCRwb3NfY29kZV9zdWMpCmdkZCRwcmVkX2JpbiA8LSBhcy5udW1lcmljKGdkZCRwcmVkX2JpbikKZ2RkJHN1Y19iaW4gPC0gYXMubnVtZXJpYyhnZGQkc3VjX2JpbikKZ2RkJHByZWRfbmF0aW9uYWwgPC0gYXMubnVtZXJpYyhnZGQkcHJlZF9uYXRpb25hbCkKZ2RkJHN1Y19uYXRpb25hbCA8LSBhcy5udW1lcmljKGdkZCRzdWNfbmF0aW9uYWwpCmdkZCRwcmVkX3N0YXRlIDwtIGFzLm51bWVyaWMoZ2RkJHByZWRfc3RhdGUpCmdkZCRzdWNfc3RhdGUgPC0gYXMubnVtZXJpYyhnZGQkc3VjX3N0YXRlKQpnZGQkcHJlZF9sb2NhbCA8LSBhcy5udW1lcmljKGdkZCRwcmVkX2xvY2FsKQpnZGQkc3VjX2xvY2FsIDwtIGFzLm51bWVyaWMoZ2RkJHN1Y19sb2NhbCkKCgoKCgojQWRkaW5nIEZvbWVyX0JyaXRpc2hfQ29sb255X1N0YXR1cwpjb3VudHJ5X2xpc3QgPC0gYygKICAiQWZnaGFuaXN0YW4iLCAiQW50aWd1YSBhbmQgQmFyYnVkYSIsICJCYWhyYWluIiwgIkJhcmJhZG9zIiwgIkJlbGl6ZSIsICJCb3Rzd2FuYSIsICJCcnVuZWkiLAogICJDeXBydXMiLCAiRG9taW5pY2EiLCAiRWd5cHQiLCAiRXN3YXRpbmkiLCAiRmlqaSIsICJHaGFuYSIsICJHcmVuYWRhIiwgIkd1eWFuYSIsICJJbmRpYSIsIAogICJJcmFxIiwgIklzcmFlbCIsICJKYW1haWNhIiwgIkpvcmRhbiIsICJLZW55YSIsICJLaXJpYmF0aSIsICJLdXdhaXQiLCAiTGVzb3RobyIsICJMaWJ5YSIsIAogICJNYWxhd2kiLCAiTWFsYXlhIiwgIk1hbGRpdmVzIiwgIk1hbHRhIiwgIk1hdXJpdGl1cyIsICJNeWFubWFyIiwgIk5hdXJ1IiwgIk5pZ2VyaWEiLCAiT21hbiIsIAogICJQYWtpc3RhbiIsICJRYXRhciIsICJTYWludCBMdWNpYSIsICJTYWludCBLaXR0cyBhbmQgTmV2aXMiLCAiU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMiLAogICJTZXljaGVsbGVzIiwgIlNpZXJyYSBMZW9uZSIsICJTb2xvbW9uIElzbGFuZHMiLCAiU29tYWxpbGFuZCIsICJTb3V0aCBZZW1lbiIsICJTcmkgTGFua2EiLCAKICAiU3VkYW4iLCAiU291dGggU3VkYW4iLCAiQmFoYW1hcyIsICJSZXB1YmxpYyBvZiB0aGUgR2FtYmlhIiwgIlRvbmdhIiwgIlRyaW5pZGFkIGFuZCBUb2JhZ28iLCAiVHV2YWx1IiwKICAiVWdhbmRhIiwgIlVuaXRlZCBBcmFiIEVtaXJhdGVzIiwgIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYSIsICJWYW51YXR1IiwgIlphbWJpYSIsICJaYW56aWJhciIsICJaaW1iYWJ3ZSIKKQoKZ2RkIDwtIGdkZCAlPiUgCiAgbXV0YXRlKGZvcm1lcl9icml0aXNoX2NvbG9ueSA9IGlmZWxzZShDb3VudHJ5ICVpbiUgY291bnRyeV9saXN0LCAxLCAwKSkKCiMjIEFkZGluZyBEaWN0YXRvcnNoaXAgYW5kIGRlbW9jcmFjeSBiaW5hcmllcwoKZ2RkIDwtIGdkZCAlPiUgCiAgbXV0YXRlKGRpY3RhdG9yc2hpcCA9ICBpZmVsc2Uoc3lzdGVtX2NhdGVnb3J5ICVpbiUgYygiUm95YWwgRGljdGF0b3JzaGlwIiwgIkNpdmlsaWFuIERpY3RhdG9yc2hpcCIsIk1pbGl0YXJ5IERpY3RhdG9yc2hpcCIpLDEsMCkpICU+JSAKICBtdXRhdGUoRGVtX1R5cGUgPSBjYXNlX3doZW4oCiAgc3lzdGVtX2NhdGVnb3J5ICVpbiUgYygiQ2l2aWxpYW4gRGljdGF0b3JzaGlwIiwgIk1pbGl0YXJ5IERpY3RhdG9yc2hpcCIsIlJveWFsIERpY3RhdG9yc2hpcCIpIH4gMCwKICBzeXN0ZW1fY2F0ZWdvcnkgPT0gIk1peGVkIERlbW9jcmF0aWMiIH4gMSwKICBzeXN0ZW1fY2F0ZWdvcnkgPT0gIlByZXNpZGVudGlhbCBEZW1vY3JhY3kiIH4gMiwKICBzeXN0ZW1fY2F0ZWdvcnkgPT0gIlBhcmxpYW1lbnRhcnkgRGVtb2NyYWN5IiB+IDMsCiAgVFJVRSB+IE5BX3JlYWxfCiAgKSkKCiNBZGRpbmcgTmV3IFJlZ2ltZSBDaGFuZ2UgQmluYXJ5ICgwLzEpIGF0IHRoZSBjb3VudHJ5IGxldmVsCmdkZCA8LSBnZGQgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKFJlZ2ltZV9DaGFuZ2UgPSBpZl9lbHNlKG5fZGlzdGluY3QoZGljdGF0b3JzaGlwKSA+IDEsIDEsIDApKSAlPiUKICB1bmdyb3VwKCkKCiNBZGRpbmcgbmV3IFBvc3QtV1cyIEluZGVwZW5kZW5jZSBCaW5hcnkKZ2RkIDwtIGdkZCAlPiUKICBncm91cF9ieShDb3VudHJ5KSAlPiUKICBtdXRhdGUocG9zdHd3Ml9pbmQgPSBpZl9lbHNlKAogICAgKENvdW50cnkgJWluJSBjKCJTeXJpYSIsIkpvcmRhbiIpKSB8IGFsbChZZWFyID49IDE5NDcpLAoKICAgICAgMSwwKSkKCiMjIEFkZGluZyBSZWdpbWUgVHJhbnNpdGlvbiBiaW5hcnkgYXQgdGhlIG9ic2VydmF0aW9uIGxldmVsCmdkZCA8LSBnZGQgJT4lCiAgYXJyYW5nZShDb3VudHJ5LCBZZWFyKSAlPiUKICBncm91cF9ieShDb3VudHJ5KSAlPiUKICBtdXRhdGUoUHJldmlvdXNfRGljdGF0b3JzaGlwID0gYyhOQSwgaGVhZChkaWN0YXRvcnNoaXAsIC0xKSksCiAgICAgICAgIFJlZ2ltZV9UcmFuc2l0aW9uX0JpbmFyeSA9IGlmZWxzZSgKICAgICAgaXMubmEoUHJldmlvdXNfRGljdGF0b3JzaGlwKSwgMCwgICAgICAgIyBJZiBQcmV2aW91c19EaWN0YXRvcnNoaXAgaXMgTkEsIHNldCB0cmFuc2l0aW9uIHRvIDAKICAgICAgaWZlbHNlKGRpY3RhdG9yc2hpcCAhPSBQcmV2aW91c19EaWN0YXRvcnNoaXAsIDEsIDApICAjIElmIHRoZXJlIGlzIGEgY2hhbmdlLCBzZXQgdHJhbnNpdGlvbiB0byAxCiAgICApCiAgKSAlPiUKICB1bmdyb3VwKCkKCiMjIEFkZGluZyBudW1iZXIgb2YgVHJhbnNpdGlvbnMgY2x1c3RlcmVkIGF0IHRoZSBjb3VudHJ5IGxldmVsIHRvIHNlZSAKZ2RkIDwtIGdkZCAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShOdW1fVHJhbnNpdGlvbnMgPSBzdW0oUmVnaW1lX1RyYW5zaXRpb25fQmluYXJ5KSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgc2VsZWN0KGNvdW50cnlfaXNvY29kZSwgQ09XLCBSZWdpb24sQ291bnRyeSwgWWVhciwgbm9taW5hbF9sZWFkZXIsIGR5bmFzdHlfZGVzYywgZmxuX2dlbmRlcixzeXN0ZW1fY2F0ZWdvcnksIGRpY3RhdG9yc2hpcCwgUmVnaW1lX0NoYW5nZSwgUmVnaW1lX1RyYW5zaXRpb25fQmluYXJ5LE51bV9UcmFuc2l0aW9ucywgZXZlcnl0aGluZygpKQoKI0xvYWRpbmcgV0RJIEluZGljYXRvcnMgdXNpbmcgV29ybGQgQmFuayBBUEkKI1dESXNlYXJjaCgnaW5lcXVhbGl0eScpICMgYSBjb21tYW5kIHVzZWQgdG8gc2VhcmNoIGZvciBhbGwgdmFyaWFibGVzCndiX2RhdGFfbWFpbiA9IFdESShpbmRpY2F0b3IgPSBjKCJOWS5HRFAuUENBUC5DRCIpLHN0YXJ0ID0gMTk2MCwgZW5kID0gMjAyMSkKd2JfZGF0YSA8LSB3Yl9kYXRhX21haW4gJT4lIAogIHJlbmFtZShnZHBfcGVyY2FwID0gTlkuR0RQLlBDQVAuQ0QpICU+JSAKICByZW5hbWUoY291bnRyeV9pc29jb2RlID0gaXNvM2MpICU+JSAKICByZW5hbWUoWWVhciA9IHllYXIpICU+JSAKICBzZWxlY3QoIlllYXIiLCJjb3VudHJ5X2lzb2NvZGUiLCJnZHBfcGVyY2FwIikKZ2RkIDwtIGxlZnRfam9pbihnZGQsIHdiX2RhdGEsIGJ5ID0gYygiWWVhciIsImNvdW50cnlfaXNvY29kZSIpKQpnZGQkbG9nX2dkcF9wZXJjYXAgPC0gbG9nKGdkZCRnZHBfcGVyY2FwKQoKI0xhb2RpbmcgVkRlbSBEYXRhCmxvYWQoIi9Vc2Vycy9OYWNoaWtldC9GaWxlcyBGcm9tIGUubG9jYWxpemVkL1Zlcm1hIFJBIHdvcmsvR2xvYmFsIER5bmFzdGllcyBEYXRhc2V0L3ZkZW0uUkRhdGEiKQoKdmRlbWZpbHRlcmVkIDwtIHZkZW0gJT4lIAogIHNlbGVjdChjb3VudHJ5X3RleHRfaWQseWVhcixlX2JvaXhfcmVnaW1lLHYyeF9wb2x5YXJjaHksdjJ4X2xpYmRlbSwgdjJlbGFjY2VwdCwgdjJlbGludGltLCB2MnhfdmVyYWNjLHYyeF9kaWFnYWNjLCB2MnhfaG9yYWNjLCB2MnhfZ2VuY3MsIHYyeG5wX3JlZ2NvcnIsIHYyeF9jb3JyLCB2MnhfcHViY29yciwgdjJ4ZWRfZWRfaW5wdCx2MnhlZF9lZF9jZW50LCB2MmxwbmFtZSwgdjNwYXJ0eWlkLCB2MnhlbF9mcmVmYWlyLCB2MnBzYmFycywgdjJwc2Nuc2xubCx2MnJlZ29wcGdyb3Vwc3NpemUsIHYyY2xyc3BjdCwgdjJjbHN0b3duLCB2MnN0Y3JpdHJlY2FkbSwgdjJtZWNlbmVmbSwgdjJtZWNvcnJwdCwgdjJwZXB3cnNlcywgdjJwZXB3cnNvYywgdjJleGxfbGVnaXRpZGVvbCwgdjJleGxfbGVnaXRsZWFkLCB2MmNhdmlvbCx2MmNhZGVtbW9iKSAlPiUgCiAgcmVuYW1lKFllYXIgPSB5ZWFyKSAlPiUgCiAgcmVuYW1lKGNvdW50cnlfaXNvY29kZSA9IGNvdW50cnlfdGV4dF9pZCkKZ2RkIDwtIGxlZnRfam9pbihnZGQsIHZkZW1maWx0ZXJlZCwgYnkgPSBjKCJjb3VudHJ5X2lzb2NvZGUiLCAiWWVhciIpKQpgYGAKCiMgQmFzaWMgRGVzY3JpcHRpdmUgSW5kaWNhdG9ycyB7LnRhYnNldH0KCiMjIEdyYXBoIFNob3dpbmcgQ291bnRyaWVzIEFkZGVkIFllYXJ3aXNlCgpUaGUgZm9sbG93aW5nIGdyYXBoIHNob3dzIGhvdyBjb3VudHJpZXMgYXJlIGJlaW5nIGFkZGVkIGV2ZXJ5IHllYXIgd2l0aCB0aGUgcHJvZ3Jlc3Npb24gaW4gdGhlIGRhdGFzZXQgc2luY2UgdGhlIGVuZCBvZiBXV0lJCgpgYGB7ciBldmFsPVRSVUUsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmdkZF9jb3VudHJ5X2FkZGl0aW9uIDwtIGdkZCAlPiUgCiAgZ3JvdXBfYnkoWWVhcikgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpJT4lIAogIHN1bW1hcmlzZShUb3RhbF9Db3VudHJpZXMgPW4oKSkKCgojc29sdmluZyBmb3IgRXJyb3I6IGZyb20gbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIKCmNvdW50cnlfYWRkaXRpb24gPC0gZ2dwbG90KGdkZF9jb3VudHJ5X2FkZGl0aW9uLCBhZXMoeCA9IFllYXIsIHkgPSBUb3RhbF9Db3VudHJpZXMpKSArCiAgZ2VvbV9saW5lKGNvbG9yID0gImxpZ2h0Ymx1ZSIsIHNpemUgPSAxKSArCiAgZ2VvbV9wb2ludChjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjUpICsKICBsYWJzKAogICAgdGl0bGUgPSAiTnVtYmVyIG9mIENvdW50cmllcyBBZGRlZCB0byB0aGUgRGF0YXNldCBBY3Jvc3MgWWVhcnMiLAogICAgeCA9ICJZZWFyIiwKICAgIHkgPSAiTnVtYmVyIG9mIENvdW50cmllcyIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkKCmdncGxvdGx5KGNvdW50cnlfYWRkaXRpb24pCmBgYAoKIyMgUHJvcG9ydGlvbiBvZiBEeW5hc3RpYyBDb3VudHJpZXMgQWNyb3NzIFRpbWUgKEFsbCBSZWdpbWUgVHlwZXMpCgpUaGUgbmVjZXNzYXJ5IHByZS1jb25kaXRpb24gZm9yIHRoZSBkeW5hc3QgaW4gb3VyIGRhdGFzZXQgaXMgdGhhdCBhIGxlYWRlciB3aWxsIG9ubHkgYmUgY2xhc3NpZmllZCBhcyBhIGR5bmFzdCBpZiBhbmQgb25seSBpZiBhIHRoYXQgbGVhZGVyIGluIG91ciBkYXRhc2V0IGhhcyBhIHBhcmVudCwgaW4tbGF3LCBvciBhbnkga2luZCBvZiBkaXJlY3QgcmVsYXRpdmUgd2hvIGhhcyBjb250ZXN0ZWQgYW5kIHdvbiBhbiBlbGVjdGlvbiBhdCBhbnkgbGV2ZWwgb2YgcG9saXRpY3MgaW4gdGhlaXIgcmVzcGVjdGl2ZSBwb2xpdGllcywgdGhlbiB0aGF0IHBvbGl0aWNpYW4gaXMgYSBkeW5hc3QuIFRoZXJlZm9yZSBhIGR5bmFzdGljIGNvdW50cnkgaSBhdCBwb2ludCB0IHdpbGwgYmUgYSBjb3VudHJ5IHdob3NlIGxlYWRlciBpcyBhIGR5bmFzdC4KClRoZSBmaXJzdCBncmFwaCBzaG93cyB0aGUgcHJvcG9ydGlvbiBvZiBkeW5hc3RpYyBjb3VudHJpZXMgYXQgYSBnaXZlbiB0aW1lIG92ZXIgdGhlIHllYXJzLgoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KZ2RkX2R5bmFzdGljX2NvdW50cmllcyA8LSBnZGQgJT4lCiAgZ3JvdXBfYnkoWWVhciwgeWVhcl9iaW4pJT4lCiAgc3VtbWFyaXNlKFRvdGFsX0NvdW50cmllcyA9IG4oKSwgRHluYXN0aWMgPSBzdW0ocHJlZF9iaW4pKSAlPiUgCiAgbXV0YXRlKFByb3BvcnRpb25fRHluID0gRHluYXN0aWMvVG90YWxfQ291bnRyaWVzKjEwMCkKICAKZHluYXN0aWNfcHJvcG9ydGlvbl95ZWFyIDwtIGdncGxvdChnZGRfZHluYXN0aWNfY291bnRyaWVzLCBhZXMoeCA9IFllYXIsIHkgPSBQcm9wb3J0aW9uX0R5bikpICsKICBnZW9tX2xpbmUoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMikgKwogIGdlb21fcG9pbnQoY29sb3IgPSAid2hpdGUiLCBzaXplID0gMSkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIENvdW50cmllcyBXaXRoIER5bmFzdGljIExlYWRlcnNoaXAgQWNyb3NzIFllYXJzIiwKICAgIHggPSAiWWVhciIsCiAgICB5ID0gIlBlcmNlbnRhZ2UiCiAgKSArCiAgdGhlbWVfc3RhdGEoKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkKCmdncGxvdGx5KGR5bmFzdGljX3Byb3BvcnRpb25feWVhcikKYGBgCgpUaGUgc2Vjb25kIGdyYXBoIHNob3dzIHRoZSBwcm9wb3J0aW9uIG9mIGR5bmFzdGljIGNvdW50cmllcyBhdCBhIGdpdmVuIHRpbWUgb3ZlciBhIHBlcmlvZCBvZiAyNS0yNS0yNSB5ZWFycy4KCmBgYHtyIG1lc3NhZ2U9RkFMU0UsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQoKZ2RkX2R5bmFzdGljX2NvdW50cmllc18yNSA8LSBnZGRfZHluYXN0aWNfY291bnRyaWVzICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX0R5bjI1ID0gbWVhbihQcm9wb3J0aW9uX0R5bikpCgpkeW5hc3RpY19wcm9wb3J0aW9uX3llYXJiaW4gPC0gZ2dwbG90KGdkZF9keW5hc3RpY19jb3VudHJpZXNfMjUsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX0R5bjI1KSkgKwogIGdlb21fbGluZShjb2xvciA9ICJyZWQiLCBzaXplID0gMikgKwogIGdlb21fcG9pbnQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMSkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIENvdW50cmllcyBXaXRoIER5bmFzdGljIExlYWRlcnNoaXAgQWNyb3NzIFllYXIgQmlucyIsCiAgICB4ID0gIlllYXIgQmluIiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsNTApKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKQoKZ2dwbG90bHkoZHluYXN0aWNfcHJvcG9ydGlvbl95ZWFyYmluKQoKYGBgCgojIyBQcm9wb3J0aW9uIG9mIER5bmFzdGljIENvdW50cmllcyAoUnVsZWQgYnkgRHluYXN0aWMgTGVhZGVycykgYWNyb3NzIHJlZ2ltZS90aW1lIGJ5IGRpZmZlcmVudCBSZWdpb25zIG9mIHRoZSB3b3JsZAoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KZ2RkX2R5bmFzdGljX3JlZ2lvbnMgPC0gZ2RkICU+JQogIGdyb3VwX2J5KFllYXIsIFJlZ2lvbiwgeWVhcl9iaW4pICU+JQogIHN1bW1hcmlzZSgKICAgIFRvdGFsX0NvdW50cmllcyA9IG4oKSwKICAgIER5bmFzdGljID0gc3VtKHByZWRfYmluKSwKICAgIC5ncm91cHMgPSAiZHJvcCIKICApICU+JQogIG11dGF0ZShQcm9wX0R5biA9IER5bmFzdGljIC8gVG90YWxfQ291bnRyaWVzICogMTAwKSAlPiUKICBncm91cF9ieSh5ZWFyX2JpbiwgUmVnaW9uKSAlPiUKICBzdW1tYXJpc2UoCiAgICBQcm9wb3J0aW9uX0R5biA9IG1lYW4oUHJvcF9EeW4pLAogICAgLmdyb3VwcyA9ICJkcm9wIgogICkKCgpkeW5hc3RpY19wcm9wb3J0aW9uX3JlZ2lvbiA8LSBnZ3Bsb3QoZ2RkX2R5bmFzdGljX3JlZ2lvbnMsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX0R5bikpICsKICBmYWNldF93cmFwKH5SZWdpb24pICsKICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gMSksIGNvbG9yID0gImJsdWUiKSsKICBnZW9tX3BvaW50KGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDEpICsKICBsYWJzKAogICAgdGl0bGUgPSAiUGVyY2VudGFnZSBvZiBDb3VudHJpZXMgdGhhdCBhcmUgRHluYXN0aWMgQWNyb3NzIFJlZ2lvbnMiLAogICAgeCA9ICJZZWFyIiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsIDEwMCkgKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKQpnZ3Bsb3RseShkeW5hc3RpY19wcm9wb3J0aW9uX3JlZ2lvbikKYGBgCgojIyBUYWJsZSBvbiB0aGUgUHJvcG9ydGlvbiBvZiBEeW5hc3RpYyBMZWFkZXJzIE92ZXIgVGltZSBpbiBhIFJlZ2lvbiAoQ2xhc3NpZmllZCBieSBSZWdpbWUgVHlwZSkKYGBge3IgZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfbW9zdF9keW5hc3RpYyA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluLENvdW50cnksIFJlZ2lvbikgJT4lCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBzdW1tYXJpc2UoVG90YWxfTGVhZGVycyA9IG4oKSwgZHluYXN0aWNfbGVhZGVycyA9IHN1bShwcmVkX2JpbikpICU+JSAKICBtdXRhdGUocHJvcG9ydGlvbl9keW5fbGVhZGVyPSBkeW5hc3RpY19sZWFkZXJzL1RvdGFsX0xlYWRlcnMqMTAwKQoKZ2RkX21vc3RfZHluYXN0aWNfcmVnaW9uIDwtIGdkZF9tb3N0X2R5bmFzdGljICU+JSBncm91cF9ieShSZWdpb24seWVhcl9iaW4pICU+JSBzdW1tYXJpc2UoUHJvcG9ydGlvbl9PZl9EeW5hc3RpY19MZWFkZXJzID0gbWVhbihwcm9wb3J0aW9uX2R5bl9sZWFkZXIpKSAKCmdkZF9tb3N0X2R5bmFzdGljX3JlZ2lvbiU+JSAgZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KHBhZ2VMZW5ndGggPSA1MCksCiAgICAgICAgICAgcm93bmFtZXMgPSBGQUxTRSwKICAgICAgICAgICAgY29sbmFtZXMgPSBjKCJSZWdpb24iLCAiWWVhciBDYXRlZ29yeSIsICJQcm9wb3J0aW9uIG9mIER5bmFzdGljIExlYWRlcnMiKSkKCmBgYAoKCiMjIFByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBieSBEZW1vY3JhdGljIFJlZ2ltZSBUeXBlIChQcmVzaWRlbnRpYWwsIFBhcmxpYW1lbnRhcnksIGFuZCBNaXhlZCBEZW1vY3JhdGljKQoKVGhlIG5lY2Vzc2FyeSBwcmUtY29uZGl0aW9uIGZvciB0aGUgZHluYXN0IGluIG91ciBkYXRhc2V0IGlzIHRoYXQgYSBsZWFkZXIgd2lsbCBvbmx5IGJlIGNsYXNzaWZpZWQgYXMgYSBkeW5hc3QgaWYgYW5kIG9ubHkgaWYgYSB0aGF0IGxlYWRlciBpbiBvdXIgZGF0YXNldCBoYXMgYSBwYXJlbnQsIGluLWxhdywgb3IgYW55IGtpbmQgb2YgZGlyZWN0IHJlbGF0aXZlIHdobyBoYXMgY29udGVzdGVkIGFuZCB3b24gYW4gZWxlY3Rpb24gYXQgYW55IGxldmVsIG9mIHBvbGl0aWNzIGluIHRoZWlyIHJlc3BlY3RpdmUgcG9saXRpZXMsIHRoZW4gdGhhdCBwb2xpdGljaWFuIGlzIGEgZHluYXN0LiBUaGVyZWZvcmUsIGR5bmFzdGljIHJ1bGUgd2lsbCBiZSB5ZWFycyB1bmRlciBhIGR5bmFzdC4KClRoZXNlIGNsYXNzaWZpY2F0aW9ucyBhcmUgZXh0ZW5kZWQgYW5kIHJlcGxpY2F0ZWQgYmFzZWQgb24gdGhlIHJlZ2ltZSB0eXBlcyBnaXZlbiBpbiBXaG9Hb3YgRGF0YXNldCAoTnVmZmllbGQgUmVzZWFyY2ggQ2VudGVyIHdoaWNoIGlzIGJhc2VkIGluIHR1cm4gb24gQ2hlaWJ1YiBldC4gYWwgKDIwMTApKQoKYGBge3IgZXZhbD1UUlVFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpnZGRfZHluYXN0aWNfY291bnRyaWVzX2RlbW8gPC0gZ2RkICU+JQogIGZpbHRlcihzeXN0ZW1fY2F0ZWdvcnkgJWluJSBjKCJNaXhlZCBEZW1vY3JhdGljIiwgIlBhcmxpYW1lbnRhcnkgRGVtb2NyYWN5IiwgIlByZXNpZGVudGlhbCBEZW1vY3JhY3kiKSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIHllYXJfYmluKSAlPiUgCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUgCiAgZGlzdGluY3QoQ291bnRyeSwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoc3lzdGVtX2NhdGVnb3J5LCB5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKa25pdHI6OmthYmxlKGdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtbywgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIiBQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUgaW4gRGVtb2NyYXRpYyBSZWdpbWVzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKCgpnZGRfZHluYXN0aWNfY291bnRyaWVzX2RlbW8kUHJvcF9EeW5fWWVhcnMgPC0gcm91bmQoKGdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtbyRQcm9wX0R5bl9ZZWFycyksIDIpCgpnZ3Bsb3QoZ2RkX2R5bmFzdGljX2NvdW50cmllc19kZW1vLGFlcyh4ID0geWVhcl9iaW4seT1Qcm9wX0R5bl9ZZWFycykpKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSsKICBsYWJzKHRpdGxlID0gIlByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBCeSBEZW1vY3JhdGljIFJlZ2ltZSBUeXBlIiwKICAgICAgIHg9ICJUeXBlIG9mIERlbW9jcmFjeSIsCiAgICAgICB5PSAiUHJvcG9ydGlvbiBvZiBZZWFycyIpKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBQcm9wX0R5bl9ZZWFycyksIHZqdXN0ID0gLTAuMywgc2l6ZSA9IDMuNSkgKwogIGZhY2V0X3dyYXAofnN5c3RlbV9jYXRlZ29yeSkrCiAgeWxpbSgwLDM1KSsKICB0aGVtZV9zdGF0YSgpKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKCmBgYAoKIyMgUHJvcG9ydGlvbiBvZiBZZWFycyBVbmRlciBEeW5hc3RpYyBSdWxlLCBZZWFyLWJ5LXllYXIgRHluYXN0aWMgUnVsZSwgUHJvcG9ydGlvbiBvZiBkeW5hc3RpYyBsZWFkZXJzIGJ5IERpY3RhdG9yc2hpcC9EZW1vY3JhY3kgU3RhdHVzIGFuZCBTeXN0ZW0gQ2F0ZWdvcnkKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtX2R5biA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KENvdW50cnksWWVhcikgJT4lIAogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShkaWN0YXRvcnNoaXApICU+JSAKICBzdW1tYXJpc2UoUHJvcF9EeW5fWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSwKICAgICAgICAgICAgQ3VtbXVsYXRpdmVfRHluX1llYXJzID0gc3VtKGR5bl95ZWFycykpCgpnZGRfZHluX2RlbV9kaWMgPC0gZ2RkICU+JSAKICBncm91cF9ieShkaWN0YXRvcnNoaXApICU+JSAKICBzdW1tYXJpc2UoVG90YWwgPSBuKCksCiAgICAgICAgICAgIER5bmFzdGljID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgICAgQXZlcmFnZSA9IER5bmFzdGljL1RvdGFsKQogIApnZGRfZHluYXN0aWNfZHluX2RlbV9sZWFkZXIgPC0gZ2RkICU+JSAKICBkaXN0aW5jdChub21pbmFsX2xlYWRlciwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnkpICU+JSAKICBtdXRhdGUoRHluX1J1bGVycyA9IHN1bShwcmVkX2JpbiksCiAgICAgICAgIHRvdGFsX3J1bGVycyA9IG4oKSwKICAgICAgICAgUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMgPSBEeW5fUnVsZXJzL3RvdGFsX3J1bGVycyoxMDApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KGRpY3RhdG9yc2hpcCkgJT4lIAogIHN1bW1hcmlzZShEeW5hc3RpY19SdWxlcnNfcGVyY2VudGFnZSA9IG1lYW4oUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMpKQoKbGVmdF9qb2luKGdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtX2R5bixnZGRfZHluYXN0aWNfZHluX2RlbV9sZWFkZXIsIGJ5ID0gImRpY3RhdG9yc2hpcCIpCgpgYGAKCgojIyBQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUsIFllYXItYnkteWVhciBEeW5hc3RpYyBSdWxlLCBQcm9wb3J0aW9uIG9mIGR5bmFzdGljIGxlYWRlcnMgYnkgUmVnaW1lIFR5cGUgKFN5c3RlbSBDYXRlZ29yeSkKYGBge3IgZWNobyA9RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPVRSVUV9CmdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtX2R5bl9zeXN0ZW1fY2F0IDwtIGdkZCAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSxZZWFyKSAlPiUgCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KHN5c3RlbV9jYXRlZ29yeSkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpLAogICAgICAgICAgICBDdW1tdWxhdGl2ZV9EeW5fWWVhcnMgPSBzdW0oZHluX3llYXJzKSkKCmdkZF9keW5hc3RpY19keW5fZGVtX2xlYWRlcl9zeXN0ZW1fY2F0IDwtIGdkZCAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKCmxlZnRfam9pbihnZGRfZHluYXN0aWNfY291bnRyaWVzX2RlbV9keW5fc3lzdGVtX2NhdCxnZGRfZHluYXN0aWNfZHluX2RlbV9sZWFkZXJfc3lzdGVtX2NhdCwgYnkgPSAic3lzdGVtX2NhdGVnb3J5IikKCgpgYGAKCiMjUHJvcG9ydGlvbiBvZiBZZWFycyBVbmRlciBEeW5hc3RpYyBSdWxlLCBZZWFyLWJ5LXllYXIgRHluYXN0aWMgUnVsZSwgUHJvcG9ydGlvbiBvZiBkeW5hc3RpYyBsZWFkZXJzIGJ5IFJlZ2ltZSBDaGFuZ2UgQmluYXJ5CgpgYGB7ciBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfZHluYXN0aWNfY291bnRyaWVzX3JlZ2ltZV9jaGFuZ2UgPC0gZ2RkICU+JSAKICBncm91cF9ieShDb3VudHJ5LFllYXIpICU+JSAKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoUmVnaW1lX0NoYW5nZSkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpLAogICAgICAgICAgICBDdW1tdWxhdGl2ZV9EeW5fWWVhcnMgPSBzdW0oZHluX3llYXJzKSkKCmdkZF9keW5hc3RpY19yZWdpbWVfY2hhbmdlX2xlYWRlciA8LSBnZGQgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoUmVnaW1lX0NoYW5nZSkgJT4lIAogIHN1bW1hcmlzZShEeW5hc3RpY19SdWxlcnNfcGVyY2VudGFnZSA9IG1lYW4oUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMpKQoKbGVmdF9qb2luKGdkZF9keW5hc3RpY19jb3VudHJpZXNfcmVnaW1lX2NoYW5nZSxnZGRfZHluYXN0aWNfcmVnaW1lX2NoYW5nZV9sZWFkZXIsIGJ5ID0gIlJlZ2ltZV9DaGFuZ2UiKQoKYGBgCgojI0NvdW50cnkgQ291bnQgYW5kIGR5bmFzdGljIGluZm9ybWF0aW9uIGZvciBDb3VudHJpZXMgYnkgUmVnaW1lIENoYW5nZSBTdGF0dXMKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KCmdkZF9jb3VudHJ5Y291bnRfcmVnaW1lX2NoYW5nZSA8LSBnZGQgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShSZWdpbWVfQ2hhbmdlKSU+JSAKICBzdW1tYXJpc2UoTnVtYmVyX09mX0NvdW50cmllcyA9IG4oKSkKCmtuaXRyOjprYWJsZShnZGRfY291bnRyeWNvdW50X3JlZ2ltZV9jaGFuZ2UsIGZvcm1hdCA9ICJodG1sIiwgY2FwdGlvbiA9ICJDb3VudHJ5IENvdW50IGZvciBDb3VudHJpZXMgdGhhdCBoYXZlL2hhdmVuJ3QgdW5kZXJnb25lIFJlZ2ltZSBjaGFuZ2UiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEZBTFNFKQoKZ2RkX2R5bnByb3BfcmVnaW1lX2NoYW5nZSA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIFJlZ2ltZV9DaGFuZ2UpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpCgpnZGRfZHlucHJvcF9yZWdpbWVfY2hhbmdlX3N1bW1hcnkgPC0gZ2RkICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBSZWdpbWVfQ2hhbmdlKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoUmVnaW1lX0NoYW5nZSkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKZ2dwbG90KGdkZF9keW5wcm9wX3JlZ2ltZV9jaGFuZ2UsIGFlcyh4ID0gZmFjdG9yKFJlZ2ltZV9DaGFuZ2UpLCB5ID0gcHJvcF9keW5feWVhcnMpKSArCiAgZ2VvbV9ib3hwbG90KCkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIExlYWRlcnNoaXAgYnkgUmVnaW1lIENoYW5nZSIsCiAgICB4ID0gIlJlZ2ltZSBDaGFuZ2UiLAogICAgeSA9ICJQZXJjZW50YWdlIG9mIER5bmFzdGljIFllYXJzICglKSIKICApICsKICB0aGVtZV9zdGF0YSgpCgojUGVyY2VudGFnZSBvZiBEeW5hc3RpYyBsZWFkZXJzIGJ5IHJlZ2ltZSBjaGFuZ2Ugc3RhdHVzCmdkZF9keW5wZXJjZW50X3JlZ2ltZWNoYW5nZV9sZWFkZXIgPC0gZ2RkICU+JQogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKZ2RkX2R5bnBlcmNlbnRfcmVnaW1lY2hhbmdlX2xlYWRlcl9zdW1tYXJ5IDwtIGdkZCAlPiUKICBkaXN0aW5jdChub21pbmFsX2xlYWRlciwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnkpICU+JSAKICBtdXRhdGUoRHluX1J1bGVycyA9IHN1bShwcmVkX2JpbiksCiAgICAgICAgIHRvdGFsX3J1bGVycyA9IG4oKSwKICAgICAgICAgUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMgPSBEeW5fUnVsZXJzL3RvdGFsX3J1bGVycyoxMDApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KFJlZ2ltZV9DaGFuZ2UpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKICAKZ2dwbG90KGdkZF9keW5wZXJjZW50X3JlZ2ltZWNoYW5nZV9sZWFkZXIsIGFlcyh4ID0gZmFjdG9yKFJlZ2ltZV9DaGFuZ2UpLCB5ID1QZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgYnkgUmVnaW1lIENoYW5nZSIsCiAgICB4ID0gIlJlZ2ltZSBDaGFuZ2UiLAogICAgeSA9ICJQZXJjZW50YWdlIG9mIExlYWRlcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKICAKICAKYGBgCgojIyBDb3VudHJ5IENvdW50IGZvciBDb3VudHJpZXMgdGhhdCBoYXZlIGZhY2VkIG5vIHJlZ2ltZSBjaGFuZ2UgYW5kIGhhdmUgZWl0aGVyIHJlbWFpbmVkIERlbW9jcmFjaWVzIG9yIERpY3RhdG9yc2hpcHMgdGhyb3VnaG91dCBhbmQgRHluYXN0aWMgSW5mb3JtYXRpb24KYGBge3IgZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtIDwtIGdkZCAlPiUgCiAgICBkaXN0aW5jdChDb3VudHJ5LCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUKICAgIGdyb3VwX2J5KGRpY3RhdG9yc2hpcCkgJT4lIAogICAgc3VtbWFyaXNlKE51bWJlcl9PZl9Db3VudHJpZXNfV2l0aF9Ob19SZWdDaGFuZ2UgPSBuKCkpCgprbml0cjo6a2FibGUoZ2RkX25vX3JlZ2ltZV9jaGFuZ2VfZGljX2RlbSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIkNvdW50cnkgQ291bnQgZm9yIENvdW50cmllcyB0aGF0IGhhdmUgZmFjZWQgbm8gcmVnaW1lIGNoYW5nZSBhbmQgaGF2ZSBlaXRoZXIgcmVtYWluZWQgRGVtb2NyYWNpZXMgb3IgRGljdGF0b3JzaGlwcyB0aHJvdWdob3V0IikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKCgpnZGRfZHluYXN0aWNfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtIDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgZGljdGF0b3JzaGlwKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAKCgojUHJvcG9ydGlvbiBvZiBZZWVhcnMgVW5kZXIgRHluIFJ1bGUgIAoKZ2RkX2R5bmFzdGljX25vX3JlZ2ltZV9jaGFuZ2VfZGljX2RlbV9zdW1tYXJ5IDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgZGljdGF0b3JzaGlwKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoZGljdGF0b3JzaGlwKSAlPiUgCiAgc3VtbWFyaXNlKFBlcmNlbnRhZ2VfRHluYXN0aWNfWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmdncGxvdChnZGRfZHluYXN0aWNfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtLCBhZXMoeD0gZmFjdG9yKGRpY3RhdG9yc2hpcCksIHk9cHJvcF9keW5feWVhcnMpKSsKICBnZW9tX2JveHBsb3QoKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUHJvcG9ydGlvbiBvZiB5ZWFycyB1bmRlciBEeW5hc3RpYyBSdWxlIGJ5IERpY3RhdG9yc2hpcCBTdGF0dXMgaW4gUG9saXRpZXMgd2l0aCBObyBSZWdpbWUgQ2hhbmdlIiwKICAgIHggPSAiRGljdGF0b3JzaGlwICgxKSBvciBEZW1vY3JhY3kgKDApIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiBZZWFycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKZ2RkX2R5bmFzdGljX25vX3JlZ2ltZV9jaGFuZ2VfZGljX2RlbV9zdW1tYXJ5X3llYXJzIDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgZGljdGF0b3JzaGlwKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoWWVhciwgZGljdGF0b3JzaGlwKSAlPiUgCiAgc3VtbWFyaXNlKFBlcmNlbnRhZ2VfRHluYXN0aWNfWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmdncGxvdChnZGRfZHluYXN0aWNfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtX3N1bW1hcnlfeWVhcnMsIGFlcyh4PVllYXIsIHk9UGVyY2VudGFnZV9EeW5hc3RpY19ZZWFycykpKwogIGdlb21fbGluZSgpKwogIHlsaW0oMCw1MCkrCiAgZmFjZXRfd3JhcCh+ZGljdGF0b3JzaGlwKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUHJvcG9ydGlvbiBvZiB5ZWFycyB1bmRlciBEeW5hc3RpYyBSdWxlIGJ5IERpY3RhdG9yc2hpcCBTdGF0dXMgaW4gUG9saXRpZXMgd2l0aCBObyBSZWdpbWUgQ2hhbmdlIiwKICAgIHggPSAiRGljdGF0b3JzaGlwICgxKSBvciBEZW1vY3JhY3kgKDApIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiBZZWFycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKCgojUGVyY2VudGFnZSBvZiBMZWFkZXJzIGluIGNvdW50cmllcyB3aXRoIG5vIHRyYW5zaXRpb25zIGFuZCBoYXZlIHJlbWFpbmVkIGRpY3RhdG9yc2hpcCBvciBkZW1vY3JhY2llcwpnZGRfZHlucGVyY2VudF9kaWNkZW1fbGVhZGVyIDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpCgpnZGRfZHlucGVyY2VudF9kaWNkZW1fbGVhZGVyX3N1bW1hcnkgPC0gZ2RkICU+JQogIGZpbHRlcihSZWdpbWVfQ2hhbmdlID09MCkgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoZGljdGF0b3JzaGlwKSAlPiUgCiAgc3VtbWFyaXNlKER5bmFzdGljX1J1bGVyc19wZXJjZW50YWdlID0gbWVhbihQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpCiAgCmdncGxvdChnZGRfZHlucGVyY2VudF9kaWNkZW1fbGVhZGVyLCBhZXMoeCA9IGZhY3RvcihkaWN0YXRvcnNoaXApLCB5ID1QZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgd2l0aCBObyBSZWdpbWUgQ2hhbmdlIiwKICAgIHggPSAiRGljdGF0b3JzaGlwICgxKSBhbmQgRGVtb2NyYWN5ICgwKSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQpgYGAKCiMjIENvdW50cmllcyB0aGF0IGhhdmUgaGFkIG5vIHJlZ2ltZSBjaGFuZ2UgYW5kIGhhdmUgcmVtYWluZWQgRGVtb2NyYXRpYyBieSBkZW1vY3JhY3kgdHlwZQoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Kb25seV9kZW1fbm9fcmVnaW1lY2hhbmdlIDwtIGdkZCAlPiUgCiAgZmlsdGVyKFJlZ2ltZV9DaGFuZ2UgPT0gMCkgJT4lIAogIGZpbHRlcihkaWN0YXRvcnNoaXAgPT0gMCkgJT4lIAogIGFycmFuZ2UoQ291bnRyeSwgWWVhcikKCm9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSA8LSBvbmx5X2RlbV9ub19yZWdpbWVjaGFuZ2UgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKAogICAgUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5ID0gYyhOQSwgaGVhZChzeXN0ZW1fY2F0ZWdvcnksIC0xKSksCiAgICBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSA9IGlmZWxzZSgKICAgICAgaXMubmEoUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5KSwgMCwgIyBObyB0cmFuc2l0aW9uIGlmIHByZXZpb3VzIHZhbHVlIGlzIE5BCiAgICAgIGlmZWxzZShzeXN0ZW1fY2F0ZWdvcnkgIT0gUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5LCAxLCAwKSAjIFRyYW5zaXRpb24gaWYgdGhlcmUgaXMgYSBjaGFuZ2UKICAgICkKICApICU+JQogIHVuZ3JvdXAoKQoKb25seV9kZW1fbm9fcmVnaW1lY2hhbmdlIDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlID0gaWZfZWxzZShuX2Rpc3RpbmN0KEludGVybmFsX1RyYW5zaXRpb25fQmluYXJ5KSA+IDEsIDEsIDApKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIHNlbGVjdChjb3VudHJ5X2lzb2NvZGUsIENPVywgUmVnaW9uLCBDb3VudHJ5LCBZZWFyLCBub21pbmFsX2xlYWRlciwgZmxuX2dlbmRlciwgc3lzdGVtX2NhdGVnb3J5LCBQcmV2aW91c19TeXN0ZW1fQ2F0ZWdvcnksIGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlLCBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSwgZXZlcnl0aGluZygpKQoKb25seV9kZW1faW50ZXJuYWxfY2hhbmdlX3N1bW1hcnkgPC1vbmx5X2RlbV9ub19yZWdpbWVjaGFuZ2UgJT4lIAogIGRpc3RpbmN0KENvdW50cnksLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlKSAlPiUgCiAgc3VtbWFyaXNlKAogICAgTnVtYmVyX09mX0NvdW50cmllcyA9IG4oKSkKICAgIApvbmx5X2RlbV9ub19pbnRlcm5hbGNoYW5nZV9zdW1tYXJ5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZmlsdGVyKGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlID09IDApICU+JSAKICBkaXN0aW5jdChDb3VudHJ5LCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoc3lzdGVtX2NhdGVnb3J5KSAlPiUgCiAgc3VtbWFyaXNlKE51bV9Db3VudHJpZXMgPW4oKSkKCm9ubHlfZGVtX3Byb3BfZHluIDwtICBvbmx5X2RlbV9ub19yZWdpbWVjaGFuZ2UgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UpICU+JSAKICBzdW1tYXJpc2UoUHJvcF9EeW5fWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKICAKCiMjIFByb3BfRHluWWVhcnMgQnkgU3lzdGVtIENhdGVnb3J5IHR5cGUgd2hlcmUgbm8gaW50ZXJuYWwgY2hhbmdlIGhhcyBoYXBwZW5lZApvbmx5X2RlbV9wcm9wX2R5bl9zeXN0ZW1fY2F0ZWdvcnkgPC0gb25seV9kZW1fbm9fcmVnaW1lY2hhbmdlICU+JSAKICBmaWx0ZXIoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIHN5c3RlbV9jYXRlZ29yeSkgJT4lCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUKICB1bmdyb3VwKCkKCm9ubHlfZGVtX3Byb3BfZHluX3N5c3RlbV9jYXRlZ29yeV9zdW1tYXJ5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZmlsdGVyKGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlID09IDApICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBzeXN0ZW1fY2F0ZWdvcnkpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoUHJvcF9EeW5fWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmtuaXRyOjprYWJsZShvbmx5X2RlbV9wcm9wX2R5bl9zeXN0ZW1fY2F0ZWdvcnlfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgeWVhcnMgdW5kZXIgRHluYXN0aWMgUnVsZSBpbiBQVVJFIERlbW9jcmFjaWVzIGJ5IFN5c3RlbSBDYXRlZ29yeSIpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksCiAgICAgICAgICAgICAgICBmdWxsX3dpZHRoID0gRkFMU0UpCgpnZ3Bsb3Qob25seV9kZW1fcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5LCBhZXMoeCA9IGZhY3RvcihzeXN0ZW1fY2F0ZWdvcnkpLCB5ID1wcm9wX2R5bl95ZWFycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUiLAogICAgeCA9ICJEZW1vY3JhY3kgVHlwZSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKCiMjIEZvciBQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgaW4gY291bnRyaWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmx5IG9uZSBraW5kIG9mIGRlbW9jcmFjeSB0aHJvdWdob3V0Cgpvbmx5X2RlbV9sZWFkZXJfc3lzdGVtX2NhdGVnb3J5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKb25seV9kZW1fbGVhZGVyX3N5c3RlbV9jYXRlZ29yeV9zdW1tYXJ5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UgPT0wKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKICAKZ2dwbG90KG9ubHlfZGVtX2xlYWRlcl9zeXN0ZW1fY2F0ZWdvcnksIGFlcyh4ID0gZmFjdG9yKHN5c3RlbV9jYXRlZ29yeSksIHkgPVBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkrCiAgZ2VvbV9ib3hwbG90KCkrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgRHluYXN0aWMgTGVhZGVycyIsCiAgICBjYXB0aW9uID0gIkluIHBvbGl0aWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmUga2luZCBvZiBkZW1vY3JhY3kgdGhyb3VnaG91dCIsCiAgICB4ID0gIlN5c3RlbSBDYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKYGBgCgojIyBDb3VudHJpZXMgdGhhdCBoYXZlIGhhZCBubyByZWdpbWUgY2hhbmdlIGFuZCBoYXZlIHJlbWFpbmVkIGRpY3RhdG9yc2hpcCBieSBkaWN0YXRvcnNoaXAgdHlwZQoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Kb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlIDwtIGdkZCAlPiUgCiAgZmlsdGVyKFJlZ2ltZV9DaGFuZ2UgPT0gMCkgJT4lIAogIGZpbHRlcihkaWN0YXRvcnNoaXAgPT0gMSkgJT4lIAogIGFycmFuZ2UoQ291bnRyeSwgWWVhcikKCm9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSA8LSBvbmx5X2RpY19ub19yZWdpbWVjaGFuZ2UgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKAogICAgUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5ID0gYyhOQSwgaGVhZChzeXN0ZW1fY2F0ZWdvcnksIC0xKSksCiAgICBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSA9IGlmZWxzZSgKICAgICAgaXMubmEoUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5KSwgMCwgIyBObyB0cmFuc2l0aW9uIGlmIHByZXZpb3VzIHZhbHVlIGlzIE5BCiAgICAgIGlmZWxzZShzeXN0ZW1fY2F0ZWdvcnkgIT0gUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5LCAxLCAwKSAjIFRyYW5zaXRpb24gaWYgdGhlcmUgaXMgYSBjaGFuZ2UKICAgICkKICApICU+JQogIHVuZ3JvdXAoKQoKb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlIDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlID0gaWZfZWxzZShuX2Rpc3RpbmN0KEludGVybmFsX1RyYW5zaXRpb25fQmluYXJ5KSA+IDEsIDEsIDApKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIHNlbGVjdChjb3VudHJ5X2lzb2NvZGUsIENPVywgUmVnaW9uLCBDb3VudHJ5LCBZZWFyLCBub21pbmFsX2xlYWRlciwgZmxuX2dlbmRlciwgc3lzdGVtX2NhdGVnb3J5LCBQcmV2aW91c19TeXN0ZW1fQ2F0ZWdvcnksIGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlLCBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSwgZXZlcnl0aGluZygpKQoKI2NvdW50cnkgY291bnQgb24gbnVtYmVyIG9mIGNvdW50cmllcyB0aGF0IGhhdmUgcmVtYWluZWQgZGljIGJ1dCBieSBpbnRlcm5hbCBkaWMgY2hhbmdlIHllcyBvciBubwpvbmx5X2RpY19pbnRlcm5hbF9jaGFuZ2Vfc3VtbWFyeSA8LW9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZGlzdGluY3QoQ291bnRyeSwua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UpICU+JSAKICBzdW1tYXJpc2UoCiAgICBOdW1iZXJfT2ZfQ291bnRyaWVzID0gbigpKQogICAgCiMjIE5vIGludGVybmFsIGNoYW5nZSBjb3VudCBieSBkaWN0YXRvcnNoaXAgdHlwZSByZW1haW5lZCBzYW1lIGRpYyB0aHJvdWdob3V0Cm9ubHlfZGljX25vX2ludGVybmFsY2hhbmdlX3N1bW1hcnkgPC0gb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlICU+JSAKICBmaWx0ZXIoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoTnVtX0NvdW50cmllcyA9bigpKQoKI0R5bmFzdGljIFByb3BvcnRpb25zIGJ5IGRpY3RhdG9yc2hpcHMgd2hldGhlciB0aGV5IGludGVybmFsbHkgY2hhbmdlZCBmcm9tIG9uZSBkaWMgdG8gYW5vdGhlciBkaWMKb25seV9kaWNfcHJvcF9keW4gPC0gb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBpbnRlcm5hbF9kaWNfc3lzdGVtX2NoYW5nZSkgJT4lCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlKSAlPiUgCiAgc3VtbWFyaXNlKFByb3BfRHluX1llYXJzID0gbWVhbihwcm9wX2R5bl95ZWFycykpCgojIyBQcm9wX0R5blllYXJzIEJ5IFN5c3RlbSBDYXRlZ29yeSB0eXBlIHdoZXJlIG5vIGludGVybmFsIGNoYW5nZSBoYXMgaGFwcGVuZWQKb25seV9kaWNfcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5IDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZmlsdGVyKGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlID09IDApICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBzeXN0ZW1fY2F0ZWdvcnkpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpCgpvbmx5X2RpY19wcm9wX2R5bl9zeXN0ZW1fY2F0ZWdvcnlfc3VtbWFyeSA8LSBvbmx5X2RpY19ub19yZWdpbWVjaGFuZ2UgJT4lIAogIGZpbHRlcihpbnRlcm5hbF9kaWNfc3lzdGVtX2NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgc3lzdGVtX2NhdGVnb3J5KSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoc3lzdGVtX2NhdGVnb3J5KSAlPiUgCiAgc3VtbWFyaXNlKFByb3BfRHluX1llYXJzID0gbWVhbihwcm9wX2R5bl95ZWFycykpCgprbml0cjo6a2FibGUob25seV9kaWNfcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5X3N1bW1hcnksIGZvcm1hdCA9ICJodG1sIiwgY2FwdGlvbiA9ICJQZXJjZW50YWdlIG9mIHllYXJzIHVuZGVyIER5bmFzdGljIFJ1bGUgaW4gUFVSRSBEaWN0YXRvcnNoaXBzIGJ5IFN5c3RlbSBDYXRlZ29yeSIpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksCiAgICAgICAgICAgICAgICBmdWxsX3dpZHRoID0gRkFMU0UpCgpnZ3Bsb3Qob25seV9kaWNfcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5LCBhZXMoeCA9IGZhY3RvcihzeXN0ZW1fY2F0ZWdvcnkpLCB5ID1wcm9wX2R5bl95ZWFycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUiLAogICAgeCA9ICJEaWN0YXRvcnNoaXAgVHlwZSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKCiMjIEZvciBQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgaW4gY291bnRyaWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmx5IG9uZSBraW5kIG9mIGRlbW9jcmFjeSB0aHJvdWdob3V0Cgpvbmx5X2RpY19sZWFkZXJfc3lzdGVtX2NhdGVnb3J5IDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKb25seV9kaWNfbGVhZGVyX3N5c3RlbV9jYXRlZ29yeV9zdW1tYXJ5IDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UgPT0wKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKICAKZ2dwbG90KG9ubHlfZGljX2xlYWRlcl9zeXN0ZW1fY2F0ZWdvcnksIGFlcyh4ID0gZmFjdG9yKHN5c3RlbV9jYXRlZ29yeSksIHkgPVBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkrCiAgZ2VvbV9ib3hwbG90KCkrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgRHluYXN0aWMgTGVhZGVycyIsCiAgICBjYXB0aW9uID0gIkluIHBvbGl0aWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmUga2luZCBvZiBkZW1vY3JhY3kgdGhyb3VnaG91dCIsCiAgICB4ID0gIlN5c3RlbSBDYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQpgYGAKCiMjIENvdW50cnkgQ291bnQgZm9yIG51bWJlciBvZiBSZWdpbWUgVHJhbnNpdGlvbnMgYW5kIER5bmFzdGljIEluZm9ybWF0aW9uCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojYmFzZWQgb24gZGljIGRlbQpnZGRfdHJhbnNpdGlvbl9jb3VudCA8LSBnZGQgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShOdW1fVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoTnVtYmVyX0NvdW50cmllcyA9IG4oKSkKCmtuaXRyOjprYWJsZShnZGRfdHJhbnNpdGlvbl9jb3VudCwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIkNvdW50cnkgQ291bnQgZm9yIG51bWJlciBvZiBSZWdpbWUgVHJhbnNpdGlvbnMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEZBTFNFKQoKCiMjIEdERCBEeW5hc3RpYyBQZXJjZW50YWdlIGZvciBOdW1fVHJhbnNpdGlvbnMgMS04CmdkZF9keW5fbnVtdHJhbnMgPC0gZ2RkICU+JSAKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAxKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgTnVtX1RyYW5zaXRpb25zKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAKCmdkZF9keW5fbnVtdHJhbnNfc3VtbWFyeSA8LSBnZGQgJT4lIAogIGZpbHRlcihSZWdpbWVfQ2hhbmdlID09IDEpICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBOdW1fVHJhbnNpdGlvbnMpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShOdW1fVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoUGVyY2VudGFnZV9EeW5hc3RpY19ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKa25pdHI6OmthYmxlKGdkZF9keW5fbnVtdHJhbnNfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgeWVhcnMgdW5kZXIgRHluYXN0aWMgUnVsZSBieSBudW1iZXIgb2YgUmVnaW1lIFRyYW5zaXRpb25zIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKICAKCmdkZF9keW5fbnVtdHJhbnNfbGVhZGVyX3N1bW1hcnkgPC0gZ2RkICU+JSAKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAxKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShOdW1fVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKCiMjIE5ldyBDYXRlZ29yeSBmb3Igb25lL3R3byBvciBtb3JlIHRyYW5zaXRpb25zCgoKZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgPC0gZ2RkICU+JSAKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSAhPSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShOdW1iZXJfb2ZfVHJhbnNpdGlvbnMgPSBjYXNlX3doZW4oCiAgICAgICAgICAgICAgICAgIE51bV9UcmFuc2l0aW9ucyA9PSAxIH4gIk9uZSBUcmFuc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgTnVtX1RyYW5zaXRpb25zID49IDIgfiAiVHdvIG9yIE1vcmUgVHJhbnNpdGlvbnMiLAogICAgICAgICAgICAgVFJVRSB+IE5BX2NoYXJhY3Rlcl8pKQoKCgoKI1Byb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluIFJ1bGUgYnkgT25lIG9yIFR3byBNb3JlCmdkZF9keW5hc3RpY3llYXJzX3RyYW5zaXRpb24gPC0gZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSwgTnVtYmVyX29mX1RyYW5zaXRpb25zKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAKICAKZ2RkX2R5bmFzdGljX3RyYW5zaXRpb25zX3N1bW1hcnkgPC0gZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSwgTnVtYmVyX29mX1RyYW5zaXRpb25zKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoTnVtYmVyX29mX1RyYW5zaXRpb25zKSAlPiUgCiAgc3VtbWFyaXNlKFBlcmNlbnRhZ2VfRHluYXN0aWNfWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmtuaXRyOjprYWJsZShnZGRfZHluYXN0aWNfdHJhbnNpdGlvbnNfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgeWVhcnMgdW5kZXIgRHluYXN0aWMgUnVsZSBieSBPbmUgYW5kIFR3byBvciBNb3JlIHRyYW5zaXRpb25zIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKCmdncGxvdChnZGRfZHluYXN0aWN5ZWFyc190cmFuc2l0aW9uLCBhZXMoeD0gZmFjdG9yKE51bWJlcl9vZl9UcmFuc2l0aW9ucyksIHk9cHJvcF9keW5feWVhcnMpKSsKICBnZW9tX2JveHBsb3QoKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUHJvcG9ydGlvbiBvZiB5ZWFycyB1bmRlciBEeW5hc3RpYyBSdWxlIGJ5IE51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB4ID0gIk51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgWWVhcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKCiNQZXJjZW50YWdlIG9mIExlYWRlcnMKZ2RkX3RyYW5zaXRpb25fbGVhZGVyIDwtIGdkZF90cmFuc2l0aW9uX2NhdGVnb3J5X29uZV90d29tb3JlICU+JQogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKZ2RkX3RyYW5zaXRpb25fbGVhZGVyX3N1bW1hcnkgPC0gZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgJT4lCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShOdW1iZXJfb2ZfVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKCmtuaXRyOjprYWJsZShnZGRfdHJhbnNpdGlvbl9sZWFkZXJfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgRHluYXN0aWMgTGVhZGVycyBieSBPbmUgYW5kIFR3byBvciBNb3JlIHRyYW5zaXRpb25zIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKICAKZ2dwbG90KGdkZF90cmFuc2l0aW9uX2xlYWRlciwgYWVzKHggPSBmYWN0b3IoTnVtYmVyX29mX1RyYW5zaXRpb25zKSwgeSA9UGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMpKSsKICBnZW9tX2JveHBsb3QoKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUGVyY2VudGFnZSBvZiBEeW5hc3RpYyBMZWFkZXJzIGJ5IE51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB4ID0gIk51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKYGBgCgojIyBQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUsIFllYXItYnkteWVhciBEeW5hc3RpYyBSdWxlLCBQcm9wb3J0aW9uIG9mIGR5bmFzdGljIGxlYWRlcnMgYnkgUG9zdC1XVzIgSW5kZXBlbmRlbmNlIHN0YXR1cwoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KCmdkZF9keW5hc3RpY19jb3VudHJpZXNfaW5kZXBlbmRlbmNlX3N0YXR1cyA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KENvdW50cnksWWVhcikgJT4lIAogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2Jpbixwb3N0d3cyX2luZCkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpLAogICAgICAgICAgICBDdW1tdWxhdGl2ZV9EeW5fWWVhcnMgPSBzdW0oZHluX3llYXJzKSkKCmdkZF9keW5hc3RpY19wb3N0d3cyX2luZF9sZWFkZXIgPC0gZ2RkICU+JSAKICBkaXN0aW5jdChub21pbmFsX2xlYWRlciwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnkpICU+JSAKICBtdXRhdGUoRHluX1J1bGVycyA9IHN1bShwcmVkX2JpbiksCiAgICAgICAgIHRvdGFsX3J1bGVycyA9IG4oKSwKICAgICAgICAgUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMgPSBEeW5fUnVsZXJzL3RvdGFsX3J1bGVycyoxMDApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluLHBvc3R3dzJfaW5kKSAlPiUgCiAgc3VtbWFyaXNlKER5bmFzdGljX1J1bGVyc19wZXJjZW50YWdlID0gbWVhbihQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpCgpsZWZ0X2pvaW4oZ2RkX2R5bmFzdGljX2NvdW50cmllc19pbmRlcGVuZGVuY2Vfc3RhdHVzLGdkZF9keW5hc3RpY19wb3N0d3cyX2luZF9sZWFkZXIsIGJ5ID0gInBvc3R3dzJfaW5kIiwieWVhcl9iaW4iKQpgYGAKCiMjIFByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBieSBGb3JtZXIgQnJpdGlzaCBDb2xvbnkgU3RhdHVzIChJbmZvcm1hdGlvbiBTY3JhcGVkIGZyb20gV2lraXBlZGlhKQoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0KZ2RkX2R5bmFzdGljX2NvdW50cmllc19icml0Y29sb255IDwtIGdkZCAlPiUKICBncm91cF9ieShDb3VudHJ5LCB5ZWFyX2JpbiwgZm9ybWVyX2JyaXRpc2hfY29sb255KSAlPiUgCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUgCiAgZGlzdGluY3QoQ291bnRyeSwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoZm9ybWVyX2JyaXRpc2hfY29sb255LCB5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKa25pdHI6OmthYmxlKGdkZF9keW5hc3RpY19jb3VudHJpZXNfYnJpdGNvbG9ueSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBpbiBEZW1vY3JhdGljIFJlZ2ltZXMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEZBTFNFKQoKCmdkZF9keW5hc3RpY19jb3VudHJpZXNfYnJpdGNvbG9ueSRQcm9wX0R5bl9ZZWFycyA8LSByb3VuZCgoZ2RkX2R5bmFzdGljX2NvdW50cmllc19icml0Y29sb255JFByb3BfRHluX1llYXJzKSwgMikKCmdncGxvdChnZGRfZHluYXN0aWNfY291bnRyaWVzX2JyaXRjb2xvbnksIGFlcyh4ID0gYXMuZmFjdG9yKHllYXJfYmluKSwgeSA9IFByb3BfRHluX1llYXJzLCBjb2xvciA9IGFzLmZhY3Rvcihmb3JtZXJfYnJpdGlzaF9jb2xvbnkpKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDMsIGFscGhhID0gMC43LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBmb3JtZXJfYnJpdGlzaF9jb2xvbnkpLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgc2l6ZSA9IDEpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiMCIgPSAiYmx1ZSIsICIxIiA9ICJyZWQiKSwgbGFiZWxzID0gYygiMCIgPSAiTm90IEEgRm9ybWVyIEJyaXRpc2ggQ29sb255IiwgIjEiID0gIkZvcm1lciBCcml0aXNoIENvbG9ueSIpKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZV9zdGF0YSgpICsKICBsYWJzKHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSAoYnkgZm9ybWVyIEJyaXRpc2ggQ29sb255IFN0YXR1cykiLAogICAgICAgeCA9ICJZZWFyIEJpbiIsCiAgICAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMiLAogICAgICAgY29sb3IgPSAiRm9ybWVyIEJyaXRpc2ggQ29sb255IikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpCgoKYGBgCgoKCiMjIFByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBieSBSZWdpb25zIChBY3Jvc3MgYWxsIHJlZ2ltZSB0eXBlcykKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KCgpgYGAKCgojIyBNYXBwaW5nIG9mIER5bmFzdGljIFJlbGF0aW9uIFR5cGUgQWNyb3NzIGFsbCByZWdpbWUgVHlwZXMKClRoZSBuZWNlc3NhcnkgcHJlLWNvbmRpdGlvbiBmb3IgdGhlIGR5bmFzdCBpbiBvdXIgZGF0YXNldCBpcyB0aGF0IGEgbGVhZGVyIHdpbGwgb25seSBiZSBjbGFzc2lmaWVkIGFzIGEgZHluYXN0IGlmIGFuZCBvbmx5IGlmIGEgdGhhdCBsZWFkZXIgaW4gb3VyIGRhdGFzZXQgaGFzIGEgcGFyZW50LCBpbi1sYXcsIG9yIGFueSBraW5kIG9mIGRpcmVjdCByZWxhdGl2ZSB3aG8gaGFzIGNvbnRlc3RlZCBhbmQgd29uIGFuIGVsZWN0aW9uIGF0IGFueSBsZXZlbCBvZiBwb2xpdGljcyBpbiB0aGVpciByZXNwZWN0aXZlIHBvbGl0aWVzLCB0aGVuIHRoYXQgcG9saXRpY2lhbiBpcyBhIGR5bmFzdC4KClRoaXMgZ3JhcGggc2hvd3Mgd2hhdCBraW5kIG9mIGR5bmFzdGljIHJlbGF0aW9uc2hpcHMgYXJlIG1vc3QgcmVsZXZhbnQgYWNyb3NzIHJlZ2ltZSB0eXBlcyAoQ2l2aWxpYW4gRGljdGF0b3JzaGlwLCBNaWxpdGFyeSBEaWN0YXRvcnNoaXAsIE1peGVkIERlbW9jcmF0aWMsIFBhcmxpYW1lbnRhcnkgRGVtb2NyYWN5LCBQcmVzaWRlbnRpYWwgRGVtb2NyYWN5LCBSb3lhbCBEaWN0YXRvcnNoaXApCgpgYGB7ciBldmFsPVRSVUUsIG1lc3NhZ2U9IEZBTFNFLCBlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0V9CiAKZ2RkX3JlbGF0aW9uX2FsbCA8LSBnZGQgJT4lIAogICAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICAgIGZpbHRlcihwcmVkX2JpbiA9PSAxLCByZWxhdGlvbl9jb2RlX3ByZWQgIT0gMCkKCmdkZF9yZWxhdGlvbl9hbGwgPC1nZGRfcmVsYXRpb25fYWxsICU+JSAKICBncm91cF9ieShmbG5fZ2VuZGVyKSAlPiUKICBjb3VudChyZWxhdGlvbl9jb2RlX3ByZWQpICU+JQogIG11dGF0ZShSZWxhdGlvbl9UeXBlID0gY2FzZV93aGVuKAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAyICB+ICJGYXRoZXItU29uIiwKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMyAgfiAiTW90aGVyLVNvbiIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDggIH4gIkJyb3RoZXItQnJvdGhlciIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDEwIH4gIkdyYW5kZmF0aGVyLUdyYW5kc29uIiwKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTEgfiAiR3JhbmRtb3RoZXItR3JhbmRzb24iLAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxNCB+ICJVbmNsZS1OZXBoZXciLAogIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxOCB+ICJDb3VzaW4tQ291c2luIiwKICByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTkgfiAiT3RoZXIiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAyICB+ICJGYXRoZXItRGF1Z2h0ZXIiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSA2ICB+ICJIdXNiYW5kLVdpZmUiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSA4ICB+ICJCcm90aGVyLVNpc3RlciIsCiAgZmxuX2dlbmRlciA9PSAxICYgcmVsYXRpb25fY29kZV9wcmVkID09IDEwICB+ICJHcmFuZGZhdGhlci1HcmFuZGRhdWdodGVyIiwKICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKQogICkgJT4lIAogIHJlbmFtZShUb3RhbCA9IG4pICU+JSAKICBtdXRhdGUocGVyY2VudGFnZV90b3RfZHluID0gVG90YWwvc3VtKFRvdGFsKSoxMDApCgpyZWxhdGlvbiA8LSBnZ3Bsb3QoZ2RkX3JlbGF0aW9uX2FsbCwgYWVzKHggPSBSZWxhdGlvbl9UeXBlLCB5ID0gVG90YWwsIGZpbGwgPSBSZWxhdGlvbl9UeXBlKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgbGFicyh0aXRsZSA9ICJEeW5hc3RpYyBSZWxhdGlvbnNoaXAgQWNyb3NzIEFsbCBSZWdpbWUgVHlwZXMiLAogICAgICAgeCA9ICJEeW5hc3RpYyBSZWxhdGlvbnNoaXAgVHlwZSIsCiAgICAgICB5ID0gIlRvdGFsIikgKwogIHRoZW1lX3N0YXRhKCkrCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpnZ3Bsb3RseShyZWxhdGlvbikKCmBgYAoKIyMgTWFwcGluZyBvZiBEeW5hc3RpYyBSZWxhdGlvbiBUeXBlIGluIERlbW9jcmF0aWMgcmVnaW1lIFR5cGVzCgpUaGUgbmVjZXNzYXJ5IHByZS1jb25kaXRpb24gZm9yIHRoZSBkeW5hc3QgaW4gb3VyIGRhdGFzZXQgaXMgdGhhdCBhIGxlYWRlciB3aWxsIG9ubHkgYmUgY2xhc3NpZmllZCBhcyBhIGR5bmFzdCBpZiBhbmQgb25seSBpZiBhIHRoYXQgbGVhZGVyIGluIG91ciBkYXRhc2V0IGhhcyBhIHBhcmVudCwgaW4tbGF3LCBvciBhbnkga2luZCBvZiBkaXJlY3QgcmVsYXRpdmUgd2hvIGhhcyBjb250ZXN0ZWQgYW5kIHdvbiBhbiBlbGVjdGlvbiBhdCBhbnkgbGV2ZWwgb2YgcG9saXRpY3MgaW4gdGhlaXIgcmVzcGVjdGl2ZSBwb2xpdGllcywgdGhlbiB0aGF0IHBvbGl0aWNpYW4gaXMgYSBkeW5hc3QuCgpUaGlzIGdyYXBoIHNob3dzIHdoYXQga2luZCBvZiBkeW5hc3RpYyByZWxhdGlvbnNoaXBzIGFyZSBtb3N0IHJlbGV2YW50IGluIGRlbW9jcmF0aWMgcmVnaW1lIHR5cGVzIChNaXhlZCBEZW1vY3JhdGljLCBQYXJsaWFtZW50YXJ5IERlbW9jcmFjeSwgUHJlc2lkZW50aWFsIERlbW9jcmFjeSkKCmBgYHtyIGV2YWw9VFJVRSwgbWVzc2FnZT1GQUxTRSxlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0V9CmdkZF9yZWxhdGlvbl9kZW0gPC0gZ2RkICU+JSAKICAgIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgICBmaWx0ZXIocHJlZF9iaW4gPT0gMSwgcmVsYXRpb25fY29kZV9wcmVkICE9IDApICU+JSAKICBmaWx0ZXIoc3lzdGVtX2NhdGVnb3J5ICVpbiUgYygiTWl4ZWQgRGVtb2NyYXRpYyIsICJQYXJsaWFtZW50YXJ5IERlbW9jcmFjeSIsICJQcmVzaWRlbnRpYWwgRGVtb2NyYWN5IikpCgpnZGRfcmVsYXRpb25fZGVtIDwtZ2RkX3JlbGF0aW9uX2RlbSAlPiUgCiAgZ3JvdXBfYnkoZmxuX2dlbmRlcikgJT4lCiAgY291bnQocmVsYXRpb25fY29kZV9wcmVkKSAlPiUKICBtdXRhdGUoUmVsYXRpb25fVHlwZSA9IGNhc2Vfd2hlbigKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMiAgfiAiRmF0aGVyLVNvbiIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDMgIH4gIk1vdGhlci1Tb24iLAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSA4ICB+ICJCcm90aGVyLUJyb3RoZXIiLAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxMCB+ICJHcmFuZGZhdGhlci1HcmFuZHNvbiIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDExIH4gIkdyYW5kbW90aGVyLUdyYW5kc29uIiwKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTQgfiAiVW5jbGUtTmVwaGV3IiwKICByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTggfiAiQ291c2luLUNvdXNpbiIsCiAgcmVsYXRpb25fY29kZV9wcmVkID09IDE5IH4gIk90aGVyIiwKICBmbG5fZ2VuZGVyID09IDEgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMiAgfiAiRmF0aGVyLURhdWdodGVyIiwKICBmbG5fZ2VuZGVyID09IDEgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gNiAgfiAiSHVzYmFuZC1XaWZlIiwKICBmbG5fZ2VuZGVyID09IDEgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gOCAgfiAiQnJvdGhlci1TaXN0ZXIiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxMCAgfiAiR3JhbmRmYXRoZXItR3JhbmRkYXVnaHRlciIsCiAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXykKICApICU+JSAKICByZW5hbWUoVG90YWwgPSBuKSAlPiUgCiAgbXV0YXRlKHBlcmNlbnRhZ2VfdG90X2R5biA9IFRvdGFsL3N1bShUb3RhbCkqMTAwKQoKcmVsYXRpb25fZGVtX2NvdW50IDwtIGdncGxvdChnZGRfcmVsYXRpb25fZGVtLCBhZXMoeCA9IFJlbGF0aW9uX1R5cGUsIHkgPSBUb3RhbCwgZmlsbCA9IFJlbGF0aW9uX1R5cGUpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBsYWJzKHRpdGxlID0gIkR5bmFzdGljIFJlbGF0aW9uc2hpcCBpbiBEZW1vY3JhdGljIFJlZ2ltZXMiLAogICAgICAgeCA9ICJEeW5hc3RpYyBSZWxhdGlvbnNoaXAgVHlwZSIsCiAgICAgICB5ID0gIlRvdGFsIikgKwogIHRoZW1lX3N0YXRhKCkrCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpnZ3Bsb3RseShyZWxhdGlvbl9kZW1fY291bnQpCgpgYGAKCiMgVGhlIERpZmZlcmVudCBEeW5hc3RzIChhY3Jvc3MgcmVnaW1lIHR5cGVzKSB7LnRhYnNldH0KCldoaWxlIG91ciBkZWZpbml0aW9uIG9mIGEgZHluYXN0IGlzIGNsZWFyIGFzIHN0YXRlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4gVGhpcyBzZWN0aW9uIGV4cGFuZHMgb24gdGhhdCBkZWZpbml0aW9uIGF0IHRhbGtzIGFib3V0IHRocmVlIGRpZmZlcmVudCBraW5kcyBvZiBkeW5hc3QuCgojIyAqVEhFIEZJUlNUIERZTkFTVCoKClRoZSBGaXJzdCBkZWZpbml0aW9uIG9mIER5bmFzdCBpcyB0aGUgb25lIG1lbnRpb25lZCBiZWZvcmUuIFRoaXMgc2hvd3MgdGhlIHByb3BvcnRpb24gb2YgbGVhZGVycyB0aGF0IG5lY2Vzc2FyaWx5IGhhdmUgYW4gYW5jZXN0b3IgaW4gcG9saXRpY3MgYW5kIG1heSBvciBtYXkgbm90IGhhdmUgYSBzdWNjZXNzb3IuIFRoZSBuZWNlc3NhcnkgcHJlY29uZGl0aW9uIGlzIGEgZmFtaWx5IG1lbWJlciBwcmVjZWRpbmcgaGltL2hlciBpbiBwb2xpdGljcyBiZWZvcmUgaGlzIHRpbWUuICgocHJlZF9iaW4gPT0gMSAmIHN1Y19iaW4gZG9lc24ndCBtYXR0ZXIpKQoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KZ2RkX2R5bmFzdF8xIDwtIGdkZCAlPiUKICBncm91cF9ieSh5ZWFyX2JpbiwgWWVhcikgJT4lCiAgc3VtbWFyaXNlKER5bmFzdHMgPSBzdW0ocHJlZF9iaW4pLCBUb3RhbF9MZWFkZXJzID0gbigpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX29mX0R5bmFzdHMgPSBtZWFuKER5bmFzdHMvVG90YWxfTGVhZGVycyoxMDApKQoKZmlyc3RfZHluYXN0IDwtIGdncGxvdChnZGRfZHluYXN0XzEsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX29mX0R5bmFzdHMpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yPSAiYmxhY2siLCBmaWxsID0gIndoaXRlIikrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyB0aGF0IGFyZSBGSVJTVCBDQVRFR09SWSBEeW5hc3RzIiwKICAgIHggPSAiMjUtWWVhci1DYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2UiCiAgKSArCiAgdGhlbWVfc3RhdGEoKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkgCmdncGxvdGx5KGZpcnN0X2R5bmFzdCkKYGBgCgojIyAqVEhFIFNFQ09ORCBEWU5BU1QgKERZTkFTVFktU1VTVEFJTkVSKSoKClRoZSBTZWNvbmQgZGVmaW5pdGlvbiBvZiBEeW5hc3QgaXMgdGhlIG9uZSBvZiBkeW5hc3R5IHN1c3RhaW5lcnMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGdyYXBoIHNob3dzIHRoZSBwcm9wb3J0aW9uIG9mIGxlYWRlcnMgdGhhdCBuZWNlc3NhcmlseSBjb21lIGZyb20gYXBvbGl0aWNhbCBmYW1pbHkgYW5kIGFsc28gbGVhdmVzIGEgc3VjY2Vzc29yIGluIHBvbGl0aWNzLiBUaGVyZWZvcmUsIGEgZHluYXN0eSBzdXN0YWluZXIgVGhlIG5lY2Vzc2FyeSBwcmVjb25kaXRpb25zIGFyZSBhIGZhbWlseSBtZW1iZXIgcHJlY2VkaW5nIGhpbS9oZXIgaW4gcG9saXRpY3MgYmVmb3JlIGhpcy9oZXIgdGltZSBhbmQgYSBmYW1pbHkgbWVtYmVyIHN1Y2VlZGluZyBoaW0vaGVyIGluIHBvbGl0aWNzIGFmdGVyIGhpcy9oZXIgdGltZS4gKHByZWRfYmluID09IDEgJiBzdWNfYmluID09IDEpCgpgYGB7ciBldmFsPVRSVUUsIG1lc3NhZ2U9RkFMU0UsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQpnZGRfZHluYXN0eV9zdXN0YWluZXIgPC0gZ2RkICU+JQogIGdyb3VwX2J5KFllYXIsIHllYXJfYmluKSAlPiUKICBzdW1tYXJpc2UoCiAgICBEeW5hc3R5X1N1c3RhaW5lcnMgPSBzdW0ocHJlZF9iaW4gPT0gMSAmIHN1Y19iaW4gPT0gMSksCiAgICBUb3RhbF9MZWFkZXJzID0gbigpCiAgKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX29mX0R5bmFzdHlfU3VzdGFpbmVycyA9IG1lYW4oRHluYXN0eV9TdXN0YWluZXJzL1RvdGFsX0xlYWRlcnMqMTAwKSkKCkR5bmFzdHlfU3VzdGFpbmVycyA8LSBnZ3Bsb3QoZ2RkX2R5bmFzdHlfc3VzdGFpbmVyLCBhZXMoeCA9IHllYXJfYmluLCB5ID0gUHJvcG9ydGlvbl9vZl9EeW5hc3R5X1N1c3RhaW5lcnMpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yPSAiYmxhY2siLCBmaWxsID0gIndoaXRlIikrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyB0aGF0IGFyZSBEeW5hc3R5LVN1c3RhaW5lcnMiLAogICAgeCA9ICIyNS1ZZWFyLUNhdGVnb3J5IiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsNTApKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKSAKZ2dwbG90bHkoRHluYXN0eV9TdXN0YWluZXJzKQoKYGBgCgojIyAqVEhFIFRISVJEIERZTkFTVCAoRFlOQVNUWS1FTkRFUikqCgpUaGUgVEhJUkQgZGVmaW5pdGlvbiBvZiBEeW5hc3QgaXMgdGhlIG9uZSBvZiBkeW5hc3R5LWVuZGVyc3MuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGdyYXBoIHNob3dzIHRoZSBwcm9wb3J0aW9uIG9mIGxlYWRlcnMgdGhhdCBuZWNlc3NhcmlseSBjb21lIGZyb20gYSBwb2xpdGljYWwgZmFtaWx5IEJVVCBETyBOT1QgTEVBVkUgYSBzdWNjZXNzb3IgaW4gcG9saXRpY3MuIFRoZXJlZm9yZSwgZm9yIGEgZHluYXN0eSBFTkRFUiBUaGUgbmVjZXNzYXJ5IHByZWNvbmRpdGlvbnMgYXJlIGEgZmFtaWx5IG1lbWJlciBwcmVjZWRpbmcgaGltL2hlciBpbiBwb2xpdGljcyBiZWZvcmUgaGlzL2hlciB0aW1lIGFuZCBhIGZhbWlseSBtZW1iZXIgTk9UIHN1Y2VlZGluZyBoaW0vaGVyIGluIHBvbGl0aWNzIGFmdGVyIGhpcy9oZXIgdGltZS4gKHByZWRfYmluID09IDEgJiBzdWNfYmluID09IDApCgpgYGB7ciBldmFsPVRSVUUsIG1lc3NhZ2U9RkFMU0UsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQpnZGRfZHluYXN0eV9FTkRFUiA8LSBnZGQgJT4lCiAgZ3JvdXBfYnkoWWVhciwgeWVhcl9iaW4pICU+JQogIHN1bW1hcmlzZSgKICAgIER5bmFzdHlfRU5ERVIgPSBzdW0ocHJlZF9iaW4gPT0gMSAmIHN1Y19iaW4gPT0gMCksCiAgICBUb3RhbF9MZWFkZXJzID0gbigpCiAgKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX29mX0R5bmFzdHlfRU5ERVIgPSBtZWFuKER5bmFzdHlfRU5ERVIvVG90YWxfTGVhZGVycyoxMDApKQoKRHluYXN0eV9FTkRFUiA8LSBnZ3Bsb3QoZ2RkX2R5bmFzdHlfRU5ERVIsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX29mX0R5bmFzdHlfRU5ERVIpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yPSAiYmxhY2siLCBmaWxsID0gIndoaXRlIikrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyB0aGF0IGFyZSBEeW5hc3R5LUVOREVSUyIsCiAgICB4ID0gIjI1LVllYXItQ2F0ZWdvcnkiLAogICAgeSA9ICJQZXJjZW50YWdlIgogICkgKwogIHRoZW1lX3N0YXRhKCkgKwogIHlsaW0oMCw1MCkrCiAgdGhlbWUoCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSwKICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkKICApIApnZ3Bsb3RseShEeW5hc3R5X0VOREVSKQoKYGBgCgojIyBUSEUgRk9VUlRIIERZTkFTVCAoRFlOQVNUWS1GT1JNRVJTKQoKVGhlIGZvdXJ0aCBkZWZpbml0aW9uIG9mIER5bmFzdCBpcyB0aGUgb25lIG9mIGR5bmFzdHktZm9ybWVycy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgZ3JhcGggc2hvd3MgdGhlIHByb3BvcnRpb24gb2YgbGVhZGVycyB0aGF0IERPIE5PVCBjb21lIGZyb20gYSBwb2xpdGljYWwgZmFtaWx5IEhBVkUgYSBzdWNjZXNzb3IgaW4gcG9saXRpY3MuIFRoZXJlZm9yZSwgZm9yIGEgZHluYXN0eSBmb3JtZXIgdGhlIG5lY2Vzc2FyeSBwcmVjb25kaXRpb25zIGFyZSB0aGUgQUJTRU5DRSBPRiBBIGZhbWlseSBtZW1iZXIgcHJlY2VkaW5nIGhpbS9oZXIgaW4gcG9saXRpY3MgYmVmb3JlIGhpcy9oZXIgdGltZSBhbmQgYSBmYW1pbHkgbWVtYmVyIFNVQ0NFRURJTkcgaGltL2hlciBpbiBwb2xpdGljcyBhZnRlciBoaXMvaGVyIHRpbWUuIChwcmVkX2JpbiA9PSAwICYgc3VjX2JpbiA9PSAxKQoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KZ2RkX2R5bmFzdHlfZm9ybWVyIDwtIGdkZCAlPiUKICBncm91cF9ieShZZWFyLCB5ZWFyX2JpbikgJT4lCiAgc3VtbWFyaXNlKAogICAgRHluYXN0eV9mb3JtZXJzID0gc3VtKHByZWRfYmluID09IDAgJiBzdWNfYmluID09IDEpLAogICAgVG90YWxfTGVhZGVycyA9IG4oKQogICkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoeWVhcl9iaW4pICU+JSAKICBzdW1tYXJpc2UoUHJvcG9ydGlvbl9vZl9EeW5hc3R5X2Zvcm1lcnMgPSBtZWFuKER5bmFzdHlfZm9ybWVycy9Ub3RhbF9MZWFkZXJzKjEwMCkpCgpEeW5hc3R5X2Zvcm1lcnMgPC0gZ2dwbG90KGdkZF9keW5hc3R5X2Zvcm1lciwgYWVzKHggPSB5ZWFyX2JpbiwgeSA9IFByb3BvcnRpb25fb2ZfRHluYXN0eV9mb3JtZXJzKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBjb2xvcj0gImJsYWNrIiwgZmlsbCA9ICJ3aGl0ZSIpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIExlYWRlcnMgdGhhdCBhcmUgRHluYXN0eS1Gb3JtZXJzIiwKICAgIHggPSAiMjUtWWVhci1DYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2UiCiAgKSArCiAgdGhlbWVfc3RhdGEoKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkgCmdncGxvdGx5KER5bmFzdHlfZm9ybWVycykKYGBgCgojIyBUSEUgUFVSRSBOT04tRFlOQVNUCgpUaGUgbGFzdCBjYXRlZ29yeSBpcyBhIGNhdGVnb3J5IG9mIGxlYWRlcnMgdGhhdCBoYXZlIG5vIGZhbWlseSBiZWZvcmUgb3IgYWZ0ZXIgdGhlbSBpbiBwb2xpdGljcy4gVGhlc2UgYXJlIG5vdC1keW5hc3RzIGFuZCBhcmUgaW5jbHVkZWQgdG8gc2hvdyBkZWNsaW5pbmcgcHJldmFsZW5jZSBvZiBmYW1pbHkgdGllcyBpbiBwb2xpdGljcy4KCmBgYHtyIGV2YWw9VFJVRSwgbWVzc2FnZT1GQUxTRSxlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0V9CmdkZF9ub25fZHluYXN0IDwtIGdkZCAlPiUKICBncm91cF9ieShZZWFyLCB5ZWFyX2JpbikgJT4lCiAgc3VtbWFyaXNlKAogICAgbm9uX2R5bmFzdCA9IHN1bShwcmVkX2JpbiA9PSAwICYgc3VjX2JpbiA9PSAwKSwKICAgIFRvdGFsX0xlYWRlcnMgPSBuKCkKICApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluKSAlPiUgCiAgc3VtbWFyaXNlKFByb3BvcnRpb25fb2Zfbm9uX2R5bmFzdCA9IG1lYW4obm9uX2R5bmFzdC9Ub3RhbF9MZWFkZXJzKjEwMCkpCgpub25fZHluYXN0IDwtIGdncGxvdChnZGRfbm9uX2R5bmFzdCwgYWVzKHggPSB5ZWFyX2JpbiwgeSA9IFByb3BvcnRpb25fb2Zfbm9uX2R5bmFzdCkpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgY29sb3I9ICJibGFjayIsIGZpbGwgPSAid2hpdGUiKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUGVyY2VudGFnZSBvZiBMZWFkZXJzIHRoYXQgYXJlIG5vbl9keW5hc3QiLAogICAgeCA9ICIyNS1ZZWFyLUNhdGVnb3J5IiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsNjApKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKSAKZ2dwbG90bHkobm9uX2R5bmFzdCkKYGBgCgojIFByZWRpY3RlZCBQcm9iYWJpbGl0aWVzIGFuZCBSZWdpbWUgVHlwZXM6IFR3byBEaWZmZXJlbnQgTW9kZWxzIHsudGFic2V0fQoKIyMgTW9kZWwgMSwyLDM6IFVzaW5nIGRpY3RhdG9yc2hpcCBhcyB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KIyBNb2RlbCAxOiBVc2luZyBkaWN0YXRvcnNoaXAgYXMgdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlCm1vZGVsMSA8LSBnbG0oZHluYXN0aWMgfiBkaWN0YXRvcnNoaXAsIAogICAgICAgICAgICAgICAgZGF0YSA9IGdkZCwgCiAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpCgpwcmludChzdW1tYXJ5KG1vZGVsMSkpCgoKCiMgRml0IHRoZSBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsIHdpdGggY291bnRyeSBhbmQgeWVhciBmaXhlZCBlZmZlY3RzCm1vZGVsMiA8LSBnbG0oZHluYXN0aWMgfiBkaWN0YXRvcnNoaXAgKyBmYWN0b3IoQ291bnRyeSkgKyBmYWN0b3IoWWVhciksIAogICAgICAgICAgICAgIGRhdGEgPSBnZGQsIAogICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkKCgojIFByaW50IHRoZSBzdW1tYXJ5IHRvIGNoZWNrIHRoZSBtb2RlbCByZXN1bHRzCnN1bW1hcnkobW9kZWwyKQoKIyBDb21wYXJlIHRoZSBudW1iZXIgb2Ygb2JzZXJ2YXRpb25zIHVzZWQgaW4gYm90aCBtb2RlbHMKbl9vYnNfbW9kZWwxIDwtIGxlbmd0aChtb2RlbDEkZml0dGVkLnZhbHVlcykKbl9vYnNfbW9kZWwyIDwtIGxlbmd0aChtb2RlbDIkZml0dGVkLnZhbHVlcykKCgojIFByZXBhcmUgTkVXIGRhdGEgZm9yIHByZWRpY3Rpb24sIGVuc3VyaW5nIG5vIG5ldyBmYWN0b3IgbGV2ZWxzCmdkZF9jbGVhbiA8LSBnZGRbY29tcGxldGUuY2FzZXMoZ2RkWywgYygiZHluYXN0aWMiLCAiZGljdGF0b3JzaGlwIiwgInYyeF9wb2x5YXJjaHkiLCAiZm9ybWVyX2JyaXRpc2hfY29sb255IiwgIlllYXIiLCAiQ291bnRyeSIpXSksIF0KCiMgRml0IHRoZSBtb2RlbCB3aXRoIGNsZWFuZWQgZGF0YQptb2RlbDMgPC0gZ2xtKGR5bmFzdGljIH4gZGljdGF0b3JzaGlwICsgdjJ4X3BvbHlhcmNoeSArIGZvcm1lcl9icml0aXNoX2NvbG9ueSArIGZhY3RvcihZZWFyKSArIGZhY3RvcihDb3VudHJ5KSwKICAgICAgICAgICAgICBkYXRhID0gZ2RkX2NsZWFuLAogICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwKICAgICAgICAgICAgICBuYS5hY3Rpb24gPSBuYS5leGNsdWRlKQoKcHJpbnQoc3VtbWFyeShtb2RlbDMpKQojIFByZWRpY3QgcHJvYmFiaWxpdGllcyB3aXRoIGNsZWFuZWQgZGF0YQpnZGRfY2xlYW4kcHJlZF9wcm9iIDwtIHByZWRpY3QobW9kZWwzLCBuZXdkYXRhID0gZ2RkX2NsZWFuLCB0eXBlID0gInJlc3BvbnNlIikKCgojcHJlZGljdGlvbnMgZm9yIGFsbCByb3dzIGkKZ2RkJHByZWRfcHJvYiA8LSBwcmVkaWN0KG1vZGVsMSwgbmV3ZGF0YSA9IGdkZCwgdHlwZSA9ICJyZXNwb25zZSIpCgpgYGAKCgojIyAgTW9kZWwgNDogVXNpbmcgRGVtX1R5cGUgYXMgdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlLCB3aXRoIG1peGVkICgxKSBhcyB0aGUgcmVmZXJlbmNlIGNhdGVnb3J5CmBgYHtyfQojIE1vZGVsIDQ6IFVzaW5nIERlbV9UeXBlIGFzIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSwgd2l0aCBtaXhlZCAoMSkgYXMgdGhlIHJlZmVyZW5jZSBjYXRlZ29yeQpnZGRfY2xlYW4kRGVtX1R5cGUgPC0gZmFjdG9yKGdkZF9jbGVhbiREZW1fVHlwZSwgbGV2ZWxzID0gYygxLCAwLCAyLCAzKSkKCm1vZGVsNCA8LSBnbG0oZHluYXN0aWMgfiBEZW1fVHlwZSArIHYyeF9wb2x5YXJjaHkgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgKyBmYWN0b3IoWWVhcikgKyBmYWN0b3IoQ291bnRyeSksIGRhdGEgPSBnZGRfY2xlYW4sIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkKc3VtbWFyeShtb2RlbDQpCmBgYAojIER5bmFzdGljIFJ1bGUgYW5kIERlbW9jcmFjeSAoYmFzZWQgb24gUHJlZGljdGVkIHByb2JhYmlsaXRlcykgey50YWJzZXR9CgoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KCmdkZF92ZGVtX2ZpbmFsIDwtIGdkZCAlPiUgCiAgZmlsdGVyKCFpcy5uYShlX2JvaXhfcmVnaW1lKSkgJT4lIAogIGFycmFuZ2UoQ291bnRyeSxZZWFyKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShkeW5hc3RpY19sYWcgPSBsYWcoZHluYXN0aWMsIG9yZGVyX2J5ID0gWWVhciksCiAgICAgICAgIGRlbW9jcmFjeV95ZWFycyA9IHN1bShlX2JvaXhfcmVnaW1lID09IDEpLCAjLyBuKCksCiAgICAgICAgIGNvdW50cnlfbGlmZXRpbWUgPSAobWF4KFllYXIpIC0gbWluKFllYXIpICsgMSksCiAgICAgICAgIGRlbW9jcmFjeV9wZXJjZW50YWdlID0gKGRlbW9jcmFjeV95ZWFycyAvIGNvdW50cnlfbGlmZXRpbWUpICogMTAwKSAlPiUgCiAgc2VsZWN0KFllYXIsIHllYXJfYmluLCBDT1csIFJlZ2lvbiwgQ291bnRyeSwgY291bnRyeV9pc29jb2RlLCBEeW5hc3RpY19Qcm9wb3J0aW9uLCBub21pbmFsX2xlYWRlciwgZHluYXN0eV9kZXNjLCBmbG5fZ2VuZGVyLGZsbl9zcGVsbCwgZmxuX2hpZ2hlc3RkZWdyZWUsIGZsbl9idXNpbmVzc21hbiwgcHJlZF9udW0sIHJlbGF0aW9uX2NvZGVfcHJlZCwgcG9zX2NvZGVfcHJlZCwgc3VjX251bSwgcmVsYXRpb25fY29kZV9zdWMsIHBvc19jb2RlX3N1YyxwcmVkX2Jpbiwgc3VjX2JpbiwgcHJlZF9uYXRpb25hbCwgc3VjX25hdGlvbmFsLCBwcmVkX3N0YXRlLCBzdWNfc3RhdGUsIHByZWRfbG9jYWwsIHN1Y19sb2NhbCxlX2JvaXhfcmVnaW1lLCBmb3JtZXJfYnJpdGlzaF9jb2xvbnksIHN5c3RlbV9jYXRlZ29yeSxsb2dfZ2RwX3BlcmNhcCxnZHBfcGVyY2FwLCB2MnhfcG9seWFyY2h5LHYyeF9saWJkZW0sZHluYXN0aWNfbGFnLCBkeW5hc3RpYywgZGljdGF0b3JzaGlwLCBEZW1fVHlwZSwgIGRlbW9jcmFjeV95ZWFycyxjb3VudHJ5X2xpZmV0aW1lLGRlbW9jcmFjeV9wZXJjZW50YWdlLHYyZWxhY2NlcHQsdjJ4X2dlbmNzLCB2MmVsaW50aW0sIHYyeF92ZXJhY2MsdjJ4X2RpYWdhY2MsIHYyeG5wX3JlZ2NvcnIsdjJ4ZWxfZnJlZmFpciwgdjJ4X2NvcnIsIHYyeF9wdWJjb3JyLCB2MnhlZF9lZF9pbnB0LHYyeGVkX2VkX2NlbnQsIHYybHBuYW1lLCB2M3BhcnR5aWQsIHYycHNiYXJzLCB2MnBzY25zbG5sLHYycmVnb3BwZ3JvdXBzc2l6ZSwgdjJjbHJzcGN0LCB2MmNsc3Rvd24sIHYyc3Rjcml0cmVjYWRtLCB2Mm1lY2VuZWZtLCB2Mm1lY29ycnB0LCB2MnBlcHdyc2VzLCB2MnBlcHdyc29jLCB2MmV4bF9sZWdpdGlkZW9sLCB2MmV4bF9sZWdpdGxlYWQsIHYyY2F2aW9sLHYyY2FkZW1tb2IpI3ByZWRfcHJvYiwKCgoKCmBgYAoKIyMgUHJlZGljdGVkIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIE90aGVyIElWcyAoU29tZSBQbG90cykKCmBgYHtyIGVjaG89RkFMU0UsIH0KZ2dwbG90KGdkZF9jbGVhbiwgYWVzKHg9IHYyeF9wb2x5YXJjaHksIHkgPSBwcmVkX3Byb2IpKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBzcGFuID0gMC43NSwgY29sb3IgPSAiYmx1ZSIsIHNlID0gVFJVRSkgKyAgIyBMT0VTUyBsaW5lCiAgbGFicyh0aXRsZSA9ICJQb2x5YXJjaHkgU2NvcmVzIHZzLiBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIiwKICAgICAgIHggPSAiUG9seWFyY2h5IFNjb3JlcyIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSB2MnhucF9yZWdjb3JyLCB5ID0gcHJlZF9wcm9iKSkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgc3BhbiA9IDAuNzUsIGNvbG9yID0gImJsdWUiLCBzZSA9IFRSVUUpICsgICMgTE9FU1MgbGluZQogIGxhYnModGl0bGUgPSAiTGV2ZWwgb2YgUmVnaW1lIENvcnJ1cHRpb24gdnMuIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlcnNoaXAiLAogICAgICAgeCA9ICJMZXZlbCBvZiBSZWdpbWUgQ29ycnVwdGlvbiIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSB2MmNhdmlvbCwgeSA9IHByZWRfcHJvYikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkxldmVsIG9mIFBvbGl0aWNhbCBWaW9sZW5jZSBieSBOb24tU3RhdGUgQWN0b3JzIHZzIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlciIsCiAgICAgICB4ID0gIkxldmVsIG9mIFBvbGl0aWNhbCBWaW9sZW5jZSIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCiMgZm9yIGRlbSBtb2JpbGlzYXRpb246IHYyY2FkZW1tb2IKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSB2MmNhdmlvbCwgeSA9IHByZWRfcHJvYikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkxldmVsIG9mIE1vYmlsaXNhdGlvbiBmb3IgRGVtb2NyYWN5IHZzIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlciIsCiAgICAgICB4ID0gIkxldmVsIG9mIFBvbGl0aWNhbCBWaW9sZW5jZSIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSBsb2dfZ2RwX3BlcmNhcCwgeSA9IHByZWRfcHJvYikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkxvZyBHRFAgUGVyIGNhcGl0YSB2cyBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXIiLAogICAgICAgeCA9ICJMT0cgR0RQIHBlciBjYXBpdGEiLAogICAgICAgeSA9ICJQcmVkaWN0ZWQgUHJvYmFiaWxpdHkgb2YgRHluYXN0aWMgTGVhZGVyc2hpcCIpICsKICB0aGVtZV9zdGF0YSgpCgpgYGAKCgoKCgojIEJvaXgncyBEZW1vY3JhY3kgQ2xhc3NpZmljYXRpb24gYW5kIFNvbWUgUmVzdWx0cyB7LnRhYnNldH0KVGhlIHJlc3VsdHMgaW4gdGhpcyBzZWN0aW9uIGFyZSBiYXNlZCBvbiBCb2l4J3MgZGVmaW5pdGlvbiBvZiBkZW1vY3JhY3kgYW5kIGEgZGVmaW5lZCBjdXQtb2ZmLgpUaGlzIHdpbGwgb25seSBpbmNsdWRlIGFuYWx5c2lzIGZvciBjb3VudHJpZXMgdGhhdCBhcmUgY2xhc3NpZmllZCBkZW1vY3JhY2llcyBhY2NvcmRpbmcgdG8gdGhlIGVfYm9peCB2YXJpYWJsZSB3aGVyZSBDaGFybGVzIEJvaXggY2xhc3NpZmllcyBkZW1vY3JhY2llcy9ub24gZGVtb2NyYWNpZXMgYXMgMCBhbmQgMS4gVGhlIEN1dCBvZmYgUG9pbnQgd2UgY2hvb3NlIGhlcmUgZm9yIG91ciBhbmFseXNpcyBpcyB0byBpbmNsdWRlIGFsbCBjb3VudHJpZXMgdGhhdCBoYXZlIGJlZW4gZGVtb2NyYWNpZXMgZm9yIGF0IGxlYXN0IDI1JSBvZiB0aGVpciBsaWZldGltZSBzaW5jZSAxOTQ1LgoKYGBge3IgZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9CiMjIEZpbHRlcmluZyBmb3IgbWluaW11bSAyNSUgb2YgdGhlaXIgbGlmZSBhcyBlbGVjdG9yYWwgZGVtb2NyYWN5CmdkZF92ZGVtX2RlbSA8LSBnZGRfdmRlbV9maW5hbCAlPiUgCiAgZmlsdGVyKGRlbW9jcmFjeV9wZXJjZW50YWdlID49IDI1KQoKZ2RkX3ZkZW1fZGVtbm9uZGVtIDwtIGdkZF92ZGVtX2ZpbmFsICU+JSAKICBtdXRhdGUoZGVtX25vbmRlbSA9IGNhc2Vfd2hlbihkZW1vY3JhY3lfcGVyY2VudGFnZSA+PSAyNSB+ICIxIixkZW1vY3JhY3lfcGVyY2VudGFnZSA8IDI1IH4gIjAiLCBUUlVFIH4gTkFfY2hhcmFjdGVyXykpCgojbWFrZSBhIGxpc3Qgb2YgdW5pcXVlIGNvdW50cmllcyBpbiB0aGUgZGF0YXNldCBnZGRfdmRlbV9kZW0KdW5pcXVlX2NvdW50cmllcyA8LSB1bmlxdWUoZ2RkX3ZkZW1fZGVtJENvdW50cnkpCgoKCgoKYGBgCgojIyBIb3cgZG8gdGhlIERpZmZlcmVudCBEeW5hc3RzIGRpZmZlciBpbiBEZW1vY3JhY2llcz8KCkJlZm9yZSB3ZSBwcm9jZWVkLCBpdCBpcyBjcnVjaWFsIHRvIG5vdGUgdGhhdCBub3cgd2UgYXJlIGFsc28gYWRkaW5nIGEgdmFyaWFibGUgYmFzZWQgb24gdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBkeW5hc3RzIHdlIGhhdmUgYWxyZWFkeSBleHBsYWluZWQgYmVmb3JlIGluIG9yZGVyIHRvIG1ha2UgdGhlIGFuYWx5c2lzIGEgYml0IG1vcmUgbnVhbmNlZC4gV2UgYXJlIGFkZGluZyBhIHZhcmlhYmxlIGNhbGxlZCAiZHluYXN0X3R5cGUiIHRvIGFjY291bnQgZm9yIHRoZSBjYXRlZ29yaWNhbCB2YXJpYXRpb24gaW4gdGhlIHR5cGVzIG9mIGR5bmFzdHMgdGhhdCB3ZSBoYXZlLiBJbiB0aGlzIGNsYXNzaWZpY2F0aW9uIHdlIGhhdmUgYSBwdXJlIG5vbi1keW5hc3QgKDAsIG5vIGZhbWlseSBiZWZvcmUgb3IgYWZ0ZXIgdGhlIHNhaWQgbGVhZGVyIGlzIGluIHBvbGl0aWNzKSwgZHluYXN0eS1lbmRlciAoMSwgZGVmaW5pdGVseSBoYXMgYSBwcmVkZWNlc3NvciBpbiBwb2xpdGljcyBidXQgZG9lcyBub3QgaGF2ZSBhIHN1Y2Nlc3NvciBpbiBwb2xpdGljcyksIHRoZSBEWU5BU1QgKDIsZGVmaW5pdGVseSBoYXMgYSBwcmVkZWNlc3NvciBpbiBwb2xpdGljcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGEgc3VjY2Vzc29yIGluIHBvbGl0aWNzKSwgRHluYXN0eS1mb3JtZXIgKDMsIGRvZXMgbm90IGhhdmUgYW55IGZhbWlseSBpbiBwb2xpdGljcyBwcmVjZWRpbmcgaGltL2hlciBidXQgZGVmaW5pdGVseSBsZWF2ZXMgYSBzdWNjZXNzb3IgaW4gcG9saXRpY3MpLCBhbmQgZmluYWxseSBkeW5hc3R5LXN1c3RhaW5lciAoNCwgbmVjZXNzYXJpbHkgaGFzIGJvdGggYSBwcmVkZWNlc3NvciBhbmQgc3VjY2Vzc29yIGluIHBvbGl0aWNzKS4gRmlyc3Qgd2Ugd2lsbCBsb29rIGF0IHNvbWUgYmFzaWMgY2hhcmFjdGVyaXN0aWMgZGlmZmVyZW5jZXMgaW4gdGhzZSBraW5kIG9mIGR5bmFzdHMgdXNpbmcgYSBiYXNpYyBkaWZmZXJlbmNlIGluIG1lYW4gdGVzdCAoZWR1Y2F0aW9uLCBTcGVsbCBbdGhlIG51bWJlciBvZiB0aW1lIGEgbGVhZGVyIGhhcyBiZWVuIGluIG9mZmljZV0sIHRlbnVyZSBsZW5ndGgsIGlzIGFsc28gaW4gYnVzaW5lc3MpCgojIyMgQ29tcGFyaXNvbnMgQWNyb3NzIEFsbCBDYXRlZ29yaWVzCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfdmRlbV9kZW0gPC0gZ2RkX3ZkZW1fZGVtICU+JSAKICBtdXRhdGUoRHluYXN0X1R5cGUgPSBjYXNlX3doZW4oCiAgICBwcmVkX2JpbiA9PSAxICYgc3VjX2JpbiA9PSAwIH4gIkR5bmFzdHkgRW5kZXJzIiwKICAgIHByZWRfYmluID09IDEgJiBzdWNfYmluID09IDEgfiAiRHluYXN0eSBTdXN0YWluZXJzIiwKICAgIHByZWRfYmluID09IDAgJiBzdWNfYmluID09IDEgfiAiRHluYXN0eSBGb3JtZXJzIiwKICAgIHByZWRfYmluID09IDAgJiBzdWNfYmluID09IDAgfiAiVGhlIFB1cmUgTm9uLUR5bmFzdCIsCiAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXwogICkpCgpnZGRfZGVtX2R5biA8LSBnZGRfdmRlbV9kZW0gJT4lIAogIGdyb3VwX2J5KG5vbWluYWxfbGVhZGVyKSAlPiUgCiAgbXV0YXRlKHllYXJzX3J1bGVkID0gbigpKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpCgpyZXN1bHRfZHluX2luZGVtIDwtIGdkZF9kZW1fZHluICU+JQogIGdyb3VwX2J5KER5bmFzdF9UeXBlKSAlPiUKICBzdW1tYXJpc2UoVG90YWwgPW4oKSwKICAgIG1lYW5fZmxuX3NwZWxsID0gbWVhbihmbG5fc3BlbGwsIG5hLnJtID0gVFJVRSksCiAgICBtZWFuX3llYXJzX3J1bGVkID0gbWVhbih5ZWFyc19ydWxlZCwgbmEucm0gPSBUUlVFKSwKICAgIG1lYW5fZmxuX2J1c2luZXNzbWFuID0gbWVhbihhcy5udW1lcmljKGZsbl9idXNpbmVzc21hbikqMTAwLCBuYS5ybSA9IFRSVUUpLAogICAgbW9kZV9mbG5faGlnaGVzdGRlZ3JlZSA9IG5hbWVzKHdoaWNoLm1heCh0YWJsZShmbG5faGlnaGVzdGRlZ3JlZSkpKSwKICAgIG51bV9wcmVkX25hdGlvbmFsID0gc3VtKHByZWRfbmF0aW9uYWwpLAogICAgbnVtX3ByZWRfc3RhdGUgPSBzdW0ocHJlZF9zdGF0ZSksCiAgICBudW1fcHJlZF9sb2NhbCA9IHN1bShwcmVkX2xvY2FsKSwKICAgIG51bV9zdWNfbmF0aW9uYWwgPSBzdW0oc3VjX25hdGlvbmFsKSwKICAgIG51bV9zdWNfc3RhdGUgPSBzdW0oc3VjX3N0YXRlKSwKICAgIG51bV9zdWNfbG9jYWwgPSBzdW0oc3VjX2xvY2FsKSwKICApCgpyZXN1bHRfZHluX2luZGVtICU+JQogIG11dGF0ZSgKICAgIG1lYW5fZmxuX3NwZWxsID0gcm91bmQobWVhbl9mbG5fc3BlbGwsIDIpLAogICAgbWVhbl95ZWFyc19ydWxlZCA9IHJvdW5kKG1lYW5feWVhcnNfcnVsZWQsIDIpLAogICAgbWVhbl9mbG5fYnVzaW5lc3NtYW4gPSByb3VuZChtZWFuX2Zsbl9idXNpbmVzc21hbiwgMikKICApICU+JQogIGRhdGF0YWJsZShvcHRpb25zID0gbGlzdChwYWdlTGVuZ3RoID0gMTApLCAKICAgICAgICAgICAgcm93bmFtZXMgPSBGQUxTRSwKICAgICAgICAgICAgY29sbmFtZXMgPSBjKCJEeW5hc3R5IFR5cGUiLCAiTnVtYmVyIG9mIExlYWRlcnMiLCAiQXZnLiBOdW1iZXIgb2YgVGVudXJlcyIsICJBdmcuIFllYXJzIFJ1bGVkIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvcG9ydGlvbiBvZiBCdXNpbmVzc21lbiIsICJNb3N0IENvbW1vbiBIaWdoZXN0IERlZ3JlZSIsICJOdW1iZXIgb2YgUHJlZGVjZXNzb3JzIGluIE5hdGlvbmFsIFBvbGl0aWNzIiwiTnVtYmVyIG9mIFByZWRlY2Vzc29ycyBpbiBTdGF0ZSBQb2xpdGljcyIsICJOdW1iZXIgb2YgUHJlZGVjZXNzb3JzIGluIExvY2FsIFBvbGl0aWNzIiwiTnVtYmVyIG9mIFN1Y2Nlc3NvcnMgaW4gTmF0aW9uYWwgUG9saXRpY3MiLCJOdW1iZXIgb2YgU3VjY2Vzc29ycyBpbiBTdGF0ZSBQb2xpdGljcyIsIk51bWJlciBvZiBTdWNjZXNzb3JzIGluIExvY2FsIFBvbGl0aWNzIikpCgpnZ3Bsb3QoZ2RkX2RlbV9keW4sIGFlcyh4ID0gRHluYXN0X1R5cGUsIHkgPSB5ZWFyc19ydWxlZCkpICsKICBzdGF0X2JveHBsb3QoZ2VvbSA9ICJlcnJvcmJhciIsIHdpZHRoID0gMC41KSArCiAgZ2VvbV9ib3hwbG90KG91dGxpZXIuc2hhcGUgPSAyMSwgb3V0bGllci5maWxsID0gIndoaXRlIiwgY29lZiA9IDEuNSkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBjb21tYV9mb3JtYXQoKSkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJEaXN0cmlidXRpb24gb2YgWWVhcnMgUnVsZWQgYnkgRHluYXN0IFR5cGUgKFdpbnNvcml6ZWQpIiwKICAgIHggPSAiRHluYXN0IFR5cGUiLAogICAgeSA9ICJZZWFycyBSdWxlZCIKICApICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBzaXplID0gMTYsIGhqdXN0ID0gMC41KSwKICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiwgc2l6ZSA9IDEyKSwKICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLAogICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfbGluZShjb2xvciA9ICJncmF5OTAiKSwKICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkKICApCgoKZ2RkX2RlbV9keW5fZWR1Y2F0aW9ucGxvdCA8LSBnZGRfZGVtX2R5biAlPiUgCiAgZmlsdGVyKGZsbl9oaWdoZXN0ZGVncmVlICE9ICIuIikgJT4lIAogIGZpbHRlcihmbG5faGlnaGVzdGRlZ3JlZSAhPSAiIikKCmdncGxvdChnZGRfZGVtX2R5bl9lZHVjYXRpb25wbG90LCBhZXMoeCA9IER5bmFzdF9UeXBlLCBmaWxsID0gZmxuX2hpZ2hlc3RkZWdyZWUpKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArCiAgeWxhYigiUHJvcG9ydGlvbiBvZiBMZWFkZXJzIikgKwogIHhsYWIoIlR5cGUgb2YgRHluYXN0IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKIyBtYWtlIGEgZ3JhcGggb2YgdGhlIHByb3BvcnRpb24gb2YgZGlmZmVyZW50IHR5cGVzIG9mIGR5bmFzdHMgb3ZlciB0aW1lIHdpdGggZWxlZ2FudCBjb2xvcnMKCmdncGxvdChnZGRfZGVtX2R5biwgYWVzKHggPSB5ZWFyX2JpbiwgZmlsbCA9IER5bmFzdF9UeXBlLCkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJkb2RnZSIpICsKICB5bGFiKCJQcm9wb3J0aW9uIG9mIExlYWRlcnMiKSArCiAgeGxhYigiWWVhciIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfaWdyYXkoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKCiN0aGUgY29kZSBhYm92ZSBidXQgd2l0aCBlbGVnYW50IGdyYWRpZW50IGNvbG9ycyBhZGQgYm9yZGVycyB0byB0aGUgY29sdW1ucwoKZ2dwbG90KGdkZF9kZW1fZHluLCBhZXMoeCA9IHllYXJfYmluLCBmaWxsID0gRHluYXN0X1R5cGUsKSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImRvZGdlIiwgY29sb3IgPSAiYmxhY2siKSArCiAgeWxhYigiUHJvcG9ydGlvbiBvZiBMZWFkZXJzIikgKwogIHhsYWIoIlllYXIiKSArCiAgbGFicyh0aXRsZT0gIkR5bmFzdCBUeXBlcyBpbiBEZW1vY3JhY2llcyIpKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpICsKICB0aGVtZV9pZ3JheSgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQogIAogIAogIApgYGAKCiMjIyBDb21wYXJpc29ucyBBY3Jvc3MgRHluYXN0cyB3aXRoIHByZWRlY2Vzc29ycy9zdWNlc3NvcnMgYXQgdGhlIG5hdGlvbmFsIGxldmVsCmBgYHtyIGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQpnZGRfZGVtX2R5bl9uYXRpb25hbCA8LSBnZGRfZGVtX2R5biAlPiUgCiAgZmlsdGVyKHByZWRfbmF0aW9uYWwgPT0gMSB8IHN1Y19uYXRpb25hbCA9PSAxKQoKcmVzdWx0X2R5bl9pbmRlbV9uYXRpb25hbCA8LSBnZGRfZGVtX2R5bl9uYXRpb25hbCAlPiUKICBncm91cF9ieShEeW5hc3RfVHlwZSkgJT4lCiAgc3VtbWFyaXNlKFRvdGFsID1uKCksCiAgICBtZWFuX2Zsbl9zcGVsbCA9IG1lYW4oZmxuX3NwZWxsLCBuYS5ybSA9IFRSVUUpLAogICAgbWVhbl95ZWFyc19ydWxlZCA9IG1lYW4oeWVhcnNfcnVsZWQsIG5hLnJtID0gVFJVRSksCiAgICBtZWFuX2Zsbl9idXNpbmVzc21hbiA9IG1lYW4oYXMubnVtZXJpYyhmbG5fYnVzaW5lc3NtYW4pKjEwMCwgbmEucm0gPSBUUlVFKSwKICAgIG1vZGVfZmxuX2hpZ2hlc3RkZWdyZWUgPSBuYW1lcyh3aGljaC5tYXgodGFibGUoZmxuX2hpZ2hlc3RkZWdyZWUpKSksCiAgICBudW1fcHJlZF9uYXRpb25hbCA9IHN1bShwcmVkX25hdGlvbmFsKSwKICAgIG51bV9zdWNfbmF0aW9uYWwgPSBzdW0oc3VjX25hdGlvbmFsKQogICkKCnJlc3VsdF9keW5faW5kZW1fbmF0aW9uYWwgJT4lCiAgbXV0YXRlKAogICAgbWVhbl9mbG5fc3BlbGwgPSByb3VuZChtZWFuX2Zsbl9zcGVsbCwgMiksCiAgICBtZWFuX3llYXJzX3J1bGVkID0gcm91bmQobWVhbl95ZWFyc19ydWxlZCwgMiksCiAgICBtZWFuX2Zsbl9idXNpbmVzc21hbiA9IHJvdW5kKG1lYW5fZmxuX2J1c2luZXNzbWFuLCAyKQogICkgJT4lCiAgZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KHBhZ2VMZW5ndGggPSAxMCksIAogICAgICAgICAgICByb3duYW1lcyA9IEZBTFNFLAogICAgICAgICAgICBjb2xuYW1lcyA9IGMoIkR5bmFzdHkgVHlwZSIsICJOdW1iZXIgb2YgTGVhZGVycyIsICJBdmcuIE51bWJlciBvZiBUZW51cmVzIiwgIkF2Zy4gWWVhcnMgUnVsZWQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICJQcm9wb3J0aW9uIG9mIEJ1c2luZXNzbWVuIiwgIk1vc3QgQ29tbW9uIEhpZ2hlc3QgRGVncmVlIiwgIk51bWJlciBvZiBQcmVkZWNlc3NvcnMgaW4gTmF0aW9uYWwgUG9saXRpY3MiLCJOdW1iZXIgb2YgU3VjY2Vzc29ycyBpbiBOYXRpb25hbCBQb2xpdGljcyIpKQoKYGBgCgoKIyMgVGhlIFJlbGF0aW9uc2hpcCBCZXR3ZWVuIFBvbHlhcmNoeSBTY29yZXMgKExldmVsIG9mIE1pbmltYWwgRGVtb2NyYWN5KSBhbmQgRHluYXN0aWNpc20gKEFzIGEgQ29udGludW91cyBWYXJpYWJsZSkKCkR5bmFzdGljIFZhcmlhYmxlICgwLzEpIGlzIHJlY29kZWQgaGVyZSBhcyBhIGNvbnRpbnVvdXMgdmFyaWFibGUgaW4gdGVybXMgb2YgYSBkeW5hc3RpYyBzY29yZSB0aGF0IHZhcmllcyBiZXR3ZWVuIDAgYW5kIDEgdG8gaW5kaWNhdGUgdGhhdCB1cCB1bnRpbCBwb2ludCB0IGluIHRpbWUgZm9yIGEgY291bnRyeSBpIGhvdyBsb25nIER5bmFzdGljIHJ1bGUgaGFzIHByZXZhaWxlZCAoRWcuIDE5NzAgaW4gSW5kaWEgd291bGQgbWVhbikgVFdPIEJBU0lDIEdSQVBIUwoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KI01ha2luZyBhIExvZXNzIFBsb3QgZm9yIFBvbHlhcmNoeSBTY29yZXMgYW5kIER5bmFzdGljIFByb3BvcnRpb25zCmdncGxvdChnZGRfdmRlbV9kZW0sIGFlcyh4PSBEeW5hc3RpY19Qcm9wb3J0aW9uLCB5ID0gdjJ4X3BvbHlhcmNoeSkpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIlBvbHlhcmNoeSBTY29yZXMgdnMuIER5bmFzdGljaXNtIiwKICAgICAgIHggPSAiRHluYXN0aWNfUHJvcG9ydGlvbiIsCiAgICAgICB5ID0gIlBvbHlhcmNoeSBTY29yZXMiKSArCiAgdGhlbWVfc3RhdGEoKQoKCmdncGxvdChnZGRfdmRlbV9kZW0sIGFlcyh4PSB2MnhfcG9seWFyY2h5LCB5ID0gRHluYXN0aWNfUHJvcG9ydGlvbikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkR5bmFzdGljaXNtIHZzLiBQb2x5YXJjaHkgU2NvcmUiLAogICAgICAgeCA9ICJQb2x5YXJjaHkgU2NvcmVzIiwKICAgICAgIHkgPSAiRHluYXN0aWNfUHJvcG9ydGlvbiIpICsKICB0aGVtZV9zdGF0YSgpCgpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMgTGluZWFyIE1vZGVsIGZvciB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUG9seWFyY2h5IFNjb3JlcyAoWCkgYW5kIER5bmFzdGljIFByb3BvcnRpb25zIChZKQptb2RlbF9wb2x5YXJjaHlfYml2YXJpYXRlIDwtIGxtKER5bmFzdGljX1Byb3BvcnRpb24gfiB2MnhfcG9seWFyY2h5LCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQpzdGFyZ2F6ZXIobW9kZWxfcG9seWFyY2h5X2JpdmFyaWF0ZSwgdHlwZSA9ICJ0ZXh0IikKCgoKCm1vZGVsX3BvbHlhcmNoeSA8LSBsbShEeW5hc3RpY19Qcm9wb3J0aW9uIH4gdjJ4X3BvbHlhcmNoeSArIGxvZ19nZHBfcGVyY2FwICsgdjJ4bnBfcmVnY29yciArIHYyY2F2aW9sICsgdjJjYWRlbW1vYiwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKc3RhcmdhemVyKG1vZGVsX3BvbHlhcmNoeSwgdHlwZSA9ICJ0ZXh0IikKCgoKI2xldCdzIGRvIGEgR0xNIHdpdGggbG9naXQgZnVuY3Rpb24KbW9kZWxfcG9seWFyY2h5X2JpdmFyaWF0ZV9nbG0gPC0gZ2xtKER5bmFzdGljX1Byb3BvcnRpb24gfiB2MnhfcG9seWFyY2h5LCBkYXRhID0gZ2RkX3ZkZW1fZGVtLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpCnN0YXJnYXplcihtb2RlbF9wb2x5YXJjaHlfYml2YXJpYXRlX2dsbSwgdHlwZSA9ICJ0ZXh0IikKCnByZWRfYmkgPC0gZ2dwcmVkaWN0KG1vZGVsX3BvbHlhcmNoeV9iaXZhcmlhdGVfZ2xtLCB0ZXJtcyA9ICJ2MnhfcG9seWFyY2h5IikKcGxvdChwcmVkX2JpKQoKZ2RkX3ZkZW1fZGVtX2dsbSA8LSBnZGRfdmRlbV9kZW0lPiUKICBkcGx5cjo6bXV0YXRlKAogICAgRHluYXN0aWNfUHJvcG9ydGlvbiA9IGlmZWxzZShEeW5hc3RpY19Qcm9wb3J0aW9uID09IDAsIDAuMDAwMSwgRHluYXN0aWNfUHJvcG9ydGlvbiksCiAgICBEeW5hc3RpY19Qcm9wb3J0aW9uID0gaWZlbHNlKER5bmFzdGljX1Byb3BvcnRpb24gPT0gMSwgMC45OTk5LCBEeW5hc3RpY19Qcm9wb3J0aW9uKQogICkKCm1vZGVsX3BvbHlhcmNoeV9nbG0gPC0gZ2xtKER5bmFzdGljX1Byb3BvcnRpb24gfiB2MnhfcG9seWFyY2h5ICsgbG9nX2dkcF9wZXJjYXAgKyB2MnhucF9yZWdjb3JyICsgdjJjYXZpb2wgKyB2MmNhZGVtbW9iLCBkYXRhID0gZ2RkX3ZkZW1fZGVtX2dsbSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpKQpzdGFyZ2F6ZXIobW9kZWxfcG9seWFyY2h5X2dsbSwgdHlwZSA9ICJ0ZXh0IikKI0ludGVycHJldGF0aW9uCiNUaGUgbW9kZWwgc2hvd3MgdGhhdCBmb3IgZXZlcnkgb25lIHVuaXQgaW5jcmVhc2UgaW4gUG9seWFyY2h5IFNjb3JlcywgdGhlIG9kZHMgb2YgRHluYXN0aWNpc20gaW5jcmVhc2VzIGJ5IDAuMDAwMS4gVGhlIG1vZGVsIGlzIHNpZ25pZmljYW50IGF0IDAuMDUgbGV2ZWwgYW5kIHRoZSBwc2V1ZG8gUi1zcXVhcmVkIHZhbHVlIGlzIDAuMDIuCiN0aGUgbWF0aHMgYmVoaW5kIHRoZSBjYWxjdWxhdGlvbiBmb3IgbG9nIG9mIG9kZHMgcmF0aW8KI2xvZyhvZGRzKSA9IGxvZyhwLygxLXApKSA9IGJldGEwICsgYmV0YTEqWAojb2RkcyA9IGV4cChiZXRhMCArIGJldGExKlgpCiNvZGRzIHJhdGlvID0gZXhwKGJldGExKQoKCgoKYGBgCgojIyBDb3JydXB0aW9uIGFuZCBEeW5hc3RpY2lzbQoKQ29ycnVwdGlvbiBoZXJlIGlzIFJlZ2ltZSBDb3JydXB0aW9uIGJvcnJvd2VkIGZyb20gVkRlbSBhbmQgdGhlIHNwZWNpZmljIHZhcmlhYmxlIGRldGFpbHMgYXJlOgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0KCgojTWFraW5nIGEgTG9lc3MgUGxvdCBmb3IgUmVnaW1lIENvcnJ1cHRpb24gYW5kIER5bmFzdGljIFByb3BvcnRpb25zCmdncGxvdChnZGRfdmRlbV9kZW0sIGFlcyh4PSBEeW5hc3RpY19Qcm9wb3J0aW9uLCB5ID0gdjJ4bnBfcmVnY29ycikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIlJlZ2ltZSBDb3JydXB0aW9uIHZzLiBEeW5hc3RpY2lzbSIsCiAgICAgICB4ID0gIkR5bmFzdGljX1Byb3BvcnRpb24iLAogICAgICAgeSA9ICJSZWdpbWUgQ29ycnVwdGlvbiIpICsKICB0aGVtZV9zdGF0YSgpCgoKZ2dwbG90KGdkZF92ZGVtX2RlbSwgYWVzKHg9IHYyeG5wX3JlZ2NvcnIsIHkgPSBEeW5hc3RpY19Qcm9wb3J0aW9uKSkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgc3BhbiA9IDAuNzUsIGNvbG9yID0gImJsdWUiLCBzZSA9IFRSVUUpICsgICMgTE9FU1MgbGluZQogIGxhYnModGl0bGUgPSAiRHluYXN0aWNpc20gdnMuIFJlZ2ltZSBDb3JydXB0aW9uIiwKICAgICAgIHggPSAiUmVnaW1lIENvcnJ1cHRpb24iLAogICAgICAgeSA9ICJEeW5hc3RpY19Qcm9wb3J0aW9uIikgKwogIHRoZW1lX3N0YXRhKCkKCmBgYAoKIyMgTWVhbiBQb2x5YXJjaHkgU2NvcmVzIGluIERlbW9jcmFjaWVzCgpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KZ2RkX21lYW5fc2NvcmVzIDwtIGdkZF92ZGVtX2RlbSAlPiUgCiAgZmlsdGVyKCFpcy5uYSh2MnhfcG9seWFyY2h5KSkgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluLCBwcmVkX2JpbikgJT4lIAogIHN1bW1hcmlzZShNZWFuX0RlbSA9IG1lYW4odjJ4X3BvbHlhcmNoeSkpCgptZWFuX2RlbV9ieWR5biA8LSBnZ3Bsb3QoZ2RkX21lYW5fc2NvcmVzLCBhZXMoeCA9IGFzLmZhY3Rvcih5ZWFyX2JpbiksIHkgPSBNZWFuX0RlbSwgY29sb3IgPSBhcy5mYWN0b3IocHJlZF9iaW4pKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDMsIGFscGhhID0gMC43LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCIwIiA9ICJibHVlIiwgIjEiID0gInJlZCIpLCBsYWJlbHMgPSBjKCIwIiA9ICJOb24tRHluYXN0aWMiLCAiMSIgPSAiRHluYXN0aWMiKSkgKwogIHlsaW0oMC40LDAuODApKwogIHRoZW1lX3N0YXRhKCkgKwogIGxhYnModGl0bGUgPSAiTWVhbiBEZW1vY3JhY3kgU2NvcmVzIGluIERlbW9jcmFjaWVzIChCb2l4KSBieSBEeW5hc3RpYy9Ob24tRHluYXN0aWMgU3RhdHVzIiwKICAgICAgIHggPSAiWWVhciBCaW4iLAogICAgICAgeSA9ICJNZWFuIERlbW9jcmFjeSBTY29yZSIsCiAgICAgICBjb2xvciA9ICJEeW5hc3RpYyBTdGF0dXMiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKCiMgQ29udmVydCB0byBwbG90bHkgb2JqZWN0Cm1lYW5fZGVtX2J5ZHluX3Bsb3RseSA8LSBnZ3Bsb3RseShtZWFuX2RlbV9ieWR5bikKCiMgTW9kaWZ5IHRoZSBsZWdlbmQgZGlyZWN0bHkgaW4gdGhlIHBsb3RseSBvYmplY3QKbWVhbl9kZW1fYnlkeW5fcGxvdGx5IDwtIG1lYW5fZGVtX2J5ZHluX3Bsb3RseSAlPiUgbGF5b3V0KGxlZ2VuZCA9IGxpc3QodGl0bGUgPSBsaXN0KHRleHQgPSAnRHluYXN0aWMgU3RhdHVzJykpKQoKIyBFbnN1cmUgdGhlIGNvcnJlY3QgbGFiZWxzIGFyZSB1c2VkCm1lYW5fZGVtX2J5ZHluX3Bsb3RseSA8LSBtZWFuX2RlbV9ieWR5bl9wbG90bHkgJT4lCiAgc3R5bGUobGVnZW5kZ3JvdXAgPSAiMCIsIG5hbWUgPSAiTm9uLUR5bmFzdGljIiwgdHJhY2VzID0gMSkgJT4lCiAgc3R5bGUobGVnZW5kZ3JvdXAgPSAiMSIsIG5hbWUgPSAiRHluYXN0aWMiLCB0cmFjZXMgPSAyKQoKIyBQcmludCB0aGUgcGxvdGx5IG9iamVjdAptZWFuX2RlbV9ieWR5bl9wbG90bHkKYGBgCgoKIyBTb21lIFJlZ3Jlc3Npb25zIChGb3IgZGVtb2NyYWNpZXMgT05MWSBhcyBjbGFzc2lmaWVkIGJlZm9yZSBiYXNlZCBvbiBCb2l4IGNsYXNzaWZpY2F0aW9uIGFuZCAyNSUgY3V0LW9mZikgey50YWJzZXR9CgoqVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGJhc2ljIHJlZ3Jlc3Npb25zIHRyZWF0aW5nIER5bmFzdGljaXNtIGFzIGEgRFYgYWdhaW5zdCBvdGhlciBvdGhlciB2YXJpYWJsZXMgbGlrZSBkZW1vY3JhY3kgc2NvcmVzLCByZWdpbWUgY29ycnVwdGlvbiBsZXZlbCwgbWVkaWEgY2Vuc29yc2hpcCAodjJtZWNlbmVmbSksIGNsZWFuIGVsZWN0aW9ucyAodjJ4ZWxfZnJlZmFpciksIGZvcm1lciBicml0aXNoIGNvbG9ueS4gVGhlc2UgYXJlIGFsbCBmaXhlZCBlZmZlY3RzIGxpbmVhciBtb2RlbHMgd2l0aCBjb3VudHJ5IGFuZCB5ZWFyIGZpeGVkIGVmZmVjdHMgaW4gcGxhY2UgYW5kIHRoZSBzdGFuZGFyZCBlcnJvciBpcyBjbHVzdGVyZWQgYXQgdGhlIGNvdW50cnkgbGV2ZWwuKgoKCgojIyBFbGVjdG9yYWwgRGVtb2NyYWN5IGFuZCBEeW5hc3RpY2lzbQoKKl9BcmUgZGVtb2NyYWNpZXMgYW5kIGR5bmFzdGljIGxlYWRlcnNoaXAgY29tcGF0aWJsZSAoYW5kIGFyZSBmb3JtZXIgQnJpdGlzaCBDb2xvbmllcyBsaWtlbHkgdG8gYmUgbW9yZSBkeW5hc3RpYz8pP18qCgpgYGB7ciBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX2RlbW9jcmFjeSA8LSBmZWxtKGR5bmFzdGljIH4gdjJ4X3BvbHlhcmNoeSArIGxvZ19nZHBfcGVyY2FwICsgdjJ4bnBfcmVnY29yciArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfZGVtb2NyYWN5KQoKY3VzdG9tX2xhYmVscyA8LSBjKCJkeW5hc3RpYyIgPSAiRHluYXN0aWMiLAogICAgICAgICAgICAgICAgICAgInYyeF9wb2x5YXJjaHkiID0gIkVsZWN0b3JhbCBEZW1vY3JhY3kgTGV2ZWwiLAogICAgICAgICAgICAgICAgICAgImxvZ19nZHBfcGVyY2FwIiA9ICJMb2cgR0RQIFBlciBDYXBpdGEiLAogICAgICAgICAgICAgICAgICAgImZvcm1lcl9icml0aXNoX2NvbG9ueSIgPSAiRm9ybWVyIEJyaXRpc2ggQ29sb255IiwKICAgICAgICAgICAgICAgICAgICJ2MnhucF9yZWdjb3JyciIgPSAiTGV2ZWwgb2YgUmVnaW1lIENvcnJ1cHRpb24iKQoKY29lZnBsb3QobW9kZWxfZGVtb2NyYWN5KQoKYGBgCgoqVGhpcyByZWdyZXNzaW9uIHJlc3VsdHMgc2VlbXMgdG8gc3VnZ2VzdCB0aGF0IER5bmFzdGllcyBhbmQgZGVtb2NyYWNpZXMgaGF2ZSBiZWVuIGhpc3RvcmljYWxseSBjb21wYXRpYmxlLiBTcGVjaWZpY2FsbHksIEEgb25lLXVuaXQgaW5jcmVhc2UgaW4gdGhlIGVsZWN0b3JhbCBkZW1vY3JhY3kgc2NvcmUgKHYyeF9wb2x5YXJjaHkpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIDMzLjEgcGVyY2VudGFnZSBwb2ludCBpbmNyZWFzZSBpbiB0aGUgcHJvYmFiaWxpdHkgb2YgdGhhdCBwb2xpdHkgYmVpbmcgZHluYXN0aWMsIGFjY29yZGluZyB0byBhIGxpbmVhciBtb2RlbCBwcm9iYWJpbGl0eSBkZXNpZ24uKgoKKlRoZSBzaWduaWZpY2FudCBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBlbGVjdG9yYWwgZGVtb2NyYWN5IGFuZCBkeW5hc3RpYyByZWdpbWVzIHN1Z2dlc3RzIHRoYXQgaGlnaGVyIGxldmVscyBvZiBlbGVjdG9yYWwgZGVtb2NyYWN5IG1pZ2h0IGNvZXhpc3Qgd2l0aCBkeW5hc3RpYyByZWdpbWVzLiBIb3dldmVyLCB0aGUgZWNvbm9taWMgYW5kIGNvcnJ1cHRpb24tcmVsYXRlZCBwcmVkaWN0b3JzLCBhcyB3ZWxsIGFzIHRoZSBjb2xvbmlhbCBoaXN0b3J5LCBkbyBub3Qgc2hvdyBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBkeW5hc3RpYyByZWdpbWVzIGluIHRoaXMgbW9kZWwuKgoKIyMgRHluYXN0aWNpc20gYW5kIEZyZWUgYW5kIEZhaXIgRWxlY3Rpb25zCgoqX0lzIGR5bmFzdGljIGxlYWRlcnNoaXAgbW9yZSBsaWtlbHkgdG8gcHJvZHVjZSBsZXNzIGZyZWUgYW5kIGZhaXIgZWxlY3Rpb25zP18qCgpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfZnJlZV9lbGVjdGlvbnMgPC0gZmVsbSh2MnhlbF9mcmVmYWlyIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfZnJlZV9lbGVjdGlvbnMpCgpjb2VmcGxvdChtb2RlbF9mcmVlX2VsZWN0aW9ucykKCmBgYAoKKkNvbnNpc3RlbnQgd2l0aCBvdXIgY2xhaW0gb24gY29tcGF0aWJpbGl0eSB3aXRoIGRlbW9jcmFjaWVzLCBkeW5hc3RpYyBsZWFkZXJzaGlwIGlzIGluIGZhY3Qgbm90IGJhZCBmb3IgZnJlZSBhbmQgZmFpciBlbGVjdGlvbnMuKgoKIyMgSXMgRHluYXN0aWMgTGVhZGVyc2hpcCBtb3JlIGxpa2VseSB0byBwcm9kdWNlIENvcnJ1cHQgcmVnaW1lcz8KCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9yZWdpbWVfY29ycnVwdGlvbiA8LSBmZWxtKHYyeG5wX3JlZ2NvcnIgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9yZWdpbWVfY29ycnVwdGlvbikKCmNvZWZwbG90KG1vZGVsX3JlZ2ltZV9jb3JydXB0aW9uKQoKYGBgCgoqTm8gc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwIGJldHdlZW4gZHluYXN0aWMgbGVhZGVyc2hpcCBhbmQgbW9yZSByZWdpbWUgY29ycnVwdGlvbiAobGVhZGVycyB1c2luZyBvZmZpY2VzIGZvciBwcml2YXRlIGdhaW4pLioKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBCYXJyaWVycyB0byBvdGhlciBwYXJ0aWVzPwp2MnBzYmFycwoKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX2JhcnJpZXJzX3BhcnRpZXMgPC0gZmVsbSh2MnBzYmFycyB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX2JhcnJpZXJzX3BhcnRpZXMpCgpjb2VmcGxvdChtb2RlbF9iYXJyaWVyc19wYXJ0aWVzKQpgYGAKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIENhbmRpZGF0ZSBTZWxlY3Rpb24KdjJwc2Nuc2xubApgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfY2FuZGlkYXRlX3NlbGVjdGlvbiA8LSBmZWxtKHYycHNjbnNsbmwgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9jYW5kaWRhdGVfc2VsZWN0aW9uKQoKY29lZnBsb3QobW9kZWxfY2FuZGlkYXRlX3NlbGVjdGlvbikKYGBgCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBSZWdpbWUncyBvcHBvc2l0aW9uIEdyb3VwcyBTaXplCnYycmVnb3BwZ3JvdXBzc2l6ZQpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfcmVnaW1lX29wcG9zaXRpb24gPC0gZmVsbSh2MnJlZ29wcGdyb3Vwc3NpemUgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9yZWdpbWVfb3Bwb3NpdGlvbikKCmNvZWZwbG90KG1vZGVsX3JlZ2ltZV9vcHBvc2l0aW9uKQpgYGAKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIFJlZ2lvcm91cyBhbmQgSW1wYXJ0aWFsIFB1YmxpYyBBZG1pbmlzdHJhdGlvbgp2MmNscnNwY3QKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX2ltcGFydGlhbF9hZG1pbmlzdHJhdGlvbiA8LSBmZWxtKHYyY2xyc3BjdCB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX2ltcGFydGlhbF9hZG1pbmlzdHJhdGlvbikKCmNvZWZwbG90KG1vZGVsX2ltcGFydGlhbF9hZG1pbmlzdHJhdGlvbikKYGBgCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBTdGF0ZSBPd25lcnNoaXAgb2YgRW50ZXJwcmlzZSAKdjJjbHN0b3duCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9zdGF0ZV9vd25lcnNoaXAgPC0gZmVsbSh2MmNsc3Rvd24gfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9zdGF0ZV9vd25lcnNoaXApCgpjb2VmcGxvdChtb2RlbF9zdGF0ZV9vd25lcnNoaXApCmBgYAoKIyMgRHluYXN0aWMgTGVhZGVyc2hpcCBhbmQgQ3JpdGVyaWEgZm9yIEFwcG9pbnRtZW50cyBpbiBQdWJsaWMgQWRtaW5pc3RyYXRpb24KdjJzdGNyaXRyZWNhZG0gKDAtNSBvcmRpbmFsIHNjYWxlKQpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfYXBwb2ludG1lbnRfYWRtaW4gPC0gZmVsbSh2MnN0Y3JpdHJlY2FkbSB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX2FwcG9pbnRtZW50X2FkbWluKQoKY29lZnBsb3QobW9kZWxfYXBwb2ludG1lbnRfYWRtaW4pCmBgYAoKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIE1lZGlhIENlbnNvcnNoaXAgRWZmb3J0Cgp2Mm1lY2VuZWZtCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9tZWRpYV9jZW5zb3JzaGlwIDwtIGZlbG0odjJtZWNlbmVmbSB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX21lZGlhX2NlbnNvcnNoaXApCgpjb2VmcGxvdChtb2RlbF9tZWRpYV9jZW5zb3JzaGlwKQpgYGAKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBsZXZlbCBvZiBNZWRpYSBDb3JydXB0aW9uCgp2Mm1lY29ycnB0CmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9tZWRpYV9jb3JydXB0aW9uIDwtIGZlbG0odjJtZWNvcnJwdCB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX21lZGlhX2NvcnJ1cHRpb24pCgpjb2VmcGxvdChtb2RlbF9tZWRpYV9jb3JydXB0aW9uKQpgYGAKCgojIyBEeWFuc3RpYyBMZWFkZXJzaGlwIGFuZCBQb3dlciBEaXN0cmlidXRpb24gYnkgU29jaW8gRWNvbm9taWMgUG9zaXRpb24KCnYycGVwd3JzZXMgKDAtNCkKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX3Bvd2VyX3NvY2lvX2Vjb24gPC0gZmVsbSh2MnBlcHdyc2VzIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfcG93ZXJfc29jaW9fZWNvbikKCmNvZWZwbG90KG1vZGVsX3Bvd2VyX3NvY2lvX2Vjb24pCmBgYAoKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIFBvd2VyIERpc3RyaWJ1dGlvbiBieSBTb2NpYWwgZ3JvdXVwCgp2MnBlcHdyc29jCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9wb3dlcl9zb2NpYWxfZ3JvdXAgPC0gZmVsbSh2MnBlcHdyc29jIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfcG93ZXJfc29jaWFsX2dyb3VwKQoKY29lZnBsb3QobW9kZWxfcG93ZXJfc29jaWFsX2dyb3VwKQpgYGAKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIExlZ2l0aW1hdGUgSWRlb2xvZ3kgKFByb21vdGlvbikKCnYyZXhsX2xlZ2l0aWRlb2wKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX2lkZW9sb2d5X3Byb21vdGlvbiA8LSBmZWxtKHYyZXhsX2xlZ2l0aWRlb2wgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9pZGVvbG9neV9wcm9tb3Rpb24pCgpjb2VmcGxvdChtb2RlbF9pZGVvbG9neV9wcm9tb3Rpb24pCmBgYAoKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIFBlcnNvbiBvZiBMZWFkZXIgKExlYWRlciBDdWx0LCBleHRyYW9yZGluYXJ5IGNoYXJpc21hdGljIGV0Yy4pCnYyZXhsX2xlZ2l0bGVhZApgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfcGVyc29uYWxpdHlfY3VsdCA8LSBmZWxtKHYyZXhsX2xlZ2l0bGVhZCB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX3BlcnNvbmFsaXR5X2N1bHQpCgpjb2VmcGxvdChtb2RlbF9wZXJzb25hbGl0eV9jdWx0KQpgYGAKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBQb2xpdGljYWwgVmlvbGVuY2UgYnkgTm9uLVN0YXRlIEFjdG9ycwogdjJjYXZpb2wKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX3BvbGl0aWNhbF92aW9sZW5jZSA8LSBmZWxtKHYyY2F2aW9sIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfcG9saXRpY2FsX3Zpb2xlbmNlKQoKY29lZnBsb3QobW9kZWxfcG9saXRpY2FsX3Zpb2xlbmNlKQpgYGAKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBNb2JpbGlzYXRpb24gZm9yIERlbW9jcmFjeQp2MmNhZGVtbW9iCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9kZW1vY3JhdGljX21vYmlsaXNhdGlvbiA8LSBmZWxtKHYyY2FkZW1tb2IgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9kZW1vY3JhdGljX21vYmlsaXNhdGlvbikKCmNvZWZwbG90KG1vZGVsX2RlbW9jcmF0aWNfbW9iaWxpc2F0aW9uKQpgYGAKCgo=