Code proving that most smart people do not get into elite
universities. IQ/ACT/SAT scores are assumed to correlate at .8. Elite
students are assumed to be selected on the basis of test scores + a
bunch of factors that don’t correlate with IQ
IPEDS_data$ACT25 <- IPEDS_data$`ACT Composite 25th percentile score`
IPEDS_data$ACT75 <- IPEDS_data$`ACT Composite 75th percentile score`
IPEDS_data$SATR25 <- IPEDS_data$`SAT Critical Reading 25th percentile score`
IPEDS_data$SATR75 <- IPEDS_data$`SAT Critical Reading 75th percentile score`
IPEDS_data$SATM25 <- IPEDS_data$`SAT Math 25th percentile score`
IPEDS_data$SATM75 <- IPEDS_data$`SAT Math 75th percentile score`
IPEDS_data$SATW25 <- IPEDS_data$`SAT Writing 25th percentile score`
IPEDS_data$SATW75 <- IPEDS_data$`SAT Writing 75th percentile score`
IPEDS_data$Graduation_Rate_4 <- IPEDS_data$`Graduation rate - Bachelor degree within 4 years, total`
IPEDS_data$Religious_affiliation <- IPEDS_data$`Religious affiliation`
IPEDS_data$Women <- IPEDS_data$`Percent of undergraduate enrollment that are women`
IPEDS_data$ACTscore <- getpc(IPEDS_data %>% select(ACT25, ACT75), dofa=F, fillmissing=F, normalizeit=T)
IPEDS_data$SATscore <- getpc(IPEDS_data %>% select(SATR25, SATR75, SATM25, SATM75, SATW25, SATW75), dofa=F, fillmissing=F, normalizeit=T)
IPEDS_data$Academic_Score <- getpc(IPEDS_data %>% select(ACTscore, SATscore), dofa=F, fillmissing=F, normalizeit=T)
IPEDS_data$app_rate <- IPEDS_data$`Admissions total`/IPEDS_data$`Applicants total`
IPEDS_data$score <- getpc(IPEDS_data %>% select(Academic_Score, Graduation_Rate_4, app_rate))
IPEDS_data$rank <- ranker(IPEDS_data$score)
unis <- IPEDS_data %>% select(rank, Name)
GG_scatter(IPEDS_data, 'Academic_Score', 'app_rate', case_names='Name')

eliteunis <- IPEDS_data %>% filter(rank < 26)
eliteunis$actmean <- (eliteunis$ACT25 + eliteunis$ACT75)/2
eliteunis$actsd <- ((-eliteunis$ACT25 + eliteunis$actmean)/qnorm(.75) + (eliteunis$ACT75 - eliteunis$actmean)/qnorm(.75))/2
eliteunis$submitted_act <- eliteunis$`Percent of freshmen submitting ACT scores`
eliteunis$submitted_sat <- eliteunis$`Percent of freshmen submitting SAT scores`
eliteunis$freshmen <- eliteunis$`Estimated freshman enrollment, full time`
eliteunis$undergrad <- eliteunis$`Undergraduate enrollment`
eliteunis$gradplus <- eliteunis$`Graduate enrollment`
eliteunis$foreign_freshmen <- eliteunis$`Number of first-time undergraduates - foreign countries`
eliteunis$american_freshmen <- eliteunis$freshmen - eliteunis$foreign_freshmen
eliteunis$foreign_ratio <- eliteunis$foreign_freshmen/eliteunis$freshmen
eliteunis$american_freshmen[is.na(eliteunis$american_freshmen)] <- eliteunis$freshmen[is.na(eliteunis$american_freshmen)]*(1-mean(eliteunis$foreign_ratio, na.rm=T))
all_elites <- c()
for(i in 1:nrow(eliteunis)) {
numofgrads <- eliteunis$american_freshmen[i]*eliteunis$`Graduation rate - Bachelor degree within 6 years, total`[i]/100
innervec <- rnorm(n=numofgrads, mean=eliteunis$actmean[i], sd=eliteunis$actsd[i])
all_elites <- append(all_elites, innervec)
}
GG_denhist(all_elites)

describe2(all_elites)
elite_students <- data.frame(ACT = all_elites)
elite_students$ACT[elite_students$ACT>35.4999] <- 36
perfect <- elite_students %>% filter(ACT==36)
GG_denhist(elite_students$ACT)

###########################
all_americans <- rnorm(2231100, mean=19.8, sd=5.7)
american_students <- data.frame(ACT = all_americans)
american_students$IQ <- normalise(american_students$ACT*0.84^2 + rnorm(2231100, mean=19.8, sd=5.7)*sqrt(1-0.84^2))*15+100
GG_scatter(american_students[1:10000,], 'ACT','IQ')

american_students$ACT[american_students$ACT>35.4999] <- 36
american_students$selection_factor <- american_students$ACT + rnorm(2231100, mean=19.8, sd=5.7)*0.54
describe2(american_students$selection_factor)
simulated_elites <- american_students %>% filter(selection_factor > 45.13)
simulated_proles <- american_students %>% filter(selection_factor < 45.13)
american_students$elite <- 0
american_students$elite[american_students$selection_factor>45.13] <- 1
describe2(simulated_elites$ACT)
describe2(elite_students$ACT)
describe2(simulated_elites$IQ)
describe2(simulated_proles$IQ)
GG_denhist(simulated_elites$IQ)

GG_denhist(simulated_proles$IQ)

GG_denhist(american_students, var='IQ', group='elite')

###############
plus125_elites <- simulated_elites %>% filter(IQ > 125)
plus125_proles <- simulated_proles %>% filter(IQ > 125)
nrow(plus125_elites)/(nrow(plus125_elites)+nrow(plus125_proles))
[1] 0.1405712
##################
plus125_elites2 <- simulated_elites %>% filter(IQ > 145)
plus125_proles2 <- simulated_proles %>% filter(IQ > 145)
american_students$elite <- as.factor(american_students$elite)
p <- ggplot(american_students, aes(x = IQ, fill = elite)) +
geom_histogram(
position = "identity", # Overlays the groups
alpha = 0.5, # Semi-transparent for overlap visibility
bins = 1000 # Adjust bins as needed
) +
scale_fill_brewer(palette = "Set1", name = "Attended elite university") +
labs(
title = "Distribution of IQ Scores by elite university attendance",
subtitle = "source: simulated data",
x = "IQ Score",
y = "Count"
) +
coord_cartesian(xlim = c(115, 160)) + # Zoom in on x-axis from 115 to 160
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 11),
axis.text.y = element_text(size = 11),
axis.title.x = element_text(size = 15),
axis.title.y = element_text(size = 15),
plot.background = element_rect(fill = "gray30"),
panel.background = element_rect(fill = "gray30"),
panel.grid.major = element_line(color = "gray30"),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_line(color = "gray60"),
plot.title = element_text(size = 12, face = "bold", color = "gray80"),
strip.text = element_text(size = 12, face = "bold", color = "gray80"),
axis.text = element_text(color = "gray80"),
axis.title = element_text(color = "gray80"),
legend.background = element_rect(fill = "gray20"),
legend.text = element_text(color = "gray80"),
legend.title = element_text(color = "gray80"),
plot.margin = margin(t = 5, r = 5, b = 5, l = 5, "pt")
)
p

unis <- eliteunis %>% select(rank, Name,actmean,actsd, undergrad, gradplus, freshmen, american_freshmen, foreign_freshmen)
mean(eliteunis$submitted_act)/100*nrow(perfect)
[1] 1257.152
top75 <- IPEDS_data %>% select(rank, Name,ACT25, ACT75, score) %>% filter(rank<76)
sum(top75$`Estimated freshman enrollment, full time`)
Warning: Unknown or uninitialised column: `Estimated freshman enrollment, full time`.
[1] 0
sum(IPEDS_data$`Estimated freshman enrollment, full time`, na.rm=T)
[1] 1461252
102743/1461252
[1] 0.07031162
lower <- IPEDS_data %>% select(rank, Name,ACT25, ACT75, score, Graduation_Rate_4, app_rate, Academic_Score) %>% filter(ACT25 > 28)
sum(eliteunis$american_freshmen)
[1] 27349.83
pnorm(25/15)
[1] 0.9522096
LS0tDQp0aXRsZTogIk1vc3Qgc21hcnQgc3R1ZGVudHMgZG9uJ3QgYXR0ZW5kIGVsaXRlIHVuaXZlcnNpdGllcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCkNvZGUgcHJvdmluZyB0aGF0IG1vc3Qgc21hcnQgcGVvcGxlIGRvIG5vdCBnZXQgaW50byBlbGl0ZSB1bml2ZXJzaXRpZXMuDQpJUS9BQ1QvU0FUIHNjb3JlcyBhcmUgYXNzdW1lZCB0byBjb3JyZWxhdGUgYXQgLjguDQpFbGl0ZSBzdHVkZW50cyBhcmUgYXNzdW1lZCB0byBiZSBzZWxlY3RlZCBvbiB0aGUgYmFzaXMgb2YgdGVzdCBzY29yZXMgKyBhIGJ1bmNoIG9mIGZhY3RvcnMgdGhhdCBkb24ndCBjb3JyZWxhdGUgd2l0aCBJUQ0KDQoNCmBgYHtyfQ0KSVBFRFNfZGF0YSRBQ1QyNSA8LSBJUEVEU19kYXRhJGBBQ1QgQ29tcG9zaXRlIDI1dGggcGVyY2VudGlsZSBzY29yZWANCklQRURTX2RhdGEkQUNUNzUgPC0gSVBFRFNfZGF0YSRgQUNUIENvbXBvc2l0ZSA3NXRoIHBlcmNlbnRpbGUgc2NvcmVgDQpJUEVEU19kYXRhJFNBVFIyNSA8LSBJUEVEU19kYXRhJGBTQVQgQ3JpdGljYWwgUmVhZGluZyAyNXRoIHBlcmNlbnRpbGUgc2NvcmVgDQpJUEVEU19kYXRhJFNBVFI3NSA8LSBJUEVEU19kYXRhJGBTQVQgQ3JpdGljYWwgUmVhZGluZyA3NXRoIHBlcmNlbnRpbGUgc2NvcmVgDQpJUEVEU19kYXRhJFNBVE0yNSA8LSBJUEVEU19kYXRhJGBTQVQgTWF0aCAyNXRoIHBlcmNlbnRpbGUgc2NvcmVgDQpJUEVEU19kYXRhJFNBVE03NSA8LSBJUEVEU19kYXRhJGBTQVQgTWF0aCA3NXRoIHBlcmNlbnRpbGUgc2NvcmVgDQpJUEVEU19kYXRhJFNBVFcyNSA8LSBJUEVEU19kYXRhJGBTQVQgV3JpdGluZyAyNXRoIHBlcmNlbnRpbGUgc2NvcmVgDQpJUEVEU19kYXRhJFNBVFc3NSA8LSBJUEVEU19kYXRhJGBTQVQgV3JpdGluZyA3NXRoIHBlcmNlbnRpbGUgc2NvcmVgDQpJUEVEU19kYXRhJEdyYWR1YXRpb25fUmF0ZV80IDwtIElQRURTX2RhdGEkYEdyYWR1YXRpb24gcmF0ZSAtIEJhY2hlbG9yIGRlZ3JlZSB3aXRoaW4gNCB5ZWFycywgdG90YWxgDQpJUEVEU19kYXRhJFJlbGlnaW91c19hZmZpbGlhdGlvbiA8LSBJUEVEU19kYXRhJGBSZWxpZ2lvdXMgYWZmaWxpYXRpb25gDQpJUEVEU19kYXRhJFdvbWVuIDwtIElQRURTX2RhdGEkYFBlcmNlbnQgb2YgdW5kZXJncmFkdWF0ZSBlbnJvbGxtZW50IHRoYXQgYXJlIHdvbWVuYA0KDQpJUEVEU19kYXRhJEFDVHNjb3JlIDwtIGdldHBjKElQRURTX2RhdGEgJT4lIHNlbGVjdChBQ1QyNSwgQUNUNzUpLCBkb2ZhPUYsIGZpbGxtaXNzaW5nPUYsIG5vcm1hbGl6ZWl0PVQpDQpJUEVEU19kYXRhJFNBVHNjb3JlIDwtIGdldHBjKElQRURTX2RhdGEgJT4lIHNlbGVjdChTQVRSMjUsIFNBVFI3NSwgU0FUTTI1LCBTQVRNNzUsIFNBVFcyNSwgU0FUVzc1KSwgZG9mYT1GLCBmaWxsbWlzc2luZz1GLCBub3JtYWxpemVpdD1UKQ0KSVBFRFNfZGF0YSRBY2FkZW1pY19TY29yZSA8LSBnZXRwYyhJUEVEU19kYXRhICU+JSBzZWxlY3QoQUNUc2NvcmUsIFNBVHNjb3JlKSwgZG9mYT1GLCBmaWxsbWlzc2luZz1GLCBub3JtYWxpemVpdD1UKQ0KSVBFRFNfZGF0YSRhcHBfcmF0ZSA8LSBJUEVEU19kYXRhJGBBZG1pc3Npb25zIHRvdGFsYC9JUEVEU19kYXRhJGBBcHBsaWNhbnRzIHRvdGFsYA0KDQoNCklQRURTX2RhdGEkc2NvcmUgPC0gZ2V0cGMoSVBFRFNfZGF0YSAlPiUgc2VsZWN0KEFjYWRlbWljX1Njb3JlLCBHcmFkdWF0aW9uX1JhdGVfNCwgYXBwX3JhdGUpKQ0KSVBFRFNfZGF0YSRyYW5rIDwtIHJhbmtlcihJUEVEU19kYXRhJHNjb3JlKQ0KdW5pcyA8LSBJUEVEU19kYXRhICU+JSBzZWxlY3QocmFuaywgTmFtZSkNCg0KR0dfc2NhdHRlcihJUEVEU19kYXRhLCAnQWNhZGVtaWNfU2NvcmUnLCAnYXBwX3JhdGUnLCBjYXNlX25hbWVzPSdOYW1lJykNCg0KDQplbGl0ZXVuaXMgPC0gSVBFRFNfZGF0YSAlPiUgZmlsdGVyKHJhbmsgPCAyNikNCg0KZWxpdGV1bmlzJGFjdG1lYW4gPC0gKGVsaXRldW5pcyRBQ1QyNSArIGVsaXRldW5pcyRBQ1Q3NSkvMg0KZWxpdGV1bmlzJGFjdHNkIDwtICgoLWVsaXRldW5pcyRBQ1QyNSArIGVsaXRldW5pcyRhY3RtZWFuKS9xbm9ybSguNzUpICsgKGVsaXRldW5pcyRBQ1Q3NSAtIGVsaXRldW5pcyRhY3RtZWFuKS9xbm9ybSguNzUpKS8yDQplbGl0ZXVuaXMkc3VibWl0dGVkX2FjdCA8LSBlbGl0ZXVuaXMkYFBlcmNlbnQgb2YgZnJlc2htZW4gc3VibWl0dGluZyBBQ1Qgc2NvcmVzYA0KZWxpdGV1bmlzJHN1Ym1pdHRlZF9zYXQgPC0gZWxpdGV1bmlzJGBQZXJjZW50IG9mIGZyZXNobWVuIHN1Ym1pdHRpbmcgU0FUIHNjb3Jlc2ANCmVsaXRldW5pcyRmcmVzaG1lbiA8LSBlbGl0ZXVuaXMkYEVzdGltYXRlZCBmcmVzaG1hbiBlbnJvbGxtZW50LCBmdWxsIHRpbWVgDQplbGl0ZXVuaXMkdW5kZXJncmFkIDwtIGVsaXRldW5pcyRgVW5kZXJncmFkdWF0ZSBlbnJvbGxtZW50YA0KZWxpdGV1bmlzJGdyYWRwbHVzIDwtIGVsaXRldW5pcyRgR3JhZHVhdGUgZW5yb2xsbWVudGANCmVsaXRldW5pcyRmb3JlaWduX2ZyZXNobWVuIDwtIGVsaXRldW5pcyRgTnVtYmVyIG9mIGZpcnN0LXRpbWUgdW5kZXJncmFkdWF0ZXMgLSBmb3JlaWduIGNvdW50cmllc2ANCmVsaXRldW5pcyRhbWVyaWNhbl9mcmVzaG1lbiA8LSBlbGl0ZXVuaXMkZnJlc2htZW4gLSBlbGl0ZXVuaXMkZm9yZWlnbl9mcmVzaG1lbg0KDQplbGl0ZXVuaXMkZm9yZWlnbl9yYXRpbyA8LSBlbGl0ZXVuaXMkZm9yZWlnbl9mcmVzaG1lbi9lbGl0ZXVuaXMkZnJlc2htZW4NCmVsaXRldW5pcyRhbWVyaWNhbl9mcmVzaG1lbltpcy5uYShlbGl0ZXVuaXMkYW1lcmljYW5fZnJlc2htZW4pXSA8LSBlbGl0ZXVuaXMkZnJlc2htZW5baXMubmEoZWxpdGV1bmlzJGFtZXJpY2FuX2ZyZXNobWVuKV0qKDEtbWVhbihlbGl0ZXVuaXMkZm9yZWlnbl9yYXRpbywgbmEucm09VCkpDQoNCmFsbF9lbGl0ZXMgPC0gYygpDQoNCmZvcihpIGluIDE6bnJvdyhlbGl0ZXVuaXMpKSB7DQogIG51bW9mZ3JhZHMgPC0gZWxpdGV1bmlzJGFtZXJpY2FuX2ZyZXNobWVuW2ldKmVsaXRldW5pcyRgR3JhZHVhdGlvbiByYXRlIC0gQmFjaGVsb3IgZGVncmVlIHdpdGhpbiA2IHllYXJzLCB0b3RhbGBbaV0vMTAwDQogIA0KICANCiAgaW5uZXJ2ZWMgPC0gcm5vcm0obj1udW1vZmdyYWRzLCBtZWFuPWVsaXRldW5pcyRhY3RtZWFuW2ldLCBzZD1lbGl0ZXVuaXMkYWN0c2RbaV0pDQogIA0KICBhbGxfZWxpdGVzIDwtIGFwcGVuZChhbGxfZWxpdGVzLCBpbm5lcnZlYykNCn0NCg0KR0dfZGVuaGlzdChhbGxfZWxpdGVzKQ0KZGVzY3JpYmUyKGFsbF9lbGl0ZXMpDQplbGl0ZV9zdHVkZW50cyA8LSBkYXRhLmZyYW1lKEFDVCA9IGFsbF9lbGl0ZXMpDQoNCmVsaXRlX3N0dWRlbnRzJEFDVFtlbGl0ZV9zdHVkZW50cyRBQ1Q+MzUuNDk5OV0gPC0gMzYNCg0KcGVyZmVjdCA8LSBlbGl0ZV9zdHVkZW50cyAlPiUgZmlsdGVyKEFDVD09MzYpDQoNCkdHX2Rlbmhpc3QoZWxpdGVfc3R1ZGVudHMkQUNUKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQphbGxfYW1lcmljYW5zIDwtIHJub3JtKDIyMzExMDAsIG1lYW49MTkuOCwgc2Q9NS43KQ0KDQoNCmFtZXJpY2FuX3N0dWRlbnRzIDwtIGRhdGEuZnJhbWUoQUNUID0gYWxsX2FtZXJpY2FucykNCmFtZXJpY2FuX3N0dWRlbnRzJElRIDwtIG5vcm1hbGlzZShhbWVyaWNhbl9zdHVkZW50cyRBQ1QqMC44NF4yICsgcm5vcm0oMjIzMTEwMCwgbWVhbj0xOS44LCBzZD01LjcpKnNxcnQoMS0wLjg0XjIpKSoxNSsxMDANCg0KR0dfc2NhdHRlcihhbWVyaWNhbl9zdHVkZW50c1sxOjEwMDAwLF0sICdBQ1QnLCdJUScpDQoNCmFtZXJpY2FuX3N0dWRlbnRzJEFDVFthbWVyaWNhbl9zdHVkZW50cyRBQ1Q+MzUuNDk5OV0gPC0gMzYNCg0KDQphbWVyaWNhbl9zdHVkZW50cyRzZWxlY3Rpb25fZmFjdG9yIDwtIGFtZXJpY2FuX3N0dWRlbnRzJEFDVCArIHJub3JtKDIyMzExMDAsIG1lYW49MTkuOCwgc2Q9NS43KSowLjU0DQpkZXNjcmliZTIoYW1lcmljYW5fc3R1ZGVudHMkc2VsZWN0aW9uX2ZhY3RvcikNCg0Kc2ltdWxhdGVkX2VsaXRlcyA8LSBhbWVyaWNhbl9zdHVkZW50cyAlPiUgZmlsdGVyKHNlbGVjdGlvbl9mYWN0b3IgPiA0NS4xMykNCnNpbXVsYXRlZF9wcm9sZXMgPC0gYW1lcmljYW5fc3R1ZGVudHMgJT4lIGZpbHRlcihzZWxlY3Rpb25fZmFjdG9yIDwgNDUuMTMpDQoNCmFtZXJpY2FuX3N0dWRlbnRzJGVsaXRlIDwtIDANCmFtZXJpY2FuX3N0dWRlbnRzJGVsaXRlW2FtZXJpY2FuX3N0dWRlbnRzJHNlbGVjdGlvbl9mYWN0b3I+NDUuMTNdIDwtIDENCg0KZGVzY3JpYmUyKHNpbXVsYXRlZF9lbGl0ZXMkQUNUKQ0KZGVzY3JpYmUyKGVsaXRlX3N0dWRlbnRzJEFDVCkNCg0KZGVzY3JpYmUyKHNpbXVsYXRlZF9lbGl0ZXMkSVEpDQpkZXNjcmliZTIoc2ltdWxhdGVkX3Byb2xlcyRJUSkNCg0KR0dfZGVuaGlzdChzaW11bGF0ZWRfZWxpdGVzJElRKQ0KR0dfZGVuaGlzdChzaW11bGF0ZWRfcHJvbGVzJElRKQ0KDQpHR19kZW5oaXN0KGFtZXJpY2FuX3N0dWRlbnRzLCB2YXI9J0lRJywgZ3JvdXA9J2VsaXRlJykNCg0KIyMjIyMjIyMjIyMjIyMjDQpwbHVzMTI1X2VsaXRlcyA8LSBzaW11bGF0ZWRfZWxpdGVzICU+JSBmaWx0ZXIoSVEgPiAxMjUpDQpwbHVzMTI1X3Byb2xlcyA8LSBzaW11bGF0ZWRfcHJvbGVzICU+JSBmaWx0ZXIoSVEgPiAxMjUpDQoNCm5yb3cocGx1czEyNV9lbGl0ZXMpLyhucm93KHBsdXMxMjVfZWxpdGVzKStucm93KHBsdXMxMjVfcHJvbGVzKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjDQpwbHVzMTI1X2VsaXRlczIgPC0gc2ltdWxhdGVkX2VsaXRlcyAlPiUgZmlsdGVyKElRID4gMTQ1KQ0KcGx1czEyNV9wcm9sZXMyIDwtIHNpbXVsYXRlZF9wcm9sZXMgJT4lIGZpbHRlcihJUSA+IDE0NSkNCg0KYW1lcmljYW5fc3R1ZGVudHMkZWxpdGUgPC0gYXMuZmFjdG9yKGFtZXJpY2FuX3N0dWRlbnRzJGVsaXRlKQ0KDQpwIDwtIGdncGxvdChhbWVyaWNhbl9zdHVkZW50cywgYWVzKHggPSBJUSwgZmlsbCA9IGVsaXRlKSkgKw0KICBnZW9tX2hpc3RvZ3JhbSgNCiAgICBwb3NpdGlvbiA9ICJpZGVudGl0eSIsICAgIyBPdmVybGF5cyB0aGUgZ3JvdXBzDQogICAgYWxwaGEgICAgPSAwLjUsICAgICAgICAgICMgU2VtaS10cmFuc3BhcmVudCBmb3Igb3ZlcmxhcCB2aXNpYmlsaXR5DQogICAgYmlucyAgICAgPSAxMDAwICAgICAgICAgICAgIyBBZGp1c3QgYmlucyBhcyBuZWVkZWQNCiAgKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIG5hbWUgPSAiQXR0ZW5kZWQgZWxpdGUgdW5pdmVyc2l0eSIpICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJEaXN0cmlidXRpb24gb2YgSVEgU2NvcmVzIGJ5IGVsaXRlIHVuaXZlcnNpdHkgYXR0ZW5kYW5jZSIsDQogICAgc3VidGl0bGUgPSAic291cmNlOiBzaW11bGF0ZWQgZGF0YSIsDQogICAgeCA9ICJJUSBTY29yZSIsDQogICAgeSA9ICJDb3VudCINCiAgKSArDQogIGNvb3JkX2NhcnRlc2lhbih4bGltID0gYygxMTUsIDE2MCkpICsgICMgWm9vbSBpbiBvbiB4LWF4aXMgZnJvbSAxMTUgdG8gMTYwDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgc2l6ZSA9IDExKSwNCiAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTEpLA0KICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gImdyYXkzMCIpLA0KICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJncmF5MzAiKSwNCiAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9saW5lKGNvbG9yID0gImdyYXkzMCIpLA0KICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGFuZWwuZ3JpZC5tYWpvci54ID0gZWxlbWVudF9saW5lKGNvbG9yID0gImdyYXk2MCIpLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBmYWNlID0gImJvbGQiLCBjb2xvciA9ICJncmF5ODAiKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiwgY29sb3IgPSAiZ3JheTgwIiksDQogICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImdyYXk4MCIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JheTgwIiksDQogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJncmF5MjAiKSwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJncmF5ODAiKSwNCiAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JheTgwIiksDQogICAgcGxvdC5tYXJnaW4gPSBtYXJnaW4odCA9IDUsIHIgPSA1LCBiID0gNSwgbCA9IDUsICJwdCIpDQogICkNCnANCg0KDQp1bmlzIDwtIGVsaXRldW5pcyAlPiUgc2VsZWN0KHJhbmssIE5hbWUsYWN0bWVhbixhY3RzZCwgdW5kZXJncmFkLCBncmFkcGx1cywgZnJlc2htZW4sIGFtZXJpY2FuX2ZyZXNobWVuLCBmb3JlaWduX2ZyZXNobWVuKQ0KbWVhbihlbGl0ZXVuaXMkc3VibWl0dGVkX2FjdCkvMTAwKm5yb3cocGVyZmVjdCkNCg0KdG9wNzUgPC0gSVBFRFNfZGF0YSAlPiUgc2VsZWN0KHJhbmssIE5hbWUsQUNUMjUsIEFDVDc1LCBzY29yZSkgJT4lIGZpbHRlcihyYW5rPDc2KQ0Kc3VtKHRvcDc1JGBFc3RpbWF0ZWQgZnJlc2htYW4gZW5yb2xsbWVudCwgZnVsbCB0aW1lYCkNCnN1bShJUEVEU19kYXRhJGBFc3RpbWF0ZWQgZnJlc2htYW4gZW5yb2xsbWVudCwgZnVsbCB0aW1lYCwgbmEucm09VCkNCjEwMjc0My8xNDYxMjUyDQpsb3dlciA8LSAgSVBFRFNfZGF0YSAlPiUgc2VsZWN0KHJhbmssIE5hbWUsQUNUMjUsIEFDVDc1LCBzY29yZSwgR3JhZHVhdGlvbl9SYXRlXzQsIGFwcF9yYXRlLCBBY2FkZW1pY19TY29yZSkgJT4lIGZpbHRlcihBQ1QyNSA+IDI4KQ0KDQpzdW0oZWxpdGV1bmlzJGFtZXJpY2FuX2ZyZXNobWVuKQ0KDQoNCnBub3JtKDI1LzE1KQ0KDQpgYGANCg==