Data Sampling

Helper

source("0_helpers.R")
## Warning: package 'rmarkdown' was built under R version 3.4.3
## Warning: package 'knitr' was built under R version 3.4.3
## 
## Attaching package: 'formr'
## The following object is masked from 'package:rmarkdown':
## 
##     word_document
## Warning: package 'lubridate' was built under R version 3.4.3
## 
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
## 
##     date
## Warning: package 'stringr' was built under R version 3.4.3
## Loading required package: carData
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:lubridate':
## 
##     hour, isoweek, mday, minute, month, quarter, second, wday, week, yday, year
## The following objects are masked from 'package:formr':
## 
##     first, last
## Loading required package: Matrix
## 
## Attaching package: 'lmerTest'
## The following object is masked from 'package:lme4':
## 
##     lmer
## The following object is masked from 'package:stats':
## 
##     step
## Warning: package 'haven' was built under R version 3.4.3
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## This is lavaan 0.5-23.1097
## lavaan is BETA software! Please report any bugs.
## 
## Attaching package: 'lavaan'
## The following object is masked from 'package:psych':
## 
##     cor2cov
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## 
## Attaching package: 'Hmisc'
## The following object is masked from 'package:psych':
## 
##     describe
## The following objects are masked from 'package:base':
## 
##     format.pval, round.POSIXt, trunc.POSIXt, units
## Warning: package 'tidyr' was built under R version 3.4.3
## 
## Attaching package: 'tidyr'
## The following object is masked from 'package:Matrix':
## 
##     expand
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:Hmisc':
## 
##     combine, src, summarize
## The following objects are masked from 'package:data.table':
## 
##     between, first, last
## The following objects are masked from 'package:lubridate':
## 
##     intersect, setdiff, union
## The following objects are masked from 'package:formr':
## 
##     first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Warning: package 'coefplot' was built under R version 3.4.3
## 
## Attaching package: 'codebook'
## The following object is masked from 'package:psych':
## 
##     bfi
## The following objects are masked from 'package:formr':
## 
##     asis_knit_child, expired, paste.knit_asis
## Warning: package 'effsize' was built under R version 3.4.4
## 
## Attaching package: 'effsize'
## The following object is masked from 'package:psych':
## 
##     cohen.d

Load data

### Import alldata used for birthorder
alldata_birthorder = readRDS("data/alldata_birthorder.rds")

Birthorder

Total

Number of individuals we were able to reconstruct the three different birth orders based on pregnancy and marriage history for

## Count Birthorder
n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive)),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg)),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes)),
            Naive_Maternal_Birth_Order = sum(!is.na(birthorder_naive)))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order Naive_Maternal_Birth_Order
43322 48546 42682 67026

No multiple births

n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1,
                                                    na.rm = T),
            Naive_Maternal_Birth_Order = sum(!is.na(birthorder_naive) & (is.na(any_multiple_birth) | any_multiple_birth != 1),
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order Naive_Maternal_Birth_Order
40189 45034 39589 63451

No single children

## Count Birthorder - without only children
n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1,
                                                    na.rm = T),
            Naive_Maternal_Birth_Order = sum(!is.na(birthorder_naive) & any_multiple_birth != 1 &
                                                      sibling_count_naive != 1,
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order Naive_Maternal_Birth_Order
36014 41204 34786 41692

Still alive

## Count Birthorder - without only children
alldata_birthorder = alldata_birthorder %>%
  mutate(alive = ifelse(!is.na(g_factor_2015_old), 1, alive)) # for seven people its reported that they are not alive anymore but they participated in IFLS5 ?

n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1 & alive != 3,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1 & alive != 3,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1 & alive != 3,
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order
32714 33678 31635

Interviewed for IFLS 5

Total

### All people in the birthorder data file that have ANY g-factor, educational attainment, personality or risk values have to be marked
alldata_birthorder = alldata_birthorder %>%
  mutate(used_any = ifelse(!is.na(g_factor_2015_old) | !is.na(g_factor_2015_young) | !is.na(g_factor_2007_old) |
                             !is.na(g_factor_2007_young) | !is.na(big5_ext) | !is.na(big5_open) | !is.na(big5_agree) |
                             !is.na(big5_neu) | !is.na(big5_con) | !is.na(riskA) | !is.na(riskB) |
                             is.na(years_of_education), 1, 0))

n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1 & alive != 3 &
                                         used_any == 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1 & alive != 3 &
                                         used_any == 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1 & alive != 3 &
                                                      used_any == 1,
                                                    na.rm = T),
            Naive_Maternal_Birth_Order = sum(!is.na(birthorder_naive) & (is.na(any_multiple_birth) | any_multiple_birth != 1) &
                                                      sibling_count_naive != 1 & alive != 3 &
                                                      used_any == 1,
                                                    na.rm = T)

    )
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order Naive_Maternal_Birth_Order
32643 33606 31566 41693

Intelligence

### All people in the birthorder data file that have all Intelligence measurements
alldata_birthorder = alldata_birthorder %>%
  mutate(used_iq = ifelse(!is.na(g_factor_2015_old) | !is.na(g_factor_2015_young) | !is.na(g_factor_2007_old) |
                             !is.na(g_factor_2007_young), 1, 0)) # used_iq = 1:included, 0:not_included


n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1 & alive != 3 &
                                         used_iq == 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1 & alive != 3 &
                                         used_iq == 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1 & alive != 3 &
                                                      used_iq == 1,
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order
12503 12631 12193

Personality

### All people in the birthorder data file that have Personality Measurements
missingness_patterns(alldata_birthorder %>% select(big5_ext, big5_con, big5_open, big5_neu, big5_agree, big5_open))
##  index        col missings
##      1   big5_ext    69795
##      2   big5_con    69795
##      3  big5_open    69795
##      4   big5_neu    69795
##      5 big5_agree    69795
Pattern Freq Culprit
1_2_3_4_5 69795
_________ 31446 _
# Missingness Pattern shows that if one of the personality measurements is missing all Measurements are missing
alldata_birthorder = alldata_birthorder %>%
  mutate(used_pers = ifelse(!is.na(big5_ext), 1, 0))


n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1 & alive != 3 &
                                         used_pers == 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1 & alive != 3 &
                                         used_pers == 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1 & alive != 3 &
                                                      used_pers == 1,
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order
5922 5976 5803

Risk preference

### All people in the birthorder data file that have Risk Measurements
missingness_patterns(alldata_birthorder %>% select(riskA, riskB))
##  index   col missings
##      1 riskA    73461
##      2 riskB    71663
Pattern Freq Culprit
1_2 70149
___ 26266 _
1__ 3312 riskA
__2 1514 riskB
## Missingness Pattern shows that sometimes A and sometimes B is missing
alldata_birthorder = alldata_birthorder %>%
  mutate(used_riskA = ifelse(!is.na(riskA), 1, 0),
         used_riskB = ifelse(!is.na(riskB), 1, 0))

n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1 & alive != 3 &
                                         used_riskA == 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1 & alive != 3 &
                                         used_riskA == 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1 & alive != 3 &
                                                      used_riskA == 1,
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order
5331 5383 5230
n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1 & alive != 3 &
                                         used_riskB == 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1 & alive != 3 &
                                         used_riskB == 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1 & alive != 3 &
                                                      used_riskB == 1,
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order
5603 5658 5490

Educational Attainment

### All people in the birthorder data file that have educational attainment measurements
missingness_patterns(alldata_birthorder %>% select(years_of_education))
##  index                col missings
##      1 years_of_education    67423
Pattern Freq Culprit
1 67423 years_of_education
_ 33818 _
alldata_birthorder = alldata_birthorder %>%
  mutate(used_ea = ifelse(!is.na(years_of_education), 1, 0))

n_birthorder = alldata_birthorder %>%
  summarise(Maternal_Birth_Order = sum(!is.na(birthorder_uterus_alive) & any_multiple_birth != 1 &
                                         sibling_count_uterus_alive != 1 & alive != 3 &
                                         used_ea == 1,
                                       na.rm = T),
            Maternal_Pregnancy_Order = sum(!is.na(birthorder_uterus_preg) & any_multiple_birth != 1 &
                                             sibling_count_uterus_preg != 1 & alive != 3 &
                                         used_ea == 1,
                                           na.rm = T),
            Parental_Full_Sibling_Birth_Order = sum(!is.na(birthorder_genes) & any_multiple_birth != 1 &
                                                      sibling_count_genes != 1 & alive != 3 &
                                                      used_ea == 1,
                                                    na.rm = T))
n_birthorder
Maternal_Birth_Order Maternal_Pregnancy_Order Parental_Full_Sibling_Birth_Order
6150 6209 6030
LS0tCnRpdGxlOiAiICIKYXV0aG9yOiAiICIKb3V0cHV0OiBodG1sX2RvY3VtZW50CmVkaXRvcl9vcHRpb25zOiAKICBjaHVua19vdXRwdXRfdHlwZTogY29uc29sZQotLS0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IzhEQTBDQiI+RGF0YSBTYW1wbGluZzwvc3Bhbj4gey50YWJzZXR9CgojIyBIZWxwZXIKYGBge3IgaGVscGVyfQpzb3VyY2UoIjBfaGVscGVycy5SIikKYGBgCgojIyBMb2FkIGRhdGEKYGBge3IgTG9hZCBkYXRhfQojIyMgSW1wb3J0IGFsbGRhdGEgdXNlZCBmb3IgYmlydGhvcmRlcgphbGxkYXRhX2JpcnRob3JkZXIgPSByZWFkUkRTKCJkYXRhL2FsbGRhdGFfYmlydGhvcmRlci5yZHMiKQpgYGAKCgojIyBCaXJ0aG9yZGVyIHsuYWN0aXZlfQoKIyMjIFRvdGFsCk51bWJlciBvZiBpbmRpdmlkdWFscyB3ZSB3ZXJlIGFibGUgdG8gcmVjb25zdHJ1Y3QgdGhlIHRocmVlIGRpZmZlcmVudCBiaXJ0aCBvcmRlcnMgYmFzZWQgb24gcHJlZ25hbmN5IGFuZCBtYXJyaWFnZSBoaXN0b3J5IGZvciAKYGBge3J9CiMjIENvdW50IEJpcnRob3JkZXIKbl9iaXJ0aG9yZGVyID0gYWxsZGF0YV9iaXJ0aG9yZGVyICU+JQogIHN1bW1hcmlzZShNYXRlcm5hbF9CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfYWxpdmUpKSwKICAgICAgICAgICAgTWF0ZXJuYWxfUHJlZ25hbmN5X09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX3V0ZXJ1c19wcmVnKSksCiAgICAgICAgICAgIFBhcmVudGFsX0Z1bGxfU2libGluZ19CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl9nZW5lcykpLAogICAgICAgICAgICBOYWl2ZV9NYXRlcm5hbF9CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl9uYWl2ZSkpKQpuX2JpcnRob3JkZXIKYGBgCgoKIyMjIE5vIG11bHRpcGxlIGJpcnRocwpgYGAge3J9Cm5fYmlydGhvcmRlciA9IGFsbGRhdGFfYmlydGhvcmRlciAlPiUKICBzdW1tYXJpc2UoTWF0ZXJuYWxfQmlydGhfT3JkZXIgPSBzdW0oIWlzLm5hKGJpcnRob3JkZXJfdXRlcnVzX2FsaXZlKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpLAogICAgICAgICAgICBNYXRlcm5hbF9QcmVnbmFuY3lfT3JkZXIgPSBzdW0oIWlzLm5hKGJpcnRob3JkZXJfdXRlcnVzX3ByZWcpICYgYW55X211bHRpcGxlX2JpcnRoICE9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpLAogICAgICAgICAgICBQYXJlbnRhbF9GdWxsX1NpYmxpbmdfQmlydGhfT3JkZXIgPSBzdW0oIWlzLm5hKGJpcnRob3JkZXJfZ2VuZXMpICYgYW55X211bHRpcGxlX2JpcnRoICE9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpLAogICAgICAgICAgICBOYWl2ZV9NYXRlcm5hbF9CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl9uYWl2ZSkgJiAoaXMubmEoYW55X211bHRpcGxlX2JpcnRoKSB8IGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCkpCm5fYmlydGhvcmRlcgpgYGAKCiMjIyBObyBzaW5nbGUgY2hpbGRyZW4KYGBge3J9CiMjIENvdW50IEJpcnRob3JkZXIgLSB3aXRob3V0IG9ubHkgY2hpbGRyZW4Kbl9iaXJ0aG9yZGVyID0gYWxsZGF0YV9iaXJ0aG9yZGVyICU+JQogIHN1bW1hcmlzZShNYXRlcm5hbF9CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfYWxpdmUpICYgYW55X211bHRpcGxlX2JpcnRoICE9IDEgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX2FsaXZlICE9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE1hdGVybmFsX1ByZWduYW5jeV9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfcHJlZykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX3ByZWcgIT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIFBhcmVudGFsX0Z1bGxfU2libGluZ19CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl9nZW5lcykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfZ2VuZXMgIT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE5haXZlX01hdGVybmFsX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX25haXZlKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF9uYWl2ZSAhPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSkKbl9iaXJ0aG9yZGVyCmBgYAoKCiMjIyBTdGlsbCBhbGl2ZQpgYGB7cn0KIyMgQ291bnQgQmlydGhvcmRlciAtIHdpdGhvdXQgb25seSBjaGlsZHJlbgphbGxkYXRhX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgbXV0YXRlKGFsaXZlID0gaWZlbHNlKCFpcy5uYShnX2ZhY3Rvcl8yMDE1X29sZCksIDEsIGFsaXZlKSkgIyBmb3Igc2V2ZW4gcGVvcGxlIGl0cyByZXBvcnRlZCB0aGF0IHRoZXkgYXJlIG5vdCBhbGl2ZSBhbnltb3JlIGJ1dCB0aGV5IHBhcnRpY2lwYXRlZCBpbiBJRkxTNSA/CgpuX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgc3VtbWFyaXNlKE1hdGVybmFsX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX3V0ZXJ1c19hbGl2ZSkgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF91dGVydXNfYWxpdmUgIT0gMSAmIGFsaXZlICE9IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE1hdGVybmFsX1ByZWduYW5jeV9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfcHJlZykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX3ByZWcgIT0gMSAmIGFsaXZlICE9IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpLAogICAgICAgICAgICBQYXJlbnRhbF9GdWxsX1NpYmxpbmdfQmlydGhfT3JkZXIgPSBzdW0oIWlzLm5hKGJpcnRob3JkZXJfZ2VuZXMpICYgYW55X211bHRpcGxlX2JpcnRoICE9IDEgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nX2NvdW50X2dlbmVzICE9IDEgJiBhbGl2ZSAhPSAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSkKbl9iaXJ0aG9yZGVyCgoKYGBgCgoKIyMjIEludGVydmlld2VkIGZvciBJRkxTIDUgIHsudGFic2V0fQoKIyMjIyBUb3RhbApgYGB7cn0KIyMjIEFsbCBwZW9wbGUgaW4gdGhlIGJpcnRob3JkZXIgZGF0YSBmaWxlIHRoYXQgaGF2ZSBBTlkgZy1mYWN0b3IsIGVkdWNhdGlvbmFsIGF0dGFpbm1lbnQsIHBlcnNvbmFsaXR5IG9yIHJpc2sgdmFsdWVzIGhhdmUgdG8gYmUgbWFya2VkCmFsbGRhdGFfYmlydGhvcmRlciA9IGFsbGRhdGFfYmlydGhvcmRlciAlPiUKICBtdXRhdGUodXNlZF9hbnkgPSBpZmVsc2UoIWlzLm5hKGdfZmFjdG9yXzIwMTVfb2xkKSB8ICFpcy5uYShnX2ZhY3Rvcl8yMDE1X3lvdW5nKSB8ICFpcy5uYShnX2ZhY3Rvcl8yMDA3X29sZCkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpcy5uYShnX2ZhY3Rvcl8yMDA3X3lvdW5nKSB8ICFpcy5uYShiaWc1X2V4dCkgfCAhaXMubmEoYmlnNV9vcGVuKSB8ICFpcy5uYShiaWc1X2FncmVlKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzLm5hKGJpZzVfbmV1KSB8ICFpcy5uYShiaWc1X2NvbikgfCAhaXMubmEocmlza0EpIHwgIWlzLm5hKHJpc2tCKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMubmEoeWVhcnNfb2ZfZWR1Y2F0aW9uKSwgMSwgMCkpCgpuX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgc3VtbWFyaXNlKE1hdGVybmFsX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX3V0ZXJ1c19hbGl2ZSkgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF91dGVydXNfYWxpdmUgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfYW55ID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE1hdGVybmFsX1ByZWduYW5jeV9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfcHJlZykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX3ByZWcgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfYW55ID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpLAogICAgICAgICAgICBQYXJlbnRhbF9GdWxsX1NpYmxpbmdfQmlydGhfT3JkZXIgPSBzdW0oIWlzLm5hKGJpcnRob3JkZXJfZ2VuZXMpICYgYW55X211bHRpcGxlX2JpcnRoICE9IDEgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nX2NvdW50X2dlbmVzICE9IDEgJiBhbGl2ZSAhPSAzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZF9hbnkgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE5haXZlX01hdGVybmFsX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX25haXZlKSAmIChpcy5uYShhbnlfbXVsdGlwbGVfYmlydGgpIHwgYW55X211bHRpcGxlX2JpcnRoICE9IDEpICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF9uYWl2ZSAhPSAxICYgYWxpdmUgIT0gMyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfYW55ID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpCgogICAgKQpuX2JpcnRob3JkZXIKYGBgCgojIyMjIEludGVsbGlnZW5jZQpgYGB7cn0KIyMjIEFsbCBwZW9wbGUgaW4gdGhlIGJpcnRob3JkZXIgZGF0YSBmaWxlIHRoYXQgaGF2ZSBhbGwgSW50ZWxsaWdlbmNlIG1lYXN1cmVtZW50cwphbGxkYXRhX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgbXV0YXRlKHVzZWRfaXEgPSBpZmVsc2UoIWlzLm5hKGdfZmFjdG9yXzIwMTVfb2xkKSB8ICFpcy5uYShnX2ZhY3Rvcl8yMDE1X3lvdW5nKSB8ICFpcy5uYShnX2ZhY3Rvcl8yMDA3X29sZCkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpcy5uYShnX2ZhY3Rvcl8yMDA3X3lvdW5nKSwgMSwgMCkpICMgdXNlZF9pcSA9IDE6aW5jbHVkZWQsIDA6bm90X2luY2x1ZGVkCgoKbl9iaXJ0aG9yZGVyID0gYWxsZGF0YV9iaXJ0aG9yZGVyICU+JQogIHN1bW1hcmlzZShNYXRlcm5hbF9CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfYWxpdmUpICYgYW55X211bHRpcGxlX2JpcnRoICE9IDEgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX2FsaXZlICE9IDEgJiBhbGl2ZSAhPSAzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkX2lxID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE1hdGVybmFsX1ByZWduYW5jeV9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfcHJlZykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX3ByZWcgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfaXEgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIFBhcmVudGFsX0Z1bGxfU2libGluZ19CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl9nZW5lcykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfZ2VuZXMgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkX2lxID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpKQpuX2JpcnRob3JkZXIKCmBgYAoKCiMjIyMgUGVyc29uYWxpdHkKYGBge3J9CiMjIyBBbGwgcGVvcGxlIGluIHRoZSBiaXJ0aG9yZGVyIGRhdGEgZmlsZSB0aGF0IGhhdmUgUGVyc29uYWxpdHkgTWVhc3VyZW1lbnRzCm1pc3NpbmduZXNzX3BhdHRlcm5zKGFsbGRhdGFfYmlydGhvcmRlciAlPiUgc2VsZWN0KGJpZzVfZXh0LCBiaWc1X2NvbiwgYmlnNV9vcGVuLCBiaWc1X25ldSwgYmlnNV9hZ3JlZSwgYmlnNV9vcGVuKSkKIyBNaXNzaW5nbmVzcyBQYXR0ZXJuIHNob3dzIHRoYXQgaWYgb25lIG9mIHRoZSBwZXJzb25hbGl0eSBtZWFzdXJlbWVudHMgaXMgbWlzc2luZyBhbGwgTWVhc3VyZW1lbnRzIGFyZSBtaXNzaW5nCmFsbGRhdGFfYmlydGhvcmRlciA9IGFsbGRhdGFfYmlydGhvcmRlciAlPiUKICBtdXRhdGUodXNlZF9wZXJzID0gaWZlbHNlKCFpcy5uYShiaWc1X2V4dCksIDEsIDApKQoKCm5fYmlydGhvcmRlciA9IGFsbGRhdGFfYmlydGhvcmRlciAlPiUKICBzdW1tYXJpc2UoTWF0ZXJuYWxfQmlydGhfT3JkZXIgPSBzdW0oIWlzLm5hKGJpcnRob3JkZXJfdXRlcnVzX2FsaXZlKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nX2NvdW50X3V0ZXJ1c19hbGl2ZSAhPSAxICYgYWxpdmUgIT0gMyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZF9wZXJzID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE1hdGVybmFsX1ByZWduYW5jeV9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfcHJlZykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX3ByZWcgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfcGVycyA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSwKICAgICAgICAgICAgUGFyZW50YWxfRnVsbF9TaWJsaW5nX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX2dlbmVzKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF9nZW5lcyAhPSAxICYgYWxpdmUgIT0gMyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfcGVycyA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSkKbl9iaXJ0aG9yZGVyCgpgYGAKCiMjIyMgUmlzayBwcmVmZXJlbmNlCmBgYHtyfQojIyMgQWxsIHBlb3BsZSBpbiB0aGUgYmlydGhvcmRlciBkYXRhIGZpbGUgdGhhdCBoYXZlIFJpc2sgTWVhc3VyZW1lbnRzCm1pc3NpbmduZXNzX3BhdHRlcm5zKGFsbGRhdGFfYmlydGhvcmRlciAlPiUgc2VsZWN0KHJpc2tBLCByaXNrQikpCiMjIE1pc3NpbmduZXNzIFBhdHRlcm4gc2hvd3MgdGhhdCBzb21ldGltZXMgQSBhbmQgc29tZXRpbWVzIEIgaXMgbWlzc2luZwphbGxkYXRhX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgbXV0YXRlKHVzZWRfcmlza0EgPSBpZmVsc2UoIWlzLm5hKHJpc2tBKSwgMSwgMCksCiAgICAgICAgIHVzZWRfcmlza0IgPSBpZmVsc2UoIWlzLm5hKHJpc2tCKSwgMSwgMCkpCgpuX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgc3VtbWFyaXNlKE1hdGVybmFsX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX3V0ZXJ1c19hbGl2ZSkgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF91dGVydXNfYWxpdmUgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfcmlza0EgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSwKICAgICAgICAgICAgTWF0ZXJuYWxfUHJlZ25hbmN5X09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX3V0ZXJ1c19wcmVnKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF91dGVydXNfcHJlZyAhPSAxICYgYWxpdmUgIT0gMyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZF9yaXNrQSA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSwKICAgICAgICAgICAgUGFyZW50YWxfRnVsbF9TaWJsaW5nX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX2dlbmVzKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF9nZW5lcyAhPSAxICYgYWxpdmUgIT0gMyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfcmlza0EgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCkpCm5fYmlydGhvcmRlcgoKCgpuX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgc3VtbWFyaXNlKE1hdGVybmFsX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX3V0ZXJ1c19hbGl2ZSkgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF91dGVydXNfYWxpdmUgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfcmlza0IgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSwKICAgICAgICAgICAgTWF0ZXJuYWxfUHJlZ25hbmN5X09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX3V0ZXJ1c19wcmVnKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF91dGVydXNfcHJlZyAhPSAxICYgYWxpdmUgIT0gMyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZF9yaXNrQiA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEucm0gPSBUKSwKICAgICAgICAgICAgUGFyZW50YWxfRnVsbF9TaWJsaW5nX0JpcnRoX09yZGVyID0gc3VtKCFpcy5uYShiaXJ0aG9yZGVyX2dlbmVzKSAmIGFueV9tdWx0aXBsZV9iaXJ0aCAhPSAxICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2libGluZ19jb3VudF9nZW5lcyAhPSAxICYgYWxpdmUgIT0gMyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfcmlza0IgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCkpCm5fYmlydGhvcmRlcgoKCmBgYAoKIyMjIyBFZHVjYXRpb25hbCBBdHRhaW5tZW50CmBgYHtyfQojIyMgQWxsIHBlb3BsZSBpbiB0aGUgYmlydGhvcmRlciBkYXRhIGZpbGUgdGhhdCBoYXZlIGVkdWNhdGlvbmFsIGF0dGFpbm1lbnQgbWVhc3VyZW1lbnRzCm1pc3NpbmduZXNzX3BhdHRlcm5zKGFsbGRhdGFfYmlydGhvcmRlciAlPiUgc2VsZWN0KHllYXJzX29mX2VkdWNhdGlvbikpCgphbGxkYXRhX2JpcnRob3JkZXIgPSBhbGxkYXRhX2JpcnRob3JkZXIgJT4lCiAgbXV0YXRlKHVzZWRfZWEgPSBpZmVsc2UoIWlzLm5hKHllYXJzX29mX2VkdWNhdGlvbiksIDEsIDApKQoKbl9iaXJ0aG9yZGVyID0gYWxsZGF0YV9iaXJ0aG9yZGVyICU+JQogIHN1bW1hcmlzZShNYXRlcm5hbF9CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfYWxpdmUpICYgYW55X211bHRpcGxlX2JpcnRoICE9IDEgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX2FsaXZlICE9IDEgJiBhbGl2ZSAhPSAzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkX2VhID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIE1hdGVybmFsX1ByZWduYW5jeV9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl91dGVydXNfcHJlZykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfdXRlcnVzX3ByZWcgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfZWEgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnJtID0gVCksCiAgICAgICAgICAgIFBhcmVudGFsX0Z1bGxfU2libGluZ19CaXJ0aF9PcmRlciA9IHN1bSghaXMubmEoYmlydGhvcmRlcl9nZW5lcykgJiBhbnlfbXVsdGlwbGVfYmlydGggIT0gMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdfY291bnRfZ2VuZXMgIT0gMSAmIGFsaXZlICE9IDMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkX2VhID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYS5ybSA9IFQpKQpuX2JpcnRob3JkZXIKCmBgYAoK