Codebook

Variable Description
country_name
cow_code
project
agreed_usd
agreed_kr
total_usd
total_kr
net_usd
net_kr
gift_value_usd
gift_value_kr
gift_pc
COVID_gift
koraid_gift
north Russia, China, Mongolia, Kazakhstan
south Brunei, Cambodia, India, Indonesia, Laos, Malaysia, Myanmar, Philippines, Singapore, Thailand, Vietnam
eth_fraction Ethnic fractionalization (Source: CREG Project)
eth_polarized Ethnic polarizarion (Source: CREG Project)
rel_fraction Religious fractionalization (Source: CREG Project)
rel_polarized Religious fractionalization (Source: CREG Project)
rugged Level of terrain ruggedness in country (Source: Gibler and Miller, 2014)
polity Polity Score (Source: Polity Project)
level_contig Level of contiguity 1 = direct land contiguity. 2 = separated by max 12 miles of water 3 = separated by max 24 miles. 4 = separated by max 150 miles of water 5 = separated by max 400 miles of water (Source: Correlates of War)
shared_igso number of mutual IGOs for which country is a member with South Korea (Source: Correlates of War)
dist_seoul Distance to Seoul
continent Africa, Americas, Asia, Europe, Oceania
income_group_name High, Upper Middle, Lower Middle, Low Income Country
pop World Bank population estimate
GDP_per_cap_constant_2010 World Bank GDP per capita at 2010 US dollars
infant_mortality World Bank infant deaths per 1000 live births
region East Asia & Pacific, Europe & Central Asia, Latin America & Caribbean, Middle East & North Africa, North America, South Asia, Sub-Saharan Africa
cases_total WHO total cumulative COVID cases
cases_total_per_100000 WHO total cumulative COVID cases per 100,000 population
deaths_total WHO total cumulative COVID deaths
death_total_per_100000 WHO total cumulative COVID deaths per 100,000 population
export_value Exports from ROK (Source: Korean Customs Service)
import_value Imports to ROK (Source: Korean Customs Service)
trade_balance Balance of Payments

Descriptive Statistics

skim(kor_cov) %>% 
  dplyr::select(-c(numeric.p0:numeric.p100))  
Data summary
Name kor_cov
Number of rows 174
Number of columns 43
_______________________
Column type frequency:
character 7
numeric 36
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
country_name 0 1.00 4 32 0 174 0
continent 2 0.99 4 8 0 5 0
region_wb 2 0.99 10 26 0 7 0
income_group_name 8 0.95 18 27 0 4 0
region 1 0.99 10 26 0 7 0
region_who 24 0.86 6 21 0 6 0
country 6 0.97 4 37 0 168 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd hist
cow_code 5 0.97 466.64 2.444800e+02 ▆▇▇▇▃
project 93 0.47 24.57 3.240000e+01 ▇▂▁▁▁
agreed_usd 0 1.00 6508522.22 1.879271e+07 ▇▁▁▁▁
agreed_kr 0 1.00 7681671941.79 2.218032e+10 ▇▁▁▁▁
total_usd 0 1.00 4130678.76 1.294224e+07 ▇▁▁▁▁
total_kr 0 1.00 4874735540.09 1.527352e+10 ▇▁▁▁▁
net_usd 0 1.00 3897431.61 1.274026e+07 ▇▁▁▁▁
net_kr 0 1.00 4599473581.62 1.503516e+10 ▇▁▁▁▁
gift_value_usd 0 1.00 3722901.83 1.135687e+07 ▇▁▁▁▁
gift_value_kr 0 1.00 4393505757.28 1.340258e+10 ▇▁▁▁▁
gift_pc 0 1.00 0.03 2.000000e-01 ▇▁▁▁▁
COVID_gift 0 1.00 625810.90 4.294113e+06 ▇▁▁▁▁
koraid_gift 0 1.00 2983056.92 1.129134e+07 ▇▁▁▁▁
north 0 1.00 0.02 1.300000e-01 ▇▁▁▁▁
south 0 1.00 0.00 0.000000e+00 ▁▁▇▁▁
eth_fraction 55 0.68 0.45 2.500000e-01 ▆▇▆▆▇
eth_polarized 55 0.68 0.56 2.100000e-01 ▂▅▅▇▅
rel_fraction 53 0.70 0.41 2.100000e-01 ▆▆▇▇▇
rel_polarized 53 0.70 0.62 2.700000e-01 ▃▂▅▇▇
rugged 45 0.74 1.26 1.170000e+00 ▇▃▁▁▁
polity 47 0.73 4.39 6.030000e+00 ▂▂▁▃▇
level_contig 42 0.76 0.07 5.600000e-01 ▇▁▁▁▁
shared_igso 42 0.76 43.84 1.048000e+01 ▁▁▇▅▂
dist_seoul 42 0.76 10214.13 3.430590e+03 ▁▇▇▆▁
pop 5 0.97 42423485.83 1.531908e+08 ▇▁▁▁▁
GDP_per_cap_constant_2010 10 0.94 14235.93 2.001703e+04 ▇▁▁▁▁
infant_mortality 5 0.97 21.68 1.993000e+01 ▇▂▂▁▁
cases_total 24 0.86 4149.31 4.152320e+03 ▇▃▂▁▁
cases_total_per_100000 24 0.86 17274.96 3.935720e+04 ▇▁▁▁▁
deaths_total 24 0.86 74.61 9.114000e+01 ▇▂▁▁▁
death_total_per_100000 24 0.86 284.73 7.985500e+02 ▇▁▁▁▁
number_of_export 6 0.97 50510.72 2.415154e+05 ▇▁▁▁▁
export_value 6 0.97 2573188.04 1.150313e+07 ▇▁▁▁▁
number_of_import 6 0.97 77301.19 3.765683e+05 ▇▁▁▁▁
import_value 6 0.97 2577729.12 9.737862e+06 ▇▁▁▁▁
trade_balance 6 0.97 -4541.07 4.404132e+06 ▁▇▃▁▁

Correlation Matrices

Corrplot package

kor_cov %>% 
   mutate(ln_gift_pc = log(gift_pc),
          ln_covid_gift = log(COVID_gift), 
          ln_total_aid = log(total_usd),
          ln_gdp_pc = log(GDP_per_cap_constant_2010),
          ln_pop = log(pop),
          ln_covid_cases = log(cases_total_per_100000),
          ln_dist = log(dist_seoul),
          ln_export = log(export_value), 
          ln_import = log(import_value)) %>% 
   select(ln_covid_gift, ln_total_aid, ln_pop, ln_gdp_pc, ln_covid_cases, ln_export) -> kor_cov_sub

kor_cov_no_na <- na.omit(kor_cov_sub)

conf_test2 = cor.mtest(kor_cov_no_na, conf.level = 0.95) 

corrplot(cor(kor_cov_no_na, method = "spearman"), 
         p.mat = conf_test2$p,
         method = 'circle',
         type = 'lower', 
         insig ='blank',
         addCoef.col ='black',
         number.cex = 0.8, 
         order = 'AOE', 
         diag = FALSE, 
         tl.srt = 45)

kor_cov %>% 
   mutate(ln_gift_pc = log(gift_pc),
          ln_covid_gift = log(COVID_gift), 
          ln_total_aid = log(total_usd),
          ln_gdp_pc = log(GDP_per_cap_constant_2010),
          ln_pop = log(pop),
          ln_covid_cases = log(cases_total_per_100000),
          ln_dist = log(dist_seoul),
          ln_export = log(export_value), 
          ln_import = log(import_value)) %>% 
   select(ln_covid_gift, ln_total_aid, ln_pop, ln_gdp_pc, ln_covid_cases, ln_export, income_group_name) -> kor_cov_sub2

GGally package

kor_cov2_no_na <- na.omit(kor_cov_sub2)

library(GGally)

kor_cov2_no_na %>%
  filter(income_group_name != "High Income Country") %>%
  filter(!is.na(income_group_name)) %>%
  mutate(income = ifelse(income_group_name == "Low Income Country", "Low",
                  ifelse(income_group_name == "Lower Middle Income Country", "Middle",
                  ifelse(income_group_name == "Upper Middle Income Country", "Upper", income_group_name)))) %>%
  select(!income_group_name) %>%
  ggpairs(mapping = ggplot2::aes(colour = income),
          alpha = 0.5, 
           upper = list(continuous = wrap("cor", size = 2.5))) +
  theme(axis.text.x = element_text(angle = 70, hjust = 1),
        strip.text.x =  element_text(angle = 30),
        strip.text.y = element_text(angle = 20))

Performance Analytics package

library(PerformanceAnalytics)

chart.Correlation(kor_cov_no_na, 
                  histogram = TRUE,
                  method = "spearman",
                  cex.cor = 50, 
                  cex.labels = 50,
                  cex = 1.5, 
                  cex.font = 5)

LS0tDQp0aXRsZTogIktPUkFJRCBEQVRBU0VUIg0KYXV0aG9yOiAiUGF1bGEiDQpkYXRlOiAiOS8xLzIwMjEiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdG9jX2RlcHRoOiA1DQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobWFncml0dHIpDQpsaWJyYXJ5KHNraW1yKQ0KbGlicmFyeShjb3VudHJ5Y29kZSkNCmxpYnJhcnkoamFuaXRvcikNCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpsaWJyYXJ5KGNvcnJwbG90KQ0KDQoNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCANCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsIA0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSAiYXNpcyIsIA0KICAgICAgICAgICAgICAgICAgICAgIG91dC53aWR0aCA9ICI0MDAlIikNCg0Ka29yX2NvdiA8LSByZWFkLmNzdigiQzovVXNlcnMvUGF1bGEvRGVza3RvcC9QRF9vcmlnaW5hbF9kYXRhc2V0cy9rb3JhaWRfd2hvX3RyYWRlLmNzdiIpDQoNCmtvcl9jb3YkWCA8LSBOVUxMDQoNCmBgYA0KDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge2JhY2tncm91bmQ6ICNlZWU7fQ0KICAgIA0KaDEsIGgyLCBoMyB7dGV4dC1hbGlnbjogY2VudGVyO30NCg0KYGBgDQoNCg0KIyBDb2RlYm9vaw0KDQoNClZhcmlhYmxlICB8IERlc2NyaXB0aW9uDQotLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQ0KY291bnRyeV9uYW1lIHwNCmNvd19jb2RlIHwNCnByb2plY3QgfA0KYWdyZWVkX3VzZCB8DQphZ3JlZWRfa3IgfA0KdG90YWxfdXNkIHwNCnRvdGFsX2tyIHwNCm5ldF91c2QgfA0KbmV0X2tyIHwNCmdpZnRfdmFsdWVfdXNkIHwNCmdpZnRfdmFsdWVfa3IgfA0KZ2lmdF9wYyB8DQpDT1ZJRF9naWZ0IHwNCmtvcmFpZF9naWZ0IHwNCm5vcnRoIHwgIFJ1c3NpYSwgQ2hpbmEsIE1vbmdvbGlhLCBLYXpha2hzdGFuDQpzb3V0aCB8ICBCcnVuZWksIENhbWJvZGlhLCBJbmRpYSwgSW5kb25lc2lhLCBMYW9zLCBNYWxheXNpYSwgTXlhbm1hciwgUGhpbGlwcGluZXMsIFNpbmdhcG9yZSwgVGhhaWxhbmQsIFZpZXRuYW0NCmV0aF9mcmFjdGlvbiB8IEV0aG5pYyBmcmFjdGlvbmFsaXphdGlvbiAoU291cmNlOiBDUkVHIFByb2plY3QpDQpldGhfcG9sYXJpemVkIHwgRXRobmljIHBvbGFyaXphcmlvbiAoU291cmNlOiBDUkVHIFByb2plY3QpDQpyZWxfZnJhY3Rpb24gfCBSZWxpZ2lvdXMgZnJhY3Rpb25hbGl6YXRpb24gKFNvdXJjZTogQ1JFRyBQcm9qZWN0KQ0KcmVsX3BvbGFyaXplZCB8IFJlbGlnaW91cyBmcmFjdGlvbmFsaXphdGlvbiAoU291cmNlOiBDUkVHIFByb2plY3QpDQpydWdnZWQgfCBMZXZlbCBvZiB0ZXJyYWluIHJ1Z2dlZG5lc3MgaW4gY291bnRyeSAoU291cmNlOiBHaWJsZXIgYW5kIE1pbGxlciwgMjAxNCkNCnBvbGl0eSB8IFBvbGl0eSBTY29yZSAoU291cmNlOiBQb2xpdHkgUHJvamVjdCkNCmxldmVsX2NvbnRpZyAgfCBMZXZlbCBvZiBjb250aWd1aXR5IDEgPSBkaXJlY3QgbGFuZCBjb250aWd1aXR5LiAyID0gc2VwYXJhdGVkIGJ5IG1heCAxMiBtaWxlcyBvZiB3YXRlciAzID0gc2VwYXJhdGVkIGJ5IG1heCAyNCBtaWxlcy4gNCA9IHNlcGFyYXRlZCBieSBtYXggMTUwIG1pbGVzIG9mIHdhdGVyIDUgPSBzZXBhcmF0ZWQgYnkgbWF4IDQwMCBtaWxlcyBvZiB3YXRlciAoU291cmNlOiBDb3JyZWxhdGVzIG9mIFdhcikNCnNoYXJlZF9pZ3NvICB8IG51bWJlciBvZiBtdXR1YWwgSUdPcyBmb3Igd2hpY2ggY291bnRyeSBpcyBhIG1lbWJlciB3aXRoIFNvdXRoIEtvcmVhIChTb3VyY2U6IENvcnJlbGF0ZXMgb2YgV2FyKQ0KZGlzdF9zZW91bCAgfCBEaXN0YW5jZSB0byBTZW91bCANCmNvbnRpbmVudCAgfCBBZnJpY2EsIEFtZXJpY2FzLCBBc2lhLCBFdXJvcGUsIE9jZWFuaWENCmluY29tZV9ncm91cF9uYW1lICB8IEhpZ2gsIFVwcGVyIE1pZGRsZSwgTG93ZXIgTWlkZGxlLCBMb3cgSW5jb21lIENvdW50cnkNCnBvcCAgfCBXb3JsZCBCYW5rIHBvcHVsYXRpb24gZXN0aW1hdGUNCkdEUF9wZXJfY2FwX2NvbnN0YW50XzIwMTAgIHwgV29ybGQgQmFuayBHRFAgcGVyIGNhcGl0YSAgYXQgMjAxMCBVUyBkb2xsYXJzDQppbmZhbnRfbW9ydGFsaXR5IHwgV29ybGQgQmFuayBpbmZhbnQgZGVhdGhzIHBlciAxMDAwIGxpdmUgYmlydGhzDQpyZWdpb24gfCBFYXN0IEFzaWEgJiBQYWNpZmljLCBFdXJvcGUgJiBDZW50cmFsIEFzaWEsIExhdGluIEFtZXJpY2EgJiBDYXJpYmJlYW4sIE1pZGRsZSBFYXN0ICYgTm9ydGggQWZyaWNhLCBOb3J0aCBBbWVyaWNhLCBTb3V0aCBBc2lhLCBTdWItU2FoYXJhbiBBZnJpY2ENCmNhc2VzX3RvdGFsIHwgV0hPIHRvdGFsIGN1bXVsYXRpdmUgQ09WSUQgY2FzZXMNCmNhc2VzX3RvdGFsX3Blcl8xMDAwMDAgfCBXSE8gdG90YWwgY3VtdWxhdGl2ZSBDT1ZJRCBjYXNlcyBwZXIgMTAwLDAwMCBwb3B1bGF0aW9uDQpkZWF0aHNfdG90YWwgfCAgV0hPIHRvdGFsIGN1bXVsYXRpdmUgQ09WSUQgZGVhdGhzDQpkZWF0aF90b3RhbF9wZXJfMTAwMDAwIHwgV0hPIHRvdGFsIGN1bXVsYXRpdmUgQ09WSUQgZGVhdGhzIHBlciAxMDAsMDAwIHBvcHVsYXRpb24NCmV4cG9ydF92YWx1ZSB8IEV4cG9ydHMgZnJvbSBST0sgKFNvdXJjZTogS29yZWFuIEN1c3RvbXMgU2VydmljZSkNCmltcG9ydF92YWx1ZSB8IEltcG9ydHMgdG8gUk9LIChTb3VyY2U6IEtvcmVhbiBDdXN0b21zIFNlcnZpY2UpICAgICAgICANCnRyYWRlX2JhbGFuY2UgfCBCYWxhbmNlIG9mIFBheW1lbnRzDQoNCg0KIyBEZXNjcmlwdGl2ZSBTdGF0aXN0aWNzDQoNCmBgYHtyfQ0KDQpza2ltKGtvcl9jb3YpICU+JSANCiAgZHBseXI6OnNlbGVjdCgtYyhudW1lcmljLnAwOm51bWVyaWMucDEwMCkpICANCg0KYGBgDQoNCg0KIyBDb3JyZWxhdGlvbiBNYXRyaWNlcw0KDQojIENvcnJwbG90IHBhY2thZ2UNCg0KYGBge3J9DQoNCmtvcl9jb3YgJT4lIA0KICAgbXV0YXRlKGxuX2dpZnRfcGMgPSBsb2coZ2lmdF9wYyksDQogICAgICAgICAgbG5fY292aWRfZ2lmdCA9IGxvZyhDT1ZJRF9naWZ0KSwgDQogICAgICAgICAgbG5fdG90YWxfYWlkID0gbG9nKHRvdGFsX3VzZCksDQogICAgICAgICAgbG5fZ2RwX3BjID0gbG9nKEdEUF9wZXJfY2FwX2NvbnN0YW50XzIwMTApLA0KICAgICAgICAgIGxuX3BvcCA9IGxvZyhwb3ApLA0KICAgICAgICAgIGxuX2NvdmlkX2Nhc2VzID0gbG9nKGNhc2VzX3RvdGFsX3Blcl8xMDAwMDApLA0KICAgICAgICAgIGxuX2Rpc3QgPSBsb2coZGlzdF9zZW91bCksDQogICAgICAgICAgbG5fZXhwb3J0ID0gbG9nKGV4cG9ydF92YWx1ZSksIA0KICAgICAgICAgIGxuX2ltcG9ydCA9IGxvZyhpbXBvcnRfdmFsdWUpKSAlPiUgDQogICBzZWxlY3QobG5fY292aWRfZ2lmdCwgbG5fdG90YWxfYWlkLCBsbl9wb3AsIGxuX2dkcF9wYywgbG5fY292aWRfY2FzZXMsIGxuX2V4cG9ydCkgLT4ga29yX2Nvdl9zdWINCg0Ka29yX2Nvdl9ub19uYSA8LSBuYS5vbWl0KGtvcl9jb3Zfc3ViKQ0KDQpjb25mX3Rlc3QyID0gY29yLm10ZXN0KGtvcl9jb3Zfbm9fbmEsIGNvbmYubGV2ZWwgPSAwLjk1KSANCg0KY29ycnBsb3QoY29yKGtvcl9jb3Zfbm9fbmEsIG1ldGhvZCA9ICJzcGVhcm1hbiIpLCANCiAgICAgICAgIHAubWF0ID0gY29uZl90ZXN0MiRwLA0KICAgICAgICAgbWV0aG9kID0gJ2NpcmNsZScsDQogICAgICAgICB0eXBlID0gJ2xvd2VyJywgDQogICAgICAgICBpbnNpZyA9J2JsYW5rJywNCiAgICAgICAgIGFkZENvZWYuY29sID0nYmxhY2snLA0KICAgICAgICAgbnVtYmVyLmNleCA9IDAuOCwgDQogICAgICAgICBvcmRlciA9ICdBT0UnLCANCiAgICAgICAgIGRpYWcgPSBGQUxTRSwgDQogICAgICAgICB0bC5zcnQgPSA0NSkNCg0KYGBgDQoNCmBgYHtyfQ0KDQprb3JfY292ICU+JSANCiAgIG11dGF0ZShsbl9naWZ0X3BjID0gbG9nKGdpZnRfcGMpLA0KICAgICAgICAgIGxuX2NvdmlkX2dpZnQgPSBsb2coQ09WSURfZ2lmdCksIA0KICAgICAgICAgIGxuX3RvdGFsX2FpZCA9IGxvZyh0b3RhbF91c2QpLA0KICAgICAgICAgIGxuX2dkcF9wYyA9IGxvZyhHRFBfcGVyX2NhcF9jb25zdGFudF8yMDEwKSwNCiAgICAgICAgICBsbl9wb3AgPSBsb2cocG9wKSwNCiAgICAgICAgICBsbl9jb3ZpZF9jYXNlcyA9IGxvZyhjYXNlc190b3RhbF9wZXJfMTAwMDAwKSwNCiAgICAgICAgICBsbl9kaXN0ID0gbG9nKGRpc3Rfc2VvdWwpLA0KICAgICAgICAgIGxuX2V4cG9ydCA9IGxvZyhleHBvcnRfdmFsdWUpLCANCiAgICAgICAgICBsbl9pbXBvcnQgPSBsb2coaW1wb3J0X3ZhbHVlKSkgJT4lIA0KICAgc2VsZWN0KGxuX2NvdmlkX2dpZnQsIGxuX3RvdGFsX2FpZCwgbG5fcG9wLCBsbl9nZHBfcGMsIGxuX2NvdmlkX2Nhc2VzLCBsbl9leHBvcnQsIGluY29tZV9ncm91cF9uYW1lKSAtPiBrb3JfY292X3N1YjINCg0KYGBgDQoNCiMgR0dhbGx5IHBhY2thZ2UNCg0KYGBge3IgfQ0KDQprb3JfY292Ml9ub19uYSA8LSBuYS5vbWl0KGtvcl9jb3Zfc3ViMikNCg0KbGlicmFyeShHR2FsbHkpDQoNCmtvcl9jb3YyX25vX25hICU+JQ0KICBmaWx0ZXIoaW5jb21lX2dyb3VwX25hbWUgIT0gIkhpZ2ggSW5jb21lIENvdW50cnkiKSAlPiUNCiAgZmlsdGVyKCFpcy5uYShpbmNvbWVfZ3JvdXBfbmFtZSkpICU+JQ0KICBtdXRhdGUoaW5jb21lID0gaWZlbHNlKGluY29tZV9ncm91cF9uYW1lID09ICJMb3cgSW5jb21lIENvdW50cnkiLCAiTG93IiwNCiAgICAgICAgICAgICAgICAgIGlmZWxzZShpbmNvbWVfZ3JvdXBfbmFtZSA9PSAiTG93ZXIgTWlkZGxlIEluY29tZSBDb3VudHJ5IiwgIk1pZGRsZSIsDQogICAgICAgICAgICAgICAgICBpZmVsc2UoaW5jb21lX2dyb3VwX25hbWUgPT0gIlVwcGVyIE1pZGRsZSBJbmNvbWUgQ291bnRyeSIsICJVcHBlciIsIGluY29tZV9ncm91cF9uYW1lKSkpKSAlPiUNCiAgc2VsZWN0KCFpbmNvbWVfZ3JvdXBfbmFtZSkgJT4lDQogIGdncGFpcnMobWFwcGluZyA9IGdncGxvdDI6OmFlcyhjb2xvdXIgPSBpbmNvbWUpLA0KICAgICAgICAgIGFscGhhID0gMC41LCANCiAgICAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKCJjb3IiLCBzaXplID0gMi41KSkpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA3MCwgaGp1c3QgPSAxKSwNCiAgICAgICAgc3RyaXAudGV4dC54ID0gIGVsZW1lbnRfdGV4dChhbmdsZSA9IDMwKSwNCiAgICAgICAgc3RyaXAudGV4dC55ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMjApKQ0KDQoNCmBgYA0KDQojIFBlcmZvcm1hbmNlIEFuYWx5dGljcyBwYWNrYWdlDQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KFBlcmZvcm1hbmNlQW5hbHl0aWNzKQ0KDQpjaGFydC5Db3JyZWxhdGlvbihrb3JfY292X25vX25hLCANCiAgICAgICAgICAgICAgICAgIGhpc3RvZ3JhbSA9IFRSVUUsDQogICAgICAgICAgICAgICAgICBtZXRob2QgPSAic3BlYXJtYW4iLA0KICAgICAgICAgICAgICAgICAgY2V4LmNvciA9IDUwLCANCiAgICAgICAgICAgICAgICAgIGNleC5sYWJlbHMgPSA1MCwNCiAgICAgICAgICAgICAgICAgIGNleCA9IDEuNSwgDQogICAgICAgICAgICAgICAgICBjZXguZm9udCA9IDUpDQpgYGANCg0KDQo=