A friend of mine was having struggles finishing a paper that was about the relationship between being goth and various traits, particularly mental illness, unconventional sexual behaviour, and homosexuality. She requested a correlation matrix, a factor analysis of composite variables, a set of linear regression tables, a chart of the rates at which people answered each option on the gothic-identification question on OKCupid.

Source of data is the OKCupid dataset.

Data cleaning and converting variables to numeric:

setwd('~')
Warning: The working directory was changed to C:/Users/micha/OneDrive/Documents inside a notebook chunk. The working directory will be reset when the chunk is finished running. Use the knitr root.dir option in the setup chunk to change the working directory for notebook chunks.
setwd('rfolder/goths')

okcdataset <- read_parquet(file="parsed_data_public.parquet")
savedszxet <- okcdataset
okcdataset <- savedszxet

okcdataset$brit <- NA
okcdataset$brit[!is.na(okcdataset$d_country)] <- 0
okcdataset$brit[nchar(as.character(okcdataset$d_country)) == 2] <- 1
okcdataset$brit[okcdataset$d_country=='Ireland'] <- 1
okcdataset$brit[okcdataset$d_country=='Australia'] <- 1
okcdataset$brit[okcdataset$d_country=='New Zealand'] <- 1
okcdataset$brit[okcdataset$d_country=='UK'] <- 1

okcdataset$sexuality <- okcdataset$d_orientation
okcdataset$sexuality[okcdataset$sexuality=="Pansexual"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Straight, Gay"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Heteroflexible"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Homoflexible"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Lesbian"] <- "Gay"
okcdataset$sexuality[okcdataset$sexuality=="Bisexual, Pansexual"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Straight, Bisexual"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Straight, Bisexual, Heteroflexible"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Straight, Pansexual"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Heteroflexible, Bisexual"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Pansexual, Bisexual"] <- "Bisexual"
okcdataset$sexuality[okcdataset$sexuality=="Homoflexible, Heteroflexible, Pansexual, Bisexual"] <- "Bisexual"
okcdataset$sexuality[!(okcdataset$sexuality=="Bisexual" | okcdataset$sexuality=="Straight" | okcdataset$sexuality=="Gay" | is.na(okcdataset$sexuality))] <- "Other"

okcdataset$race <- okcdataset$d_ethnicity
okcdataset$race[!(okcdataset$d_ethnicity=='Asian' | okcdataset$d_ethnicity=='Black' | okcdataset$d_ethnicity=='Indian' | okcdataset$d_ethnicity=='White' | okcdataset$d_ethnicity=='Hispanic / Latin' | okcdataset$d_ethnicity=='White' | okcdataset$d_ethnicity=='Middle Eastern' | okcdataset$d_ethnicity=='Pacific Islander' | okcdataset$d_ethnicity=='Other' | is.na(okcdataset$d_ethnicity))] <- 'Selected over 1 race'

okcdataset$sex <- NA
okcdataset$sex[okcdataset$gender=='Man'] <- 'Male'
okcdataset$sex[okcdataset$gender=='Woman'] <- 'Female'

okcdataset$sex <- relevel(factor(okcdataset$sex), ref = "Female")
okcdataset$sexuality <- relevel(factor(okcdataset$sexuality), ref = "Straight")
okcdataset$race <- relevel(factor(okcdataset$race), ref = "White")
okcdataset$d_job[is.na(okcdataset$d_job)] <- 'Missing'
okcdataset$d_job <- relevel(factor(okcdataset$d_job), ref = "Missing")
okcdataset$d_country <- relevel(factor(okcdataset$d_country), ref = "UK")

print(okcdataset %>% group_by(d_job) %>% summarise(n = n()), n=100)

okcdataset$anime <- NA
okcdataset$anime[okcdataset$q185=='Yes'] <- 1
okcdataset$anime[okcdataset$q185=='No'] <- 0

okcdataset$dancetopless <- NA
okcdataset$dancetopless[okcdataset$q1379=='No'] <- 0
okcdataset$dancetopless[okcdataset$q1379=='Yes'] <- 1

okcdataset$numincome <- NA
okcdataset$numincome[okcdataset$d_income=='Less than $20,000'] <- 10000
okcdataset$numincome[okcdataset$d_income=='$20,000-$30,000'] <- 25000
okcdataset$numincome[okcdataset$d_income=='$50,000-$60,000'] <- 55000
okcdataset$numincome[okcdataset$d_income=='$30,000-$40,000'] <- 35000
okcdataset$numincome[okcdataset$d_income=='$40,000-$50,000'] <- 45000
okcdataset$numincome[okcdataset$d_income=='$80,000-$100,000'] <- 90000
okcdataset$numincome[okcdataset$d_income=='$60,000-$70,000'] <- 65000
okcdataset$numincome[okcdataset$d_income=='More than $1,000,000'] <- NA
okcdataset$numincome[okcdataset$d_income=='$100,000-$150,000'] <- 125000
okcdataset$numincome[okcdataset$d_income=='$70,000-$80,000'] <- 75000
okcdataset$numincome[okcdataset$d_income=='$250,000-$500,000'] <- 375000
okcdataset$numincome[okcdataset$d_income=='$150,000-$250,000'] <- 200000
okcdataset$numincome[okcdataset$d_income=='$500,000-$1,000,000'] <- 750000

###############################

okcdataset$seen_therapist <- NA
okcdataset$seen_therapist[okcdataset$q50=='Yes'] <- 1
okcdataset$seen_therapist[okcdataset$q50=='No'] <- 0

okcdataset$much_depression <- NA
okcdataset$much_depression[okcdataset$q1552=="Almost never, I'm happy!"] <- 0
okcdataset$much_depression[okcdataset$q1552=="Sometimes, when it's a bad day"] <- 1
okcdataset$much_depression[okcdataset$q1552=="Yeah, despair is my life"] <- 2

okcdataset$emotional_diversity <- NA
okcdataset$emotional_diversity[okcdataset$q6021=="I get extremely happy but rarely depressed"] <- 1
okcdataset$emotional_diversity[okcdataset$q6021=="I don't feel much of either"] <- 0
okcdataset$emotional_diversity[okcdataset$q6021=="I get extremely depressed and I'm rarely happy"] <- 1
okcdataset$emotional_diversity[okcdataset$q6021=="I don't feel much of either"] <- 2

okcdataset$happy_with_life <- NA
okcdataset$happy_with_life[okcdataset$q4018=="Yes"] <- 1
okcdataset$happy_with_life[okcdataset$q4018=="No"] <- 0

unique(okcdataset$q48278)
[1] NA     "No."  "Yes."
okcdataset$open_to_poly <- NA
okcdataset$open_to_poly[okcdataset$q33107=="I am commited to total monogamy"] <- 0
okcdataset$open_to_poly[okcdataset$q33107=="I could be convinced by the right people"] <- 1
okcdataset$open_to_poly[okcdataset$q33107=="Yes, I like that type of polygamy."] <- 2
okcdataset$open_to_poly[okcdataset$q33107=="I have open relationships only"] <- 3

okcdataset$open_to_dating_poly <- NA
okcdataset$open_to_dating_poly[okcdataset$q48278=="Yes."] <- 1
okcdataset$open_to_dating_poly[okcdataset$q48278=="No."] <- 0

okcdataset$pref_poly <- NA
okcdataset$pref_poly[okcdataset$q37772=="Monogamy"] <- 0
okcdataset$pref_poly[okcdataset$q37772=="Playing the field"] <- 1
okcdataset$pref_poly[okcdataset$q37772=="An open relationship"] <- 2
okcdataset$pref_poly[okcdataset$q37772=="Polyamory"] <- 3

unique(okcdataset$q15414)
[1] NA                                                  
[2] "No, I have not used them but I would try them."    
[3] "No, I have not used them and I would not try them."
[4] "Yes, I have used psychedelic drugs."               
okcdataset$marijuana <- NA
okcdataset$marijuana[okcdataset$q79=="Never."] <- 0
okcdataset$marijuana[okcdataset$q79=="I smoked in the past, but no longer."] <- 1
okcdataset$marijuana[okcdataset$q79=="I smoke occasionally."] <- 2
okcdataset$marijuana[okcdataset$q79=="I smoke regularly."] <- 3

okcdataset$drug_use <- NA
okcdataset$drug_use[okcdataset$q80=="I never do drugs."] <- 0
okcdataset$drug_use[okcdataset$q80=="I've done drugs in the past, but no longer."] <- 1
okcdataset$drug_use[okcdataset$q80=="I do drugs occasionally."] <- 2
okcdataset$drug_use[okcdataset$q80=="I do drugs regularly."] <- 3

okcdataset$psychedelics_use <- NA
okcdataset$psychedelics_use[okcdataset$q15414=="No, I have not used them and I would not try them."] <- 0
okcdataset$psychedelics_use[okcdataset$q15414=="No, I have not used them but I would try them."] <- 1
okcdataset$psychedelics_use[okcdataset$q15414=="Yes, I have used psychedelic drugs."] <- 2

unique(okcdataset$q88)
[1] NA                      "I'm mostly organized"  "I'm average"           "I'm very messy"       
[5] "I'm compulsively neat"
okcdataset$brushing_teeth <- NA
okcdataset$brushing_teeth[okcdataset$q12970=="Rarely / never"] <- 0
okcdataset$brushing_teeth[okcdataset$q12970=="Only on days I feel like it"] <- 1
okcdataset$brushing_teeth[okcdataset$q12970=="Once a day"] <- 2
okcdataset$brushing_teeth[okcdataset$q12970=="Twice or more a day"] <- 3

okcdataset$showering <- NA
okcdataset$showering[okcdataset$q1062=="Once a week or less."] <- 0
okcdataset$showering[okcdataset$q1062=="A couple times a week."] <- 1
okcdataset$showering[okcdataset$q1062=="Usually daily.  I skip some."] <- 2
okcdataset$showering[okcdataset$q1062=="At least once a day."] <- 3

okcdataset$mess_cleaning <- NA
okcdataset$mess_cleaning[okcdataset$q35409=="Not cleanup at all."] <- 0
okcdataset$mess_cleaning[okcdataset$q35409=="Postpone the cleanup for later."] <- 1
okcdataset$mess_cleaning[okcdataset$q35409=="Clean up immediately after eating."] <- 2
okcdataset$mess_cleaning[okcdataset$q35409=="Clean up immediately."] <- 3

okcdataset$bathroom_cleanliness <- NA
okcdataset$bathroom_cleanliness[okcdataset$q41099=="Disgusting! even I cringe when I have to use it!"] <- 0
okcdataset$bathroom_cleanliness[okcdataset$q41099=="Not awful, but it could use a good cleaning."] <- 1
okcdataset$bathroom_cleanliness[okcdataset$q41099=="Clean-ish but could use a quick touch-up."] <- 2
okcdataset$bathroom_cleanliness[okcdataset$q41099=="Spotless, shiny, germ-free, clean clean clean."] <- 3

okcdataset$messiness <- NA
okcdataset$messiness[okcdataset$q88=="I'm very messy"] <- 3
okcdataset$messiness[okcdataset$q88=="I'm average"] <- 2
okcdataset$messiness[okcdataset$q88=="I'm mostly organized"] <- 1
okcdataset$messiness[okcdataset$q88=="I'm compulsively neat"] <- 0

unique(okcdataset$q23696)
[1] "Never"                     NA                          "Sometimes"                
[4] "Used to, but not any more" "Yes, frequently"          
okcdataset$angry_video_games <- NA
okcdataset$angry_video_games[okcdataset$q43304=="Never"] <- 0
okcdataset$angry_video_games[okcdataset$q43304=="Sometimes"] <- 1
okcdataset$angry_video_games[okcdataset$q43304=="Usually"] <- 2

okcdataset$general_angry <- NA
okcdataset$general_angry[okcdataset$q1052=="Rarely"] <- 0
okcdataset$general_angry[okcdataset$q1052=="Sometimes"] <- 1
okcdataset$general_angry[okcdataset$q1052=="Very often"] <- 2

okcdataset$quietly_angry <- NA
okcdataset$quietly_angry[okcdataset$q6689=="Yes"] <- 1
okcdataset$quietly_angry[okcdataset$q6689=="No"] <- 0

okcdataset$throwing_objects <- NA
okcdataset$throwing_objects[okcdataset$q23696=="Never"] <- 0
okcdataset$throwing_objects[okcdataset$q23696=="Used to, but not any more"] <- 1
okcdataset$throwing_objects[okcdataset$q23696=="Sometimes"] <- 2
okcdataset$throwing_objects[okcdataset$q23696=="Yes, frequently"] <- 3

unique(okcdataset$q133)
[1] NA               "No, not really" "Average"        "Yes, very"     
okcdataset$six_pack_importance <- NA
okcdataset$six_pack_importance[okcdataset$q84223=="Hide them with fat, please."] <- 0
okcdataset$six_pack_importance[okcdataset$q84223=="Not at all important."] <- 1
okcdataset$six_pack_importance[okcdataset$q84223=="Somewhat important."] <- 2
okcdataset$six_pack_importance[okcdataset$q84223=="Very important."] <- 3

okcdataset$physical_shape <- NA
okcdataset$physical_shape[okcdataset$q126=="Shitty"] <- 0
okcdataset$physical_shape[okcdataset$q126=="Average"] <- 1
okcdataset$physical_shape[okcdataset$q126=="Great"] <- 2

okcdataset$physical_strength <- NA
okcdataset$physical_strength[okcdataset$q133=="No, not really"] <- 0
okcdataset$physical_strength[okcdataset$q133=="Average"] <- 1
okcdataset$physical_strength[okcdataset$q133=="Yes, very"] <- 2

okcdataset$good_posture <- NA
okcdataset$good_posture[okcdataset$q23311=="No"] <- 0
okcdataset$good_posture[okcdataset$q23311=="Sometimes, when the situation calls for it"] <- 1
okcdataset$good_posture[okcdataset$q23311=="Yes"] <- 2

unique(okcdataset$q18894)
[1] NA             "No"           "Occasionally" "Yes"         
okcdataset$sleep_time <- NA
okcdataset$sleep_time[okcdataset$q17342=="By 9pm"] <- 0
okcdataset$sleep_time[okcdataset$q17342=="By 11pm"] <- 1
okcdataset$sleep_time[okcdataset$q17342=="By 1am"] <- 2
okcdataset$sleep_time[okcdataset$q17342=="Later"] <- 3

okcdataset$sleep_trouble <- NA
okcdataset$sleep_trouble[okcdataset$q79134=="Never."] <- 0
okcdataset$sleep_trouble[okcdataset$q79134=="Rarely."] <- 1
okcdataset$sleep_trouble[okcdataset$q79134=="Frequently."] <- 2
okcdataset$sleep_trouble[okcdataset$q79134=="Always."] <- 3

okcdataset$sleeping_during_the_day <- NA
okcdataset$sleeping_during_the_day[okcdataset$q18644=="No"] <- 0
okcdataset$sleeping_during_the_day[okcdataset$q18644=="Yes"] <- 1

okcdataset$insomniac <- NA
okcdataset$insomniac[okcdataset$q18644=="No"] <- 0
okcdataset$insomniac[okcdataset$q18644=="Occasionally"] <- 1
okcdataset$insomniac[okcdataset$q18644=="Yes"] <- 2

unique(okcdataset$q84023)
[1] NA     "Yes." "No." 
okcdataset$life_without_alcohol <- NA
okcdataset$life_without_alcohol[okcdataset$q84023=="No."] <- 0
okcdataset$life_without_alcohol[okcdataset$q84023=="Yes."] <- 1

okcdataset$alcohol_use <- NA
okcdataset$alcohol_use[okcdataset$q77=="Never"] <- 0
okcdataset$alcohol_use[okcdataset$q77=="Rarely"] <- 1
okcdataset$alcohol_use[okcdataset$q77=="Sometimes"] <- 2
okcdataset$alcohol_use[okcdataset$q77=="Very often"] <- 3

okcdataset$alcohol_inhibit_sexual_tensions <- NA
okcdataset$alcohol_inhibit_sexual_tensions[okcdataset$q12540=="No"] <- 0
okcdataset$alcohol_inhibit_sexual_tensions[okcdataset$q12540=="Yes"] <- 1

okcdataset$blackout_from_alcohol <- NA
okcdataset$blackout_from_alcohol[okcdataset$q417=="No"] <- 0
okcdataset$blackout_from_alcohol[okcdataset$q417=="Yes"] <- 1

unique(okcdataset$q55744)
[1] "This would not be an important factor to me." NA                                            
[3] "No."                                          "Yes."                                        
okcdataset$burning_own_flag_illegality <- NA
okcdataset$burning_own_flag_illegality[okcdataset$q175=="No"] <- 0
okcdataset$burning_own_flag_illegality[okcdataset$q175=="Yes"] <- 1

okcdataset$worth_more_than_strangers <- NA
okcdataset$worth_more_than_strangers[okcdataset$q168==F] <- 0
okcdataset$worth_more_than_strangers[okcdataset$q168==T] <- 1

okcdataset$into_foreign_accents <- NA
okcdataset$into_foreign_accents[okcdataset$q12954=="No"] <- 0
okcdataset$into_foreign_accents[okcdataset$q12954=="Yes"] <- 1

okcdataset$wearing_shirt_with_flag <- NA
okcdataset$wearing_shirt_with_flag[okcdataset$q66067=="Ridiculous/Tacky."] <- 0
okcdataset$wearing_shirt_with_flag[okcdataset$q66067=="Its ok, but not for me."] <- 1
okcdataset$wearing_shirt_with_flag[okcdataset$q66067=="A poor substitute for true patriotism."] <- 2
okcdataset$wearing_shirt_with_flag[okcdataset$q66067=="A fine way to show national pride."] <- 3

okcdataset$partner_same_ethnicity_as_you <- NA
okcdataset$partner_same_ethnicity_as_you[okcdataset$q55744=="No."] <- 0
okcdataset$partner_same_ethnicity_as_you[okcdataset$q55744=="This would not be an important factor to me."] <- 1
okcdataset$partner_same_ethnicity_as_you[okcdataset$q55744=="Yes."] <- 2

unique(okcdataset$q488)
[1] NA    "No"  "Yes"
okcdataset$money_saving <- NA
okcdataset$money_saving[okcdataset$q19110=="Save some/most of it, but not invest it."] <- 2
okcdataset$money_saving[okcdataset$q19110=="Save some/most of it and invest it."] <- 2
okcdataset$money_saving[okcdataset$q19110=="Save some for an emergency fund, spend the rest."] <- 1
okcdataset$money_saving[okcdataset$q19110=="Spend it all and live paycheck to paycheck."] <- 0

okcdataset$impulse_purchasing <- NA
okcdataset$impulse_purchasing[okcdataset$q488=="No"] <- 0
okcdataset$impulse_purchasing[okcdataset$q488=="Yes"] <- 1

unique(okcdataset$q38051)
[1] NA        "Rarely." "Never."  "Often." 
okcdataset$gambling <- NA
okcdataset$gambling[okcdataset$q35673=="No, I have no interest in gambling."] <- 0
okcdataset$gambling[okcdataset$q35673=="No, it is illegal or against the rules."] <- 0
okcdataset$gambling[okcdataset$q35673=="Yes, but only if really interested in the subject."] <- 1
okcdataset$gambling[okcdataset$q35673=="Yes, I'd gamble on almost anything."] <- 2

okcdataset$gambling2 <- NA
okcdataset$gambling2[okcdataset$q38051=="Never."] <- 0
okcdataset$gambling2[okcdataset$q38051=="Rarely."] <- 1
okcdataset$gambling2[okcdataset$q38051=="Often."] <- 2

unique(okcdataset$q27243)
[1] NA               "Often"          "Rarely / never"
okcdataset$problem_with_authority <- NA
okcdataset$problem_with_authority[okcdataset$q6377=="No"] <- 0
okcdataset$problem_with_authority[okcdataset$q6377=="Yes"] <- 1

okcdataset$ever_arrested <- NA
okcdataset$ever_arrested[okcdataset$q252=="No"] <- 0
okcdataset$ever_arrested[okcdataset$q252=="Yes"] <- 1

okcdataset$trouble_as_child <- NA
okcdataset$trouble_as_child[okcdataset$q18169=="I never got in trouble."] <- 0
okcdataset$trouble_as_child[okcdataset$q18169=="I never got in trouble because I never got caught."] <- 1
okcdataset$trouble_as_child[okcdataset$q18169=="I got in trouble all the time."] <- 1

okcdataset$fights_with_authority <- NA
okcdataset$fights_with_authority[okcdataset$q27243=="Rarely / never"] <- 0
okcdataset$fights_with_authority[okcdataset$q27243=="Often"] <- 1

unique(okcdataset$q13103)
[1] NA                 "Small"            "I don't have one" "LARGE"            "Medium"          
okcdataset$receiving_anal_sex <- NA
okcdataset$receiving_anal_sex[okcdataset$q1040=="I don't like it / I don't think I would like it"] <- 0
okcdataset$receiving_anal_sex[okcdataset$q1040=="I like it / I think I might like it"] <- 1

okcdataset$porn_collection <- NA
okcdataset$porn_collection[okcdataset$q13103=="I don't have one"] <- 0
okcdataset$porn_collection[okcdataset$q13103=="Small"] <- 1
okcdataset$porn_collection[okcdataset$q13103=="Medium"] <- 2
okcdataset$porn_collection[okcdataset$q13103=="LARGE"] <- 3

okcdataset$dating_sex_worker <- NA
okcdataset$dating_sex_worker[okcdataset$q18048=="The very notion of this question offends me."] <- NA
okcdataset$dating_sex_worker[okcdataset$q18048=="No way!"] <- 0
okcdataset$dating_sex_worker[okcdataset$q18048=="Depends... what kind of sex worker?"] <- 1
okcdataset$dating_sex_worker[okcdataset$q18048=="Sure. At least they know what they're doing."] <- 2

okcdataset$dating_HIV_positive <- NA
okcdataset$dating_HIV_positive[okcdataset$q16317=="No"] <- 0
okcdataset$dating_HIV_positive[okcdataset$q16317=="I don't know"] <- 1
okcdataset$dating_HIV_positive[okcdataset$q16317=="Yes"] <- 2

okcdataset$dating_trans_person <- NA
okcdataset$dating_trans_person[okcdataset$q546=="No"] <- 0
okcdataset$dating_trans_person[okcdataset$q546=="Yes"] <- 1

okcdataset$dating_herpes_positive <- NA
okcdataset$dating_herpes_positive[okcdataset$q1618=="No"] <- 0
okcdataset$dating_herpes_positive[okcdataset$q1618=="Yes"] <- 1

okcdataset$foot_fetish <- NA
okcdataset$foot_fetish[okcdataset$q19892=="No, I don't have a foot fetish"] <- 0
okcdataset$foot_fetish[okcdataset$q19892=="Yes, I have a foot fetish!"] <- 1

unique(okcdataset$q323)
[1] "Confident"            NA                     "Super confident"      "Not really confident"
okcdataset$self_confidence <- NA
okcdataset$self_confidence[okcdataset$q20930=="Below average"] <- 0
okcdataset$self_confidence[okcdataset$q20930=="Average"] <- 1
okcdataset$self_confidence[okcdataset$q20930=="Higher than average"] <- 2
okcdataset$self_confidence[okcdataset$q20930=="Very, very high"] <- 3

okcdataset$comfortable_with_yourself <- NA
okcdataset$comfortable_with_yourself[okcdataset$q20452=="No"] <- 0
okcdataset$comfortable_with_yourself[okcdataset$q20452=="Yes"] <- 1

okcdataset$self_esteem <- NA
okcdataset$self_esteem[okcdataset$q19691=="Low"] <- 0
okcdataset$self_esteem[okcdataset$q19691=="Neither high nor low"] <- 1
okcdataset$self_esteem[okcdataset$q19691=="High"] <- 2

okcdataset$sexual_confidence <- NA
okcdataset$sexual_confidence[okcdataset$q323=="Not really confident"] <- 0
okcdataset$sexual_confidence[okcdataset$q323=="Confident"] <- 1
okcdataset$sexual_confidence[okcdataset$q323=="Super confident"] <- 2

unique(okcdataset$q6347)
[1] NA    "No"  "Yes"
okcdataset$believe_in_god <- NA
okcdataset$believe_in_god[okcdataset$q210=="No"] <- 0
okcdataset$believe_in_god[okcdataset$q210=="Yes"] <- 1

okcdataset$religion_important <- NA
okcdataset$religion_important[okcdataset$q41=="Not at all important"] <- 0
okcdataset$religion_important[okcdataset$q41=="Not very important"] <- 1
okcdataset$religion_important[okcdataset$q41=="Somewhat important"] <- 2
okcdataset$religion_important[okcdataset$q41=="Extremely important"] <- 3

okcdataset$religious_duty_important <- NA
okcdataset$religious_duty_important[okcdataset$q42=="No"] <- 0
okcdataset$religious_duty_important[okcdataset$q42=="Yes"] <- 1

okcdataset$homosexuality_is_sin <- NA
okcdataset$homosexuality_is_sin[okcdataset$q70=="No"] <- 0
okcdataset$homosexuality_is_sin[okcdataset$q70=="Yes"] <- 1

okcdataset$belief_in_miracles <- NA
okcdataset$belief_in_miracles[okcdataset$q6347=="No"] <- 0
okcdataset$belief_in_miracles[okcdataset$q6347=="Yes"] <- 1

unique(okcdataset$q13106)
[1] NA                             "I'd consider it."             "I'm partially there already."
[4] "No way!"                      "I am one!"                   
okcdataset$am_vegeterian <- NA
okcdataset$am_vegeterian[okcdataset$q179268=="No"] <- 0
okcdataset$am_vegeterian[okcdataset$q179268=="Yes"] <- 1

okcdataset$consider_vegetarian <- NA
okcdataset$consider_vegetarian[okcdataset$q13106=="No way!"] <- 0
okcdataset$consider_vegetarian[okcdataset$q13106=="I'd consider it."] <- 1
okcdataset$consider_vegetarian[okcdataset$q13106=="I'm partially there already."] <- 2
okcdataset$consider_vegetarian[okcdataset$q13106=="I am one!"] <- 3

unique(okcdataset$q20976)
[1] "That seems like an average number."         NA                                          
[3] "I guess, but It doesn't change how I feel." "No, that's nothing."                       
[5] "Yes, and it makes me uncomfortable."       
okcdataset$too_many_sex_partners <- NA
okcdataset$too_many_sex_partners[okcdataset$q393=="No"] <- 0
okcdataset$too_many_sex_partners[okcdataset$q393=="Yes"] <- 1

okcdataset$multiple_sex_partners_same_time <- NA
okcdataset$multiple_sex_partners_same_time[okcdataset$q1121=="No."] <- 0
okcdataset$multiple_sex_partners_same_time[okcdataset$q1121=="Yes, and I didn't tell at least one of them."] <- 1
okcdataset$multiple_sex_partners_same_time[okcdataset$q1121=="Yes, and they both knew."] <- 1

okcdataset$consider_fwb <- NA
okcdataset$consider_fwb[okcdataset$q42524=="No."] <- 0
okcdataset$consider_fwb[okcdataset$q42524=="Yes."] <- 1

okcdataset$fourteen_sexpart_alot <- NA
okcdataset$fourteen_sexpart_alot[okcdataset$q20976=="Yes, and it makes me uncomfortable."] <- 2
okcdataset$fourteen_sexpart_alot[okcdataset$q20976=="I guess, but It doesn't change how I feel."] <- 2
okcdataset$fourteen_sexpart_alot[okcdataset$q20976=="That seems like an average number."] <- 1
okcdataset$fourteen_sexpart_alot[okcdataset$q20976=="No, that's nothing."] <- 0

unique(okcdataset$q80041)
[1] "Yes" NA    "No" 
okcdataset$desired_fertility <- NA
okcdataset$desired_fertility[okcdataset$q979=="None"] <- 0
okcdataset$desired_fertility[okcdataset$q979=="1-2"] <- 1.5
okcdataset$desired_fertility[okcdataset$q979=="3-4"] <- 3.5
okcdataset$desired_fertility[okcdataset$q979=="5 or more!"] <- 6

okcdataset$child_birth_disgust <- NA
okcdataset$child_birth_disgust[okcdataset$q478=="No"] <- 0
okcdataset$child_birth_disgust[okcdataset$q478=="Yes"] <- 1

okcdataset$planned_child_names <- NA
okcdataset$planned_child_names[okcdataset$q63010=="No."] <- 0
okcdataset$planned_child_names[okcdataset$q63010=="No, and I'm not planning on any future children."] <- 0
okcdataset$planned_child_names[okcdataset$q63010=="Yes."] <- 1

okcdataset$looking_to_have_kids <- NA
okcdataset$looking_to_have_kids[okcdataset$q80041=="No"] <- 0
okcdataset$looking_to_have_kids[okcdataset$q80041=="Yes"] <- 1

okcdataset$tattoos <- NA
okcdataset$tattoos[okcdataset$q128=="I have no tattoos"] <- 0
okcdataset$tattoos[okcdataset$q128=="I have 1 or more LITTLE tattoos"] <- 1
okcdataset$tattoos[okcdataset$q128=="I have 1 or more BIG tattoos"] <- 1

okcdataset$a_lot_of_black_clothes <- NA
okcdataset$a_lot_of_black_clothes[okcdataset$q476=="No"] <- 0
okcdataset$a_lot_of_black_clothes[okcdataset$q476=="Yes"] <- 1

okcdataset$are_freckles_attractive <- NA
okcdataset$are_freckles_attractive[okcdataset$q30957=="No"] <- 0
okcdataset$are_freckles_attractive[okcdataset$q30957=="I'm Not Sure"] <- 1
okcdataset$are_freckles_attractive[okcdataset$q30957=="It depends where on the body they are"] <- 1
okcdataset$are_freckles_attractive[okcdataset$q30957=="Yes"] <- 2

okcdataset$cosplay <- NA
okcdataset$cosplay[okcdataset$q18711=="No, but it sounds cool"] <- 0
okcdataset$cosplay[okcdataset$q18711=="No, and I wouldn't be interested"] <- 0
okcdataset$cosplay[okcdataset$q18711=="Yes"] <- 1

okcdataset$education_level <- NA
okcdataset$education_level[okcdataset$q274=="Junior High"] <- 0
okcdataset$education_level[okcdataset$q274=="High School"] <- 1
okcdataset$education_level[okcdataset$q274=="College"] <- 2
okcdataset$education_level[okcdataset$q274=="Graduate School"] <- 3

okcdataset$scared_of_commitment <- NA
okcdataset$scared_of_commitment[okcdataset$q4043=="No"] <- 0
okcdataset$scared_of_commitment[okcdataset$q4043=="I'm Not Sure"] <- 1
okcdataset$scared_of_commitment[okcdataset$q4043=="Yes"] <- 2

okcdataset$trauma <- NA
okcdataset$trauma[okcdataset$q1290=="No"] <- 0
okcdataset$trauma[okcdataset$q1290=="Yes"] <- 1

okcdataset$shyness <- NA
okcdataset$shyness[okcdataset$q1712=="Not at all shy"] <- 0
okcdataset$shyness[okcdataset$q1712=="Not really shy"] <- 1
okcdataset$shyness[okcdataset$q1712=="Kind of shy"] <- 2
okcdataset$shyness[okcdataset$q1712=="Very shy"] <- 3

okcdataset$left_wing <- NA
okcdataset$left_wing[okcdataset$q212813=="Conservative / Right-wing"] <- 0
okcdataset$left_wing[okcdataset$q212813=="Other"] <- 1
okcdataset$left_wing[okcdataset$q212813=="Centrist"] <- 1
okcdataset$left_wing[okcdataset$q212813=="Liberal / Left-wing"] <- 2

unique(okcdataset$sexuality)
[1] Straight Bisexual Other    <NA>     Gay     
Levels: Straight Bisexual Gay Other
okcdataset$homosexuality <- NA
okcdataset$homosexuality[okcdataset$sexuality=="Other"] <- NA
okcdataset$homosexuality[okcdataset$sexuality=="Straight"] <- 0
okcdataset$homosexuality[okcdataset$sexuality=="Bisexual"] <- 1
okcdataset$homosexuality[okcdataset$sexuality=="Gay"] <- 2


unique(okcdataset$q18538)
[1] NA                                           "It wasn't a 'phase'!"                      
[3] "Yes, and I'm a little embarassed about it." "Yes, and I'm proud of it."                 
[5] "No."                                       
okcdataset$goth <- NA
okcdataset$goth[okcdataset$q18538=="No."] <- 0
okcdataset$goth[okcdataset$q18538=="Yes, and I'm a little embarassed about it."] <- 1
okcdataset$goth[okcdataset$q18538=="Yes, and I'm proud of it."] <- 2
okcdataset$goth[okcdataset$q18538=="It wasn't a 'phase'!"] <- 3


vars <- colnames(okcdataset[, 2630:2712])

Correlation between having identified as goth and each variable:

dafvars <- data.frame(r = rep(0, length(vars)), se = rep(0, length(vars)), varnames = vars)

for(i in 1:length(vars)) {
  curvar <- vars[i]
  
  idx <- complete.cases(okcdataset[c("goth", curvar)])
  
  if(mean(idx) > 0 & !curvar=='goth') {
    goth_clean <- okcdataset$goth[idx]
    curvar_clean <- okcdataset[[curvar]][idx]
    
    goth_factor <- factor(goth_clean, ordered = TRUE)
    curvar_factor <- factor(curvar_clean, ordered = TRUE)
    
    custard <- polychor(goth_factor, curvar_factor, std.err=T)
    
    dafvars$r[i] <- custard$rho
    dafvars$se[i] <- sqrt(custard$var)
  }
  else {
    dafvars$r[i] <- NA
    dafvars$se[i] <- NA
  }
  
}
Warning: NaNs producedWarning: NaNs producedWarning: NaNs producedWarning: NaNs producedWarning: NaNs producedWarning: NaNs producedWarning: NaNs producedWarning: NaNs producedWarning: NaNs producedWarning: NaNs produced
dafvars
dafvars$uce <- dafvars$r + dafvars$se*1.96
dafvars$lce <- dafvars$r - dafvars$se*1.96

dafvars %>% filter(varnames=='much_depression')


###############################
daf_clean <- na.omit(dafvars)

# Sort by correlation 'r' from highest to lowest
daf_sorted <- daf_clean[order(-daf_clean$r), ]

# Convert varnames to a factor with levels in desired order (for ggplot)
daf_sorted$varnames <- factor(daf_sorted$varnames, levels = daf_sorted$varnames)

# Plot
p <- ggplot(daf_sorted, aes(x = varnames, y = r)) +
  geom_point(size = 3, color = "steelblue") +  # Dots for correlations
  geom_errorbar(aes(ymin = lce, ymax = uce), width = 0.2, color = "black") +
  coord_flip() +
  labs(title = "",
       x = "Variables",
       y = "Correlation with having been goth") +
  theme_minimal() +
  theme(
    axis.text.x = element_text(size = 10),
    axis.text.y = element_text(size = 10),
    axis.title.x = element_text(size = 12),
    axis.title.y = element_text(size = 12),
    legend.position = "right",
    plot.background = element_rect(color = "white"),
    panel.background = element_blank()
  )

p

Correlation matrix

okcdataset$mental_illness <- getpc(okcdataset %>% select(seen_therapist, much_depression, emotional_diversity, happy_with_life, trauma), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$sleep_issues <- getpc(okcdataset %>% select(sleep_time, insomniac, sleeping_during_the_day, sleep_time, sleep_trouble), dofa=F, fillmissing=F, normalizeit=T)
Warning: Matrix was not positive definite, smoothing was doneWarning: The matrix is not positive semi-definite, scores found from Structure loadings
okcdataset$alcohol_usage <- getpc(okcdataset %>% select(life_without_alcohol, alcohol_use, alcohol_inhibit_sexual_tensions, blackout_from_alcohol), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$nationalism <- getpc(okcdataset %>% select(burning_own_flag_illegality, worth_more_than_strangers, into_foreign_accents, wearing_shirt_with_flag, partner_same_ethnicity_as_you), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$hygiene <- getpc(okcdataset %>% select(brushing_teeth, showering, mess_cleaning, bathroom_cleanliness, messiness), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$anger <- getpc(okcdataset %>% select(angry_video_games, general_angry, quietly_angry, throwing_objects), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$physical_health <- getpc(okcdataset %>% select(six_pack_importance, physical_shape, physical_strength, good_posture), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$gambling_tendency <- getpc(okcdataset %>% select(gambling, gambling2), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$rebelliousness <- getpc(okcdataset %>% select(problem_with_authority, ever_arrested, trouble_as_child, fights_with_authority), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$sexual_unc <- getpc(okcdataset %>% select(receiving_anal_sex, porn_collection, dating_sex_worker, dating_HIV_positive, dating_trans_person, dating_herpes_positive, foot_fetish), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$confidence <- getpc(okcdataset %>% select(self_confidence, comfortable_with_yourself, self_esteem, sexual_confidence), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$religion <- getpc(okcdataset %>% select(believe_in_god, religion_important, religious_duty_important, homosexuality_is_sin, belief_in_miracles), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$drug_usage <- getpc(okcdataset %>% select(psychedelics_use, drug_use, marijuana), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$sexual_liberalism <- -getpc(okcdataset %>% select(too_many_sex_partners, multiple_sex_partners_same_time, consider_fwb, fourteen_sexpart_alot), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$finance_saving <- getpc(okcdataset %>% select(impulse_purchasing, money_saving), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$polygamy <- getpc(okcdataset %>% select(open_to_poly, open_to_dating_poly, pref_poly), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$vegetarianism <- getpc(okcdataset %>% select(am_vegeterian, consider_vegetarian), dofa=F, fillmissing=F, normalizeit=T)
okcdataset$natalism <- getpc(okcdataset %>% select(desired_fertility, planned_child_names, looking_to_have_kids), dofa=F, fillmissing=F, normalizeit=T)

correlation_matrix(okcdataset %>% select(mental_illness, drug_usage, sleep_issues, alcohol_usage, nationalism, hygiene, anger, physical_health, gambling_tendency, rebelliousness, sexual_unc, confidence, religion, sexual_liberalism, finance_saving, polygamy, vegetarianism, natalism, goth))
                  mental_illness drug_usage   sleep_issues alcohol_usage nationalism  hygiene     
mental_illness    "NA"           "0.137 ***"  "0.278 ***"  "-0.01 "      "-0.132 **"  "-0.278 ***"
drug_usage        "0.137 ***"    "NA"         "0.158 ***"  "0.388 ***"   "-0.2 ***"   "-0.146 ***"
sleep_issues      "0.278 ***"    "0.158 ***"  "NA"         "0.085 ***"   "-0.117 ***" "-0.206 ***"
alcohol_usage     "-0.01 "       "0.388 ***"  "0.085 ***"  "NA"          "-0.087 ***" "-0.068 ***"
nationalism       "-0.132 **"    "-0.2 ***"   "-0.117 ***" "-0.087 ***"  "NA"         "0.133 ***" 
hygiene           "-0.278 ***"   "-0.146 ***" "-0.206 ***" "-0.068 ***"  "0.133 ***"  "NA"        
anger             "0.402 ***"    "0.095 ***"  "0.151 ***"  "0.139 ***"   "0.076 **"   "-0.187 ***"
physical_health   "-0.318 ***"   "-0.029 "    "-0.162 ***" "0.032 "      "0.044 "     "0.331 ***" 
gambling_tendency "-0.027 "      "0.054 *"    "0.006 "     "0.217 ***"   "0.138 ***"  "-0.072 **" 
rebelliousness    "0.148 ***"    "0.411 ***"  "0.19 ***"   "0.203 ***"   "-0.154 ***" "-0.121 ***"
sexual_unc        "0.2 ***"      "0.271 ***"  "0.182 ***"  "0.028 "      "-0.222 ***" "-0.24 ***" 
confidence        "-0.553 ***"   "0.058 ***"  "-0.138 ***" "0.021 "      "0.053 *"    "0.286 ***" 
religion          "-0.101 *"     "-0.215 ***" "-0.093 ***" "-0.185 ***"  "0.435 ***"  "0.1 ***"   
sexual_liberalism "-0.005 "      "0.401 ***"  "0.118 ***"  "0.272 ***"   "-0.216 ***" "-0.081 ***"
finance_saving    "-0.049 "      "-0.133 ***" "-0.121 **"  "-0.216 ***"  "-0.025 "    "0.044 "    
polygamy          "0.187 ***"    "0.304 ***"  "0.178 ***"  "0.11 ***"    "-0.187 ***" "-0.19 ***" 
vegetarianism     "0.063 "       "0.127 ***"  "-0.011 "    "-0.029 *"    "-0.227 ***" "0.007 "    
natalism          "-0.123 ***"   "-0.144 ***" "-0.051 ***" "-0.037 ***"  "0.148 ***"  "0.034 **"  
goth              "0.194 ***"    "0.168 ***"  "0.173 ***"  "0.046 ***"   "-0.1 ***"   "-0.088 ***"
                  anger        physical_health gambling_tendency rebelliousness sexual_unc  
mental_illness    "0.402 ***"  "-0.318 ***"    "-0.027 "         "0.148 ***"    "0.2 ***"   
drug_usage        "0.095 ***"  "-0.029 "       "0.054 *"         "0.411 ***"    "0.271 ***" 
sleep_issues      "0.151 ***"  "-0.162 ***"    "0.006 "          "0.19 ***"     "0.182 ***" 
alcohol_usage     "0.139 ***"  "0.032 "        "0.217 ***"       "0.203 ***"    "0.028 "    
nationalism       "0.076 **"   "0.044 "        "0.138 ***"       "-0.154 ***"   "-0.222 ***"
hygiene           "-0.187 ***" "0.331 ***"     "-0.072 **"       "-0.121 ***"   "-0.24 ***" 
anger             "NA"         "-0.134 ***"    "0.093 ***"       "0.215 ***"    "0.087 ***" 
physical_health   "-0.134 ***" "NA"            "-0.013 "         "0.032 "       "-0.175 ***"
gambling_tendency "0.093 ***"  "-0.013 "       "NA"              "0.034 "       "-0.031 "   
rebelliousness    "0.215 ***"  "0.032 "        "0.034 "          "NA"           "0.186 ***" 
sexual_unc        "0.087 ***"  "-0.175 ***"    "-0.031 "         "0.186 ***"    "NA"        
confidence        "-0.248 ***" "0.449 ***"     "0.074 **"        "0.058 ***"    "-0.099 ***"
religion          "0.014 "     "0.126 ***"     "0.079 **"        "-0.154 ***"   "-0.212 ***"
sexual_liberalism "0.028 "     "0.065 **"      "0.052 *"         "0.254 ***"    "0.382 ***" 
finance_saving    "-0.196 ***" "0.129 **"      "-0.186 ***"      "-0.074 "      "-0.082 "   
polygamy          "0.06 ***"   "-0.014 "       "0.008 "          "0.258 ***"    "0.489 ***" 
vegetarianism     "-0.032 *"   "0.004 "        "-0.135 ***"      "0.11 ***"     "0.163 ***" 
natalism          "0.04 ***"   "0.05 *"        "0.105 ***"       "-0.062 ***"   "-0.15 ***" 
goth              "0.126 ***"  "-0.113 ***"    "-0.044 "         "0.13 ***"     "0.212 ***" 
                  confidence   religion     sexual_liberalism finance_saving polygamy    
mental_illness    "-0.553 ***" "-0.101 *"   "-0.005 "         "-0.049 "      "0.187 ***" 
drug_usage        "0.058 ***"  "-0.215 ***" "0.401 ***"       "-0.133 ***"   "0.304 ***" 
sleep_issues      "-0.138 ***" "-0.093 ***" "0.118 ***"       "-0.121 **"    "0.178 ***" 
alcohol_usage     "0.021 "     "-0.185 ***" "0.272 ***"       "-0.216 ***"   "0.11 ***"  
nationalism       "0.053 *"    "0.435 ***"  "-0.216 ***"      "-0.025 "      "-0.187 ***"
hygiene           "0.286 ***"  "0.1 ***"    "-0.081 ***"      "0.044 "       "-0.19 ***" 
anger             "-0.248 ***" "0.014 "     "0.028 "          "-0.196 ***"   "0.06 ***"  
physical_health   "0.449 ***"  "0.126 ***"  "0.065 **"        "0.129 **"     "-0.014 "   
gambling_tendency "0.074 **"   "0.079 **"   "0.052 *"         "-0.186 ***"   "0.008 "    
rebelliousness    "0.058 ***"  "-0.154 ***" "0.254 ***"       "-0.074 "      "0.258 ***" 
sexual_unc        "-0.099 ***" "-0.212 ***" "0.382 ***"       "-0.082 "      "0.489 ***" 
confidence        "NA"         "0.058 ***"  "0.206 ***"       "0.126 **"     "0.064 ***" 
religion          "0.058 ***"  "NA"         "-0.298 ***"      "-0.123 *"     "-0.214 ***"
sexual_liberalism "0.206 ***"  "-0.298 ***" "NA"              "-0.049 "      "0.619 ***" 
finance_saving    "0.126 **"   "-0.123 *"   "-0.049 "         "NA"           "-0.002 "   
polygamy          "0.064 ***"  "-0.214 ***" "0.619 ***"       "-0.002 "      "NA"        
vegetarianism     "0.005 "     "-0.088 ***" "0.086 ***"       "-0.003 "      "0.091 ***" 
natalism          "0.024 *"    "0.312 ***"  "-0.221 ***"      "-0.033 "      "-0.215 ***"
goth              "-0.082 ***" "-0.031 **"  "0.13 ***"        "-0.097 *"     "0.179 ***" 
                  vegetarianism natalism     goth        
mental_illness    "0.063 "      "-0.123 ***" "0.194 ***" 
drug_usage        "0.127 ***"   "-0.144 ***" "0.168 ***" 
sleep_issues      "-0.011 "     "-0.051 ***" "0.173 ***" 
alcohol_usage     "-0.029 *"    "-0.037 ***" "0.046 ***" 
nationalism       "-0.227 ***"  "0.148 ***"  "-0.1 ***"  
hygiene           "0.007 "      "0.034 **"   "-0.088 ***"
anger             "-0.032 *"    "0.04 ***"   "0.126 ***" 
physical_health   "0.004 "      "0.05 *"     "-0.113 ***"
gambling_tendency "-0.135 ***"  "0.105 ***"  "-0.044 "   
rebelliousness    "0.11 ***"    "-0.062 ***" "0.13 ***"  
sexual_unc        "0.163 ***"   "-0.15 ***"  "0.212 ***" 
confidence        "0.005 "      "0.024 *"    "-0.082 ***"
religion          "-0.088 ***"  "0.312 ***"  "-0.031 **" 
sexual_liberalism "0.086 ***"   "-0.221 ***" "0.13 ***"  
finance_saving    "-0.003 "     "-0.033 "    "-0.097 *"  
polygamy          "0.091 ***"   "-0.215 ***" "0.179 ***" 
vegetarianism     "NA"          "-0.071 ***" "0.101 ***" 
natalism          "-0.071 ***"  "NA"         "-0.039 ***"
goth              "0.101 ***"   "-0.039 ***" "NA"        

Visualized graphically:

data_selected <- okcdataset %>% select(mental_illness, drug_usage, sleep_issues, alcohol_usage, nationalism, hygiene, anger, physical_health, gambling_tendency, rebelliousness, sexual_unc, confidence, religion, sexual_liberalism, finance_saving, polygamy, vegetarianism, natalism, goth)

cor_matrix <- cor(data_selected, use = "pairwise.complete.obs")

cor_long <- as.data.frame(as.table(cor_matrix))
colnames(cor_long) <- c("Var1", "Var2", "Correlation")

cor_long$label <- sprintf("%.2f", cor_long$Correlation)

p <- ggplot(cor_long, aes(x = Var1, y = Var2, fill = Correlation)) +
  geom_tile(color = "white") +
  geom_text(aes(label = label), color = "black", size = 3) +
  scale_fill_gradient2(
    low = "blue", mid = "white", high = "red", midpoint = 0,
    limit = c(-1, 1), space = "Lab", name = "r"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  coord_fixed() +
  labs(title = "", x = "", y = "")

p

Factor analysis. Fairly simple.


f <- fa(okcdataset[, 2630:2712], nfactors=1)
In smc, smcs < 0 were set to .0
In smc, smcs < 0 were set to .0
In smc, smcs < 0 were set to .0
Warning: Matrix was not positive definite, smoothing was doneWarning: pnchisq(x=2.49074e+06, f=3320, theta=2.62748e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.49611e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.49299e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.4915e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47742e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47707e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47373e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47206e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47201e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47199e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47181e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47171e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47171e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47171e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.4717e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.62748e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.54948e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47537e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47352e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47176e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47172e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.4717e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.Warning: pnchisq(x=2.49074e+06, f=3320, theta=2.47169e+06, ..): not converged in 1000000 iter.In factor.scores, the correlation matrix is singular, the pseudo inverse is  used
print(f)
Factor Analysis using method =  minres
Call: fa(r = okcdataset[, 2630:2712], nfactors = 1)
Standardized loadings (pattern matrix) based upon correlation matrix

                MR1
SS loadings    7.21
Proportion Var 0.09

Mean item complexity =  1
Test of the hypothesis that 1 factor is sufficient.

df null model =  3403  with the objective function =  42.16 with Chi Square =  2881310
df of  the model are 3320  and the objective function was  36.45 

The root mean square of the residuals (RMSR) is  0.12 
The df corrected root mean square of the residuals is  0.12 

The harmonic n.obs is  6927 with the empirical chi square  701794.5  with prob <  0 
The total n.obs was  68371  with Likelihood Chi Square =  2490738  with prob <  0 

Tucker Lewis Index of factoring reliability =  0.114
RMSEA index =  0.105  and the 90 % confidence intervals are  0.104 NA
BIC =  2453777
Fit based upon off diagonal values = 0.54
Measures of factor score adequacy             
                                                   MR1
Correlation of (regression) scores with factors   0.95
Multiple R square of scores with factors          0.90
Minimum correlation of possible factor scores     0.80

Linear regression models that test whether the association between goth identity and various variables are due to demographic confounding.

okcdataset$goth_stand <- normalise(okcdataset$goth)
okcdataset$mental_stand <- normalise(okcdataset$mental_illness)
okcdataset$homo_stand <- normalise(okcdataset$homosexuality)
okcdataset$sexual_unc_stand <- normalise(okcdataset$sexual_unc)
okcdataset$income_stand <- normalise(okcdataset$numincome)
okcdataset$age_stand <- normalise(okcdataset$d_age)

lr <- lm(data=okcdataset, mental_illness ~ goth_stand)
summary(lr)

Call:
lm(formula = mental_illness ~ goth_stand, data = okcdataset)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.76478 -0.71032 -0.08174  0.39898  2.97736 

Coefficients:
            Estimate Std. Error t value        Pr(>|t|)    
(Intercept) 0.008065   0.028996   0.278           0.781    
goth_stand  0.203713   0.030832   6.607 0.0000000000605 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9637 on 1116 degrees of freedom
  (67253 observations deleted due to missingness)
Multiple R-squared:  0.03765,   Adjusted R-squared:  0.03678 
F-statistic: 43.66 on 1 and 1116 DF,  p-value: 0.00000000006048
lr <- lm(data=okcdataset, mental_illness ~ goth_stand + age_stand + sex + race + income_stand)
summary(lr)

Call:
lm(formula = mental_illness ~ goth_stand + age_stand + sex + 
    race + income_stand, data = okcdataset)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.6649 -0.7014 -0.1060  0.4382  2.7281 

Coefficients:
                         Estimate Std. Error t value Pr(>|t|)    
(Intercept)               0.09830    0.11432   0.860 0.390468    
goth_stand                0.18931    0.05372   3.524 0.000482 ***
age_stand                -0.02517    0.04958  -0.508 0.611952    
sexMale                  -0.10741    0.12938  -0.830 0.407021    
raceAsian                 0.29912    0.34574   0.865 0.387548    
raceBlack                -0.52444    0.30480  -1.721 0.086218 .  
raceHispanic / Latin     -0.59912    0.27863  -2.150 0.032228 *  
raceIndian                2.16417    0.94936   2.280 0.023238 *  
raceOther                 0.50448    0.36587   1.379 0.168826    
raceSelected over 1 race  0.06093    0.15288   0.399 0.690459    
income_stand             -0.08880    0.05484  -1.619 0.106297    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9447 on 347 degrees of freedom
  (68013 observations deleted due to missingness)
Multiple R-squared:  0.09553,   Adjusted R-squared:  0.06947 
F-statistic: 3.665 on 10 and 347 DF,  p-value: 0.0001136
lr <- lm(data=okcdataset, sexual_unc_stand ~ goth_stand)
summary(lr)

Call:
lm(formula = sexual_unc_stand ~ goth_stand, data = okcdataset)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.8398 -0.6841 -0.2023  0.5602  3.6226 

Coefficients:
            Estimate Std. Error t value            Pr(>|t|)    
(Intercept)  0.02414    0.01562   1.546               0.122    
goth_stand   0.21712    0.01586  13.691 <0.0000000000000002 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9858 on 3990 degrees of freedom
  (64379 observations deleted due to missingness)
Multiple R-squared:  0.04487,   Adjusted R-squared:  0.04463 
F-statistic: 187.4 on 1 and 3990 DF,  p-value: < 0.00000000000000022
lr <- lm(data=okcdataset, sexual_unc_stand ~ goth_stand + age_stand + sex + race + income_stand)
summary(lr)

Call:
lm(formula = sexual_unc_stand ~ goth_stand + age_stand + sex + 
    race + income_stand, data = okcdataset)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.9375 -0.7329 -0.2215  0.5791  3.7706 

Coefficients:
                         Estimate Std. Error t value          Pr(>|t|)    
(Intercept)               0.08614    0.06446   1.336           0.18164    
goth_stand                0.19215    0.02663   7.214 0.000000000000894 ***
age_stand                 0.02739    0.02813   0.973           0.33048    
sexMale                  -0.04802    0.07121  -0.674           0.50023    
raceAsian                -0.53567    0.29168  -1.836           0.06650 .  
raceBlack                 0.03135    0.15463   0.203           0.83938    
raceHispanic / Latin     -0.20170    0.14974  -1.347           0.17819    
raceIndian               -0.16997    0.58084  -0.293           0.76985    
raceMiddle Eastern        0.61235    0.50324   1.217           0.22388    
raceOther                 0.07517    0.19920   0.377           0.70596    
racePacific Islander     -0.92679    1.00645  -0.921           0.35729    
raceSelected over 1 race  0.05904    0.08090   0.730           0.46563    
income_stand             -0.08121    0.02661  -3.052           0.00232 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.003 on 1371 degrees of freedom
  (66987 observations deleted due to missingness)
Multiple R-squared:  0.05431,   Adjusted R-squared:  0.04603 
F-statistic: 6.561 on 12 and 1371 DF,  p-value: 0.00000000001652
lr <- lm(data=okcdataset, homo_stand ~ goth_stand)
summary(lr)

Call:
lm(formula = homo_stand ~ goth_stand, data = okcdataset)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.6957 -0.3558 -0.3558 -0.3558  3.6555 

Coefficients:
            Estimate Std. Error t value             Pr(>|t|)    
(Intercept) 0.053129   0.007238    7.34    0.000000000000221 ***
goth_stand  0.100109   0.007365   13.59 < 0.0000000000000002 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.065 on 21679 degrees of freedom
  (46690 observations deleted due to missingness)
Multiple R-squared:  0.008451,  Adjusted R-squared:  0.008405 
F-statistic: 184.8 on 1 and 21679 DF,  p-value: < 0.00000000000000022
lr <- lm(data=okcdataset, homo_stand ~ goth_stand + age_stand + sex + race + income_stand)
summary(lr)

Call:
lm(formula = homo_stand ~ goth_stand + age_stand + sex + race + 
    income_stand, data = okcdataset)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.1890 -0.4255 -0.2708 -0.1314  4.6393 

Coefficients:
                         Estimate Std. Error t value            Pr(>|t|)    
(Intercept)               0.17256    0.02659   6.491 0.00000000009191845 ***
goth_stand                0.07520    0.01222   6.156 0.00000000078872816 ***
age_stand                -0.09936    0.01333  -7.454 0.00000000000010223 ***
sexMale                  -0.23627    0.02989  -7.904 0.00000000000000316 ***
raceAsian                 0.12864    0.09987   1.288            0.197801    
raceBlack                 0.24845    0.06765   3.672            0.000242 ***
raceHispanic / Latin      0.10336    0.06642   1.556            0.119722    
raceIndian               -0.12225    0.20251  -0.604            0.546068    
raceMiddle Eastern        0.70162    0.29259   2.398            0.016513 *  
raceOther                 0.28544    0.08475   3.368            0.000761 ***
racePacific Islander      0.76735    0.34264   2.239            0.025158 *  
raceSelected over 1 race  0.09102    0.04032   2.258            0.023999 *  
income_stand             -0.05210    0.01452  -3.589            0.000334 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9681 on 6434 degrees of freedom
  (61924 observations deleted due to missingness)
Multiple R-squared:  0.04768,   Adjusted R-squared:  0.04591 
F-statistic: 26.85 on 12 and 6434 DF,  p-value: < 0.00000000000000022

Chart that annotates how often people chose each answer to the goth-id question.

ner_percent <- okcdataset %>%
  filter(!is.na(sex) & !is.na(q18538)) %>%
  group_by(sex, q18538) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(sex) %>%
  mutate(percent = n / sum(n) * 100) %>%
  ungroup()

ner_percent <- ner_percent %>%
  mutate(q18538 = fct_reorder(q18538, percent, .fun = sum, .desc = TRUE))

# Plot
as <- ggplot(ner_percent, aes(x = q18538, y = percent / 100, fill = q18538)) +
  geom_col() +
  facet_wrap(~sex) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  labs(
    title = "",
    subtitle = "",
    caption = "",
    x = "Did you have a goth phase?'",
    y = "%",
    fill = "Response"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(size = 10),
    axis.text.y = element_text(size = 12),
    axis.title.x = element_text(size = 14),
    axis.title.y = element_text(size = 14),
    legend.position = "none")

plot(as)

LS0tDQp0aXRsZTogIkNvZGUgZm9yIGZyaWVuZCdzIHN0dWR5IG9uIGdvdGhzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KQSBmcmllbmQgb2YgbWluZSB3YXMgaGF2aW5nIHN0cnVnZ2xlcyBmaW5pc2hpbmcgYSBwYXBlciB0aGF0IHdhcyBhYm91dCB0aGUgDQpyZWxhdGlvbnNoaXAgYmV0d2VlbiBiZWluZyBnb3RoIGFuZCB2YXJpb3VzIHRyYWl0cywgcGFydGljdWxhcmx5IG1lbnRhbCBpbGxuZXNzLA0KdW5jb252ZW50aW9uYWwgc2V4dWFsIGJlaGF2aW91ciwgYW5kIGhvbW9zZXh1YWxpdHkuIFNoZSByZXF1ZXN0ZWQgYSBjb3JyZWxhdGlvbg0KbWF0cml4LCBhIGZhY3RvciBhbmFseXNpcyBvZiBjb21wb3NpdGUgdmFyaWFibGVzLCBhIHNldCBvZiBsaW5lYXIgcmVncmVzc2lvbiB0YWJsZXMsIA0KYSBjaGFydCBvZiB0aGUgcmF0ZXMgYXQgd2hpY2ggcGVvcGxlIGFuc3dlcmVkIGVhY2ggb3B0aW9uIG9uIA0KdGhlIGdvdGhpYy1pZGVudGlmaWNhdGlvbiBxdWVzdGlvbiBvbiBPS0N1cGlkLiANCg0KU291cmNlIG9mIGRhdGEgaXMgdGhlIE9LQ3VwaWQgZGF0YXNldC4gDQoNCkRhdGEgY2xlYW5pbmcgYW5kIGNvbnZlcnRpbmcgdmFyaWFibGVzIHRvIG51bWVyaWM6DQoNCmBgYHtyfQ0Kc2V0d2QoJ34nKQ0Kc2V0d2QoJ3Jmb2xkZXIvZ290aHMnKQ0KDQpva2NkYXRhc2V0IDwtIHJlYWRfcGFycXVldChmaWxlPSJwYXJzZWRfZGF0YV9wdWJsaWMucGFycXVldCIpDQpzYXZlZHN6eGV0IDwtIG9rY2RhdGFzZXQNCm9rY2RhdGFzZXQgPC0gc2F2ZWRzenhldA0KDQpva2NkYXRhc2V0JGJyaXQgPC0gTkENCm9rY2RhdGFzZXQkYnJpdFshaXMubmEob2tjZGF0YXNldCRkX2NvdW50cnkpXSA8LSAwDQpva2NkYXRhc2V0JGJyaXRbbmNoYXIoYXMuY2hhcmFjdGVyKG9rY2RhdGFzZXQkZF9jb3VudHJ5KSkgPT0gMl0gPC0gMQ0Kb2tjZGF0YXNldCRicml0W29rY2RhdGFzZXQkZF9jb3VudHJ5PT0nSXJlbGFuZCddIDwtIDENCm9rY2RhdGFzZXQkYnJpdFtva2NkYXRhc2V0JGRfY291bnRyeT09J0F1c3RyYWxpYSddIDwtIDENCm9rY2RhdGFzZXQkYnJpdFtva2NkYXRhc2V0JGRfY291bnRyeT09J05ldyBaZWFsYW5kJ10gPC0gMQ0Kb2tjZGF0YXNldCRicml0W29rY2RhdGFzZXQkZF9jb3VudHJ5PT0nVUsnXSA8LSAxDQoNCm9rY2RhdGFzZXQkc2V4dWFsaXR5IDwtIG9rY2RhdGFzZXQkZF9vcmllbnRhdGlvbg0Kb2tjZGF0YXNldCRzZXh1YWxpdHlbb2tjZGF0YXNldCRzZXh1YWxpdHk9PSJQYW5zZXh1YWwiXSA8LSAiQmlzZXh1YWwiDQpva2NkYXRhc2V0JHNleHVhbGl0eVtva2NkYXRhc2V0JHNleHVhbGl0eT09IlN0cmFpZ2h0LCBHYXkiXSA8LSAiQmlzZXh1YWwiDQpva2NkYXRhc2V0JHNleHVhbGl0eVtva2NkYXRhc2V0JHNleHVhbGl0eT09IkhldGVyb2ZsZXhpYmxlIl0gPC0gIkJpc2V4dWFsIg0Kb2tjZGF0YXNldCRzZXh1YWxpdHlbb2tjZGF0YXNldCRzZXh1YWxpdHk9PSJIb21vZmxleGlibGUiXSA8LSAiQmlzZXh1YWwiDQpva2NkYXRhc2V0JHNleHVhbGl0eVtva2NkYXRhc2V0JHNleHVhbGl0eT09Ikxlc2JpYW4iXSA8LSAiR2F5Ig0Kb2tjZGF0YXNldCRzZXh1YWxpdHlbb2tjZGF0YXNldCRzZXh1YWxpdHk9PSJCaXNleHVhbCwgUGFuc2V4dWFsIl0gPC0gIkJpc2V4dWFsIg0Kb2tjZGF0YXNldCRzZXh1YWxpdHlbb2tjZGF0YXNldCRzZXh1YWxpdHk9PSJTdHJhaWdodCwgQmlzZXh1YWwiXSA8LSAiQmlzZXh1YWwiDQpva2NkYXRhc2V0JHNleHVhbGl0eVtva2NkYXRhc2V0JHNleHVhbGl0eT09IlN0cmFpZ2h0LCBCaXNleHVhbCwgSGV0ZXJvZmxleGlibGUiXSA8LSAiQmlzZXh1YWwiDQpva2NkYXRhc2V0JHNleHVhbGl0eVtva2NkYXRhc2V0JHNleHVhbGl0eT09IlN0cmFpZ2h0LCBQYW5zZXh1YWwiXSA8LSAiQmlzZXh1YWwiDQpva2NkYXRhc2V0JHNleHVhbGl0eVtva2NkYXRhc2V0JHNleHVhbGl0eT09IkhldGVyb2ZsZXhpYmxlLCBCaXNleHVhbCJdIDwtICJCaXNleHVhbCINCm9rY2RhdGFzZXQkc2V4dWFsaXR5W29rY2RhdGFzZXQkc2V4dWFsaXR5PT0iUGFuc2V4dWFsLCBCaXNleHVhbCJdIDwtICJCaXNleHVhbCINCm9rY2RhdGFzZXQkc2V4dWFsaXR5W29rY2RhdGFzZXQkc2V4dWFsaXR5PT0iSG9tb2ZsZXhpYmxlLCBIZXRlcm9mbGV4aWJsZSwgUGFuc2V4dWFsLCBCaXNleHVhbCJdIDwtICJCaXNleHVhbCINCm9rY2RhdGFzZXQkc2V4dWFsaXR5WyEob2tjZGF0YXNldCRzZXh1YWxpdHk9PSJCaXNleHVhbCIgfCBva2NkYXRhc2V0JHNleHVhbGl0eT09IlN0cmFpZ2h0IiB8IG9rY2RhdGFzZXQkc2V4dWFsaXR5PT0iR2F5IiB8IGlzLm5hKG9rY2RhdGFzZXQkc2V4dWFsaXR5KSldIDwtICJPdGhlciINCg0Kb2tjZGF0YXNldCRyYWNlIDwtIG9rY2RhdGFzZXQkZF9ldGhuaWNpdHkNCm9rY2RhdGFzZXQkcmFjZVshKG9rY2RhdGFzZXQkZF9ldGhuaWNpdHk9PSdBc2lhbicgfCBva2NkYXRhc2V0JGRfZXRobmljaXR5PT0nQmxhY2snIHwgb2tjZGF0YXNldCRkX2V0aG5pY2l0eT09J0luZGlhbicgfCBva2NkYXRhc2V0JGRfZXRobmljaXR5PT0nV2hpdGUnIHwgb2tjZGF0YXNldCRkX2V0aG5pY2l0eT09J0hpc3BhbmljIC8gTGF0aW4nIHwgb2tjZGF0YXNldCRkX2V0aG5pY2l0eT09J1doaXRlJyB8IG9rY2RhdGFzZXQkZF9ldGhuaWNpdHk9PSdNaWRkbGUgRWFzdGVybicgfCBva2NkYXRhc2V0JGRfZXRobmljaXR5PT0nUGFjaWZpYyBJc2xhbmRlcicgfCBva2NkYXRhc2V0JGRfZXRobmljaXR5PT0nT3RoZXInIHwgaXMubmEob2tjZGF0YXNldCRkX2V0aG5pY2l0eSkpXSA8LSAnU2VsZWN0ZWQgb3ZlciAxIHJhY2UnDQoNCm9rY2RhdGFzZXQkc2V4IDwtIE5BDQpva2NkYXRhc2V0JHNleFtva2NkYXRhc2V0JGdlbmRlcj09J01hbiddIDwtICdNYWxlJw0Kb2tjZGF0YXNldCRzZXhbb2tjZGF0YXNldCRnZW5kZXI9PSdXb21hbiddIDwtICdGZW1hbGUnDQoNCm9rY2RhdGFzZXQkc2V4IDwtIHJlbGV2ZWwoZmFjdG9yKG9rY2RhdGFzZXQkc2V4KSwgcmVmID0gIkZlbWFsZSIpDQpva2NkYXRhc2V0JHNleHVhbGl0eSA8LSByZWxldmVsKGZhY3Rvcihva2NkYXRhc2V0JHNleHVhbGl0eSksIHJlZiA9ICJTdHJhaWdodCIpDQpva2NkYXRhc2V0JHJhY2UgPC0gcmVsZXZlbChmYWN0b3Iob2tjZGF0YXNldCRyYWNlKSwgcmVmID0gIldoaXRlIikNCm9rY2RhdGFzZXQkZF9qb2JbaXMubmEob2tjZGF0YXNldCRkX2pvYildIDwtICdNaXNzaW5nJw0Kb2tjZGF0YXNldCRkX2pvYiA8LSByZWxldmVsKGZhY3Rvcihva2NkYXRhc2V0JGRfam9iKSwgcmVmID0gIk1pc3NpbmciKQ0Kb2tjZGF0YXNldCRkX2NvdW50cnkgPC0gcmVsZXZlbChmYWN0b3Iob2tjZGF0YXNldCRkX2NvdW50cnkpLCByZWYgPSAiVUsiKQ0KDQpwcmludChva2NkYXRhc2V0ICU+JSBncm91cF9ieShkX2pvYikgJT4lIHN1bW1hcmlzZShuID0gbigpKSwgbj0xMDApDQoNCm9rY2RhdGFzZXQkYW5pbWUgPC0gTkENCm9rY2RhdGFzZXQkYW5pbWVbb2tjZGF0YXNldCRxMTg1PT0nWWVzJ10gPC0gMQ0Kb2tjZGF0YXNldCRhbmltZVtva2NkYXRhc2V0JHExODU9PSdObyddIDwtIDANCg0Kb2tjZGF0YXNldCRkYW5jZXRvcGxlc3MgPC0gTkENCm9rY2RhdGFzZXQkZGFuY2V0b3BsZXNzW29rY2RhdGFzZXQkcTEzNzk9PSdObyddIDwtIDANCm9rY2RhdGFzZXQkZGFuY2V0b3BsZXNzW29rY2RhdGFzZXQkcTEzNzk9PSdZZXMnXSA8LSAxDQoNCm9rY2RhdGFzZXQkbnVtaW5jb21lIDwtIE5BDQpva2NkYXRhc2V0JG51bWluY29tZVtva2NkYXRhc2V0JGRfaW5jb21lPT0nTGVzcyB0aGFuICQyMCwwMDAnXSA8LSAxMDAwMA0Kb2tjZGF0YXNldCRudW1pbmNvbWVbb2tjZGF0YXNldCRkX2luY29tZT09JyQyMCwwMDAtJDMwLDAwMCddIDwtIDI1MDAwDQpva2NkYXRhc2V0JG51bWluY29tZVtva2NkYXRhc2V0JGRfaW5jb21lPT0nJDUwLDAwMC0kNjAsMDAwJ10gPC0gNTUwMDANCm9rY2RhdGFzZXQkbnVtaW5jb21lW29rY2RhdGFzZXQkZF9pbmNvbWU9PSckMzAsMDAwLSQ0MCwwMDAnXSA8LSAzNTAwMA0Kb2tjZGF0YXNldCRudW1pbmNvbWVbb2tjZGF0YXNldCRkX2luY29tZT09JyQ0MCwwMDAtJDUwLDAwMCddIDwtIDQ1MDAwDQpva2NkYXRhc2V0JG51bWluY29tZVtva2NkYXRhc2V0JGRfaW5jb21lPT0nJDgwLDAwMC0kMTAwLDAwMCddIDwtIDkwMDAwDQpva2NkYXRhc2V0JG51bWluY29tZVtva2NkYXRhc2V0JGRfaW5jb21lPT0nJDYwLDAwMC0kNzAsMDAwJ10gPC0gNjUwMDANCm9rY2RhdGFzZXQkbnVtaW5jb21lW29rY2RhdGFzZXQkZF9pbmNvbWU9PSdNb3JlIHRoYW4gJDEsMDAwLDAwMCddIDwtIE5BDQpva2NkYXRhc2V0JG51bWluY29tZVtva2NkYXRhc2V0JGRfaW5jb21lPT0nJDEwMCwwMDAtJDE1MCwwMDAnXSA8LSAxMjUwMDANCm9rY2RhdGFzZXQkbnVtaW5jb21lW29rY2RhdGFzZXQkZF9pbmNvbWU9PSckNzAsMDAwLSQ4MCwwMDAnXSA8LSA3NTAwMA0Kb2tjZGF0YXNldCRudW1pbmNvbWVbb2tjZGF0YXNldCRkX2luY29tZT09JyQyNTAsMDAwLSQ1MDAsMDAwJ10gPC0gMzc1MDAwDQpva2NkYXRhc2V0JG51bWluY29tZVtva2NkYXRhc2V0JGRfaW5jb21lPT0nJDE1MCwwMDAtJDI1MCwwMDAnXSA8LSAyMDAwMDANCm9rY2RhdGFzZXQkbnVtaW5jb21lW29rY2RhdGFzZXQkZF9pbmNvbWU9PSckNTAwLDAwMC0kMSwwMDAsMDAwJ10gPC0gNzUwMDAwDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0Kb2tjZGF0YXNldCRzZWVuX3RoZXJhcGlzdCA8LSBOQQ0Kb2tjZGF0YXNldCRzZWVuX3RoZXJhcGlzdFtva2NkYXRhc2V0JHE1MD09J1llcyddIDwtIDENCm9rY2RhdGFzZXQkc2Vlbl90aGVyYXBpc3Rbb2tjZGF0YXNldCRxNTA9PSdObyddIDwtIDANCg0Kb2tjZGF0YXNldCRtdWNoX2RlcHJlc3Npb24gPC0gTkENCm9rY2RhdGFzZXQkbXVjaF9kZXByZXNzaW9uW29rY2RhdGFzZXQkcTE1NTI9PSJBbG1vc3QgbmV2ZXIsIEknbSBoYXBweSEiXSA8LSAwDQpva2NkYXRhc2V0JG11Y2hfZGVwcmVzc2lvbltva2NkYXRhc2V0JHExNTUyPT0iU29tZXRpbWVzLCB3aGVuIGl0J3MgYSBiYWQgZGF5Il0gPC0gMQ0Kb2tjZGF0YXNldCRtdWNoX2RlcHJlc3Npb25bb2tjZGF0YXNldCRxMTU1Mj09IlllYWgsIGRlc3BhaXIgaXMgbXkgbGlmZSJdIDwtIDINCg0Kb2tjZGF0YXNldCRlbW90aW9uYWxfZGl2ZXJzaXR5IDwtIE5BDQpva2NkYXRhc2V0JGVtb3Rpb25hbF9kaXZlcnNpdHlbb2tjZGF0YXNldCRxNjAyMT09IkkgZ2V0IGV4dHJlbWVseSBoYXBweSBidXQgcmFyZWx5IGRlcHJlc3NlZCJdIDwtIDENCm9rY2RhdGFzZXQkZW1vdGlvbmFsX2RpdmVyc2l0eVtva2NkYXRhc2V0JHE2MDIxPT0iSSBkb24ndCBmZWVsIG11Y2ggb2YgZWl0aGVyIl0gPC0gMA0Kb2tjZGF0YXNldCRlbW90aW9uYWxfZGl2ZXJzaXR5W29rY2RhdGFzZXQkcTYwMjE9PSJJIGdldCBleHRyZW1lbHkgZGVwcmVzc2VkIGFuZCBJJ20gcmFyZWx5IGhhcHB5Il0gPC0gMQ0Kb2tjZGF0YXNldCRlbW90aW9uYWxfZGl2ZXJzaXR5W29rY2RhdGFzZXQkcTYwMjE9PSJJIGRvbid0IGZlZWwgbXVjaCBvZiBlaXRoZXIiXSA8LSAyDQoNCm9rY2RhdGFzZXQkaGFwcHlfd2l0aF9saWZlIDwtIE5BDQpva2NkYXRhc2V0JGhhcHB5X3dpdGhfbGlmZVtva2NkYXRhc2V0JHE0MDE4PT0iWWVzIl0gPC0gMQ0Kb2tjZGF0YXNldCRoYXBweV93aXRoX2xpZmVbb2tjZGF0YXNldCRxNDAxOD09Ik5vIl0gPC0gMA0KDQp1bmlxdWUob2tjZGF0YXNldCRxNDgyNzgpDQoNCm9rY2RhdGFzZXQkb3Blbl90b19wb2x5IDwtIE5BDQpva2NkYXRhc2V0JG9wZW5fdG9fcG9seVtva2NkYXRhc2V0JHEzMzEwNz09IkkgYW0gY29tbWl0ZWQgdG8gdG90YWwgbW9ub2dhbXkiXSA8LSAwDQpva2NkYXRhc2V0JG9wZW5fdG9fcG9seVtva2NkYXRhc2V0JHEzMzEwNz09IkkgY291bGQgYmUgY29udmluY2VkIGJ5IHRoZSByaWdodCBwZW9wbGUiXSA8LSAxDQpva2NkYXRhc2V0JG9wZW5fdG9fcG9seVtva2NkYXRhc2V0JHEzMzEwNz09IlllcywgSSBsaWtlIHRoYXQgdHlwZSBvZiBwb2x5Z2FteS4iXSA8LSAyDQpva2NkYXRhc2V0JG9wZW5fdG9fcG9seVtva2NkYXRhc2V0JHEzMzEwNz09IkkgaGF2ZSBvcGVuIHJlbGF0aW9uc2hpcHMgb25seSJdIDwtIDMNCg0Kb2tjZGF0YXNldCRvcGVuX3RvX2RhdGluZ19wb2x5IDwtIE5BDQpva2NkYXRhc2V0JG9wZW5fdG9fZGF0aW5nX3BvbHlbb2tjZGF0YXNldCRxNDgyNzg9PSJZZXMuIl0gPC0gMQ0Kb2tjZGF0YXNldCRvcGVuX3RvX2RhdGluZ19wb2x5W29rY2RhdGFzZXQkcTQ4Mjc4PT0iTm8uIl0gPC0gMA0KDQpva2NkYXRhc2V0JHByZWZfcG9seSA8LSBOQQ0Kb2tjZGF0YXNldCRwcmVmX3BvbHlbb2tjZGF0YXNldCRxMzc3NzI9PSJNb25vZ2FteSJdIDwtIDANCm9rY2RhdGFzZXQkcHJlZl9wb2x5W29rY2RhdGFzZXQkcTM3NzcyPT0iUGxheWluZyB0aGUgZmllbGQiXSA8LSAxDQpva2NkYXRhc2V0JHByZWZfcG9seVtva2NkYXRhc2V0JHEzNzc3Mj09IkFuIG9wZW4gcmVsYXRpb25zaGlwIl0gPC0gMg0Kb2tjZGF0YXNldCRwcmVmX3BvbHlbb2tjZGF0YXNldCRxMzc3NzI9PSJQb2x5YW1vcnkiXSA8LSAzDQoNCnVuaXF1ZShva2NkYXRhc2V0JHExNTQxNCkNCg0Kb2tjZGF0YXNldCRtYXJpanVhbmEgPC0gTkENCm9rY2RhdGFzZXQkbWFyaWp1YW5hW29rY2RhdGFzZXQkcTc5PT0iTmV2ZXIuIl0gPC0gMA0Kb2tjZGF0YXNldCRtYXJpanVhbmFbb2tjZGF0YXNldCRxNzk9PSJJIHNtb2tlZCBpbiB0aGUgcGFzdCwgYnV0IG5vIGxvbmdlci4iXSA8LSAxDQpva2NkYXRhc2V0JG1hcmlqdWFuYVtva2NkYXRhc2V0JHE3OT09Ikkgc21va2Ugb2NjYXNpb25hbGx5LiJdIDwtIDINCm9rY2RhdGFzZXQkbWFyaWp1YW5hW29rY2RhdGFzZXQkcTc5PT0iSSBzbW9rZSByZWd1bGFybHkuIl0gPC0gMw0KDQpva2NkYXRhc2V0JGRydWdfdXNlIDwtIE5BDQpva2NkYXRhc2V0JGRydWdfdXNlW29rY2RhdGFzZXQkcTgwPT0iSSBuZXZlciBkbyBkcnVncy4iXSA8LSAwDQpva2NkYXRhc2V0JGRydWdfdXNlW29rY2RhdGFzZXQkcTgwPT0iSSd2ZSBkb25lIGRydWdzIGluIHRoZSBwYXN0LCBidXQgbm8gbG9uZ2VyLiJdIDwtIDENCm9rY2RhdGFzZXQkZHJ1Z191c2Vbb2tjZGF0YXNldCRxODA9PSJJIGRvIGRydWdzIG9jY2FzaW9uYWxseS4iXSA8LSAyDQpva2NkYXRhc2V0JGRydWdfdXNlW29rY2RhdGFzZXQkcTgwPT0iSSBkbyBkcnVncyByZWd1bGFybHkuIl0gPC0gMw0KDQpva2NkYXRhc2V0JHBzeWNoZWRlbGljc191c2UgPC0gTkENCm9rY2RhdGFzZXQkcHN5Y2hlZGVsaWNzX3VzZVtva2NkYXRhc2V0JHExNTQxND09Ik5vLCBJIGhhdmUgbm90IHVzZWQgdGhlbSBhbmQgSSB3b3VsZCBub3QgdHJ5IHRoZW0uIl0gPC0gMA0Kb2tjZGF0YXNldCRwc3ljaGVkZWxpY3NfdXNlW29rY2RhdGFzZXQkcTE1NDE0PT0iTm8sIEkgaGF2ZSBub3QgdXNlZCB0aGVtIGJ1dCBJIHdvdWxkIHRyeSB0aGVtLiJdIDwtIDENCm9rY2RhdGFzZXQkcHN5Y2hlZGVsaWNzX3VzZVtva2NkYXRhc2V0JHExNTQxND09IlllcywgSSBoYXZlIHVzZWQgcHN5Y2hlZGVsaWMgZHJ1Z3MuIl0gPC0gMg0KDQp1bmlxdWUob2tjZGF0YXNldCRxODgpDQoNCm9rY2RhdGFzZXQkYnJ1c2hpbmdfdGVldGggPC0gTkENCm9rY2RhdGFzZXQkYnJ1c2hpbmdfdGVldGhbb2tjZGF0YXNldCRxMTI5NzA9PSJSYXJlbHkgLyBuZXZlciJdIDwtIDANCm9rY2RhdGFzZXQkYnJ1c2hpbmdfdGVldGhbb2tjZGF0YXNldCRxMTI5NzA9PSJPbmx5IG9uIGRheXMgSSBmZWVsIGxpa2UgaXQiXSA8LSAxDQpva2NkYXRhc2V0JGJydXNoaW5nX3RlZXRoW29rY2RhdGFzZXQkcTEyOTcwPT0iT25jZSBhIGRheSJdIDwtIDINCm9rY2RhdGFzZXQkYnJ1c2hpbmdfdGVldGhbb2tjZGF0YXNldCRxMTI5NzA9PSJUd2ljZSBvciBtb3JlIGEgZGF5Il0gPC0gMw0KDQpva2NkYXRhc2V0JHNob3dlcmluZyA8LSBOQQ0Kb2tjZGF0YXNldCRzaG93ZXJpbmdbb2tjZGF0YXNldCRxMTA2Mj09Ik9uY2UgYSB3ZWVrIG9yIGxlc3MuIl0gPC0gMA0Kb2tjZGF0YXNldCRzaG93ZXJpbmdbb2tjZGF0YXNldCRxMTA2Mj09IkEgY291cGxlIHRpbWVzIGEgd2Vlay4iXSA8LSAxDQpva2NkYXRhc2V0JHNob3dlcmluZ1tva2NkYXRhc2V0JHExMDYyPT0iVXN1YWxseSBkYWlseS4gIEkgc2tpcCBzb21lLiJdIDwtIDINCm9rY2RhdGFzZXQkc2hvd2VyaW5nW29rY2RhdGFzZXQkcTEwNjI9PSJBdCBsZWFzdCBvbmNlIGEgZGF5LiJdIDwtIDMNCg0Kb2tjZGF0YXNldCRtZXNzX2NsZWFuaW5nIDwtIE5BDQpva2NkYXRhc2V0JG1lc3NfY2xlYW5pbmdbb2tjZGF0YXNldCRxMzU0MDk9PSJOb3QgY2xlYW51cCBhdCBhbGwuIl0gPC0gMA0Kb2tjZGF0YXNldCRtZXNzX2NsZWFuaW5nW29rY2RhdGFzZXQkcTM1NDA5PT0iUG9zdHBvbmUgdGhlIGNsZWFudXAgZm9yIGxhdGVyLiJdIDwtIDENCm9rY2RhdGFzZXQkbWVzc19jbGVhbmluZ1tva2NkYXRhc2V0JHEzNTQwOT09IkNsZWFuIHVwIGltbWVkaWF0ZWx5IGFmdGVyIGVhdGluZy4iXSA8LSAyDQpva2NkYXRhc2V0JG1lc3NfY2xlYW5pbmdbb2tjZGF0YXNldCRxMzU0MDk9PSJDbGVhbiB1cCBpbW1lZGlhdGVseS4iXSA8LSAzDQoNCm9rY2RhdGFzZXQkYmF0aHJvb21fY2xlYW5saW5lc3MgPC0gTkENCm9rY2RhdGFzZXQkYmF0aHJvb21fY2xlYW5saW5lc3Nbb2tjZGF0YXNldCRxNDEwOTk9PSJEaXNndXN0aW5nISBldmVuIEkgY3JpbmdlIHdoZW4gSSBoYXZlIHRvIHVzZSBpdCEiXSA8LSAwDQpva2NkYXRhc2V0JGJhdGhyb29tX2NsZWFubGluZXNzW29rY2RhdGFzZXQkcTQxMDk5PT0iTm90IGF3ZnVsLCBidXQgaXQgY291bGQgdXNlIGEgZ29vZCBjbGVhbmluZy4iXSA8LSAxDQpva2NkYXRhc2V0JGJhdGhyb29tX2NsZWFubGluZXNzW29rY2RhdGFzZXQkcTQxMDk5PT0iQ2xlYW4taXNoIGJ1dCBjb3VsZCB1c2UgYSBxdWljayB0b3VjaC11cC4iXSA8LSAyDQpva2NkYXRhc2V0JGJhdGhyb29tX2NsZWFubGluZXNzW29rY2RhdGFzZXQkcTQxMDk5PT0iU3BvdGxlc3MsIHNoaW55LCBnZXJtLWZyZWUsIGNsZWFuIGNsZWFuIGNsZWFuLiJdIDwtIDMNCg0Kb2tjZGF0YXNldCRtZXNzaW5lc3MgPC0gTkENCm9rY2RhdGFzZXQkbWVzc2luZXNzW29rY2RhdGFzZXQkcTg4PT0iSSdtIHZlcnkgbWVzc3kiXSA8LSAzDQpva2NkYXRhc2V0JG1lc3NpbmVzc1tva2NkYXRhc2V0JHE4OD09IkknbSBhdmVyYWdlIl0gPC0gMg0Kb2tjZGF0YXNldCRtZXNzaW5lc3Nbb2tjZGF0YXNldCRxODg9PSJJJ20gbW9zdGx5IG9yZ2FuaXplZCJdIDwtIDENCm9rY2RhdGFzZXQkbWVzc2luZXNzW29rY2RhdGFzZXQkcTg4PT0iSSdtIGNvbXB1bHNpdmVseSBuZWF0Il0gPC0gMA0KDQp1bmlxdWUob2tjZGF0YXNldCRxMjM2OTYpDQoNCm9rY2RhdGFzZXQkYW5ncnlfdmlkZW9fZ2FtZXMgPC0gTkENCm9rY2RhdGFzZXQkYW5ncnlfdmlkZW9fZ2FtZXNbb2tjZGF0YXNldCRxNDMzMDQ9PSJOZXZlciJdIDwtIDANCm9rY2RhdGFzZXQkYW5ncnlfdmlkZW9fZ2FtZXNbb2tjZGF0YXNldCRxNDMzMDQ9PSJTb21ldGltZXMiXSA8LSAxDQpva2NkYXRhc2V0JGFuZ3J5X3ZpZGVvX2dhbWVzW29rY2RhdGFzZXQkcTQzMzA0PT0iVXN1YWxseSJdIDwtIDINCg0Kb2tjZGF0YXNldCRnZW5lcmFsX2FuZ3J5IDwtIE5BDQpva2NkYXRhc2V0JGdlbmVyYWxfYW5ncnlbb2tjZGF0YXNldCRxMTA1Mj09IlJhcmVseSJdIDwtIDANCm9rY2RhdGFzZXQkZ2VuZXJhbF9hbmdyeVtva2NkYXRhc2V0JHExMDUyPT0iU29tZXRpbWVzIl0gPC0gMQ0Kb2tjZGF0YXNldCRnZW5lcmFsX2FuZ3J5W29rY2RhdGFzZXQkcTEwNTI9PSJWZXJ5IG9mdGVuIl0gPC0gMg0KDQpva2NkYXRhc2V0JHF1aWV0bHlfYW5ncnkgPC0gTkENCm9rY2RhdGFzZXQkcXVpZXRseV9hbmdyeVtva2NkYXRhc2V0JHE2Njg5PT0iWWVzIl0gPC0gMQ0Kb2tjZGF0YXNldCRxdWlldGx5X2FuZ3J5W29rY2RhdGFzZXQkcTY2ODk9PSJObyJdIDwtIDANCg0Kb2tjZGF0YXNldCR0aHJvd2luZ19vYmplY3RzIDwtIE5BDQpva2NkYXRhc2V0JHRocm93aW5nX29iamVjdHNbb2tjZGF0YXNldCRxMjM2OTY9PSJOZXZlciJdIDwtIDANCm9rY2RhdGFzZXQkdGhyb3dpbmdfb2JqZWN0c1tva2NkYXRhc2V0JHEyMzY5Nj09IlVzZWQgdG8sIGJ1dCBub3QgYW55IG1vcmUiXSA8LSAxDQpva2NkYXRhc2V0JHRocm93aW5nX29iamVjdHNbb2tjZGF0YXNldCRxMjM2OTY9PSJTb21ldGltZXMiXSA8LSAyDQpva2NkYXRhc2V0JHRocm93aW5nX29iamVjdHNbb2tjZGF0YXNldCRxMjM2OTY9PSJZZXMsIGZyZXF1ZW50bHkiXSA8LSAzDQoNCnVuaXF1ZShva2NkYXRhc2V0JHExMzMpDQoNCm9rY2RhdGFzZXQkc2l4X3BhY2tfaW1wb3J0YW5jZSA8LSBOQQ0Kb2tjZGF0YXNldCRzaXhfcGFja19pbXBvcnRhbmNlW29rY2RhdGFzZXQkcTg0MjIzPT0iSGlkZSB0aGVtIHdpdGggZmF0LCBwbGVhc2UuIl0gPC0gMA0Kb2tjZGF0YXNldCRzaXhfcGFja19pbXBvcnRhbmNlW29rY2RhdGFzZXQkcTg0MjIzPT0iTm90IGF0IGFsbCBpbXBvcnRhbnQuIl0gPC0gMQ0Kb2tjZGF0YXNldCRzaXhfcGFja19pbXBvcnRhbmNlW29rY2RhdGFzZXQkcTg0MjIzPT0iU29tZXdoYXQgaW1wb3J0YW50LiJdIDwtIDINCm9rY2RhdGFzZXQkc2l4X3BhY2tfaW1wb3J0YW5jZVtva2NkYXRhc2V0JHE4NDIyMz09IlZlcnkgaW1wb3J0YW50LiJdIDwtIDMNCg0Kb2tjZGF0YXNldCRwaHlzaWNhbF9zaGFwZSA8LSBOQQ0Kb2tjZGF0YXNldCRwaHlzaWNhbF9zaGFwZVtva2NkYXRhc2V0JHExMjY9PSJTaGl0dHkiXSA8LSAwDQpva2NkYXRhc2V0JHBoeXNpY2FsX3NoYXBlW29rY2RhdGFzZXQkcTEyNj09IkF2ZXJhZ2UiXSA8LSAxDQpva2NkYXRhc2V0JHBoeXNpY2FsX3NoYXBlW29rY2RhdGFzZXQkcTEyNj09IkdyZWF0Il0gPC0gMg0KDQpva2NkYXRhc2V0JHBoeXNpY2FsX3N0cmVuZ3RoIDwtIE5BDQpva2NkYXRhc2V0JHBoeXNpY2FsX3N0cmVuZ3RoW29rY2RhdGFzZXQkcTEzMz09Ik5vLCBub3QgcmVhbGx5Il0gPC0gMA0Kb2tjZGF0YXNldCRwaHlzaWNhbF9zdHJlbmd0aFtva2NkYXRhc2V0JHExMzM9PSJBdmVyYWdlIl0gPC0gMQ0Kb2tjZGF0YXNldCRwaHlzaWNhbF9zdHJlbmd0aFtva2NkYXRhc2V0JHExMzM9PSJZZXMsIHZlcnkiXSA8LSAyDQoNCm9rY2RhdGFzZXQkZ29vZF9wb3N0dXJlIDwtIE5BDQpva2NkYXRhc2V0JGdvb2RfcG9zdHVyZVtva2NkYXRhc2V0JHEyMzMxMT09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRnb29kX3Bvc3R1cmVbb2tjZGF0YXNldCRxMjMzMTE9PSJTb21ldGltZXMsIHdoZW4gdGhlIHNpdHVhdGlvbiBjYWxscyBmb3IgaXQiXSA8LSAxDQpva2NkYXRhc2V0JGdvb2RfcG9zdHVyZVtva2NkYXRhc2V0JHEyMzMxMT09IlllcyJdIDwtIDINCg0KdW5pcXVlKG9rY2RhdGFzZXQkcTE4ODk0KQ0KDQpva2NkYXRhc2V0JHNsZWVwX3RpbWUgPC0gTkENCm9rY2RhdGFzZXQkc2xlZXBfdGltZVtva2NkYXRhc2V0JHExNzM0Mj09IkJ5IDlwbSJdIDwtIDANCm9rY2RhdGFzZXQkc2xlZXBfdGltZVtva2NkYXRhc2V0JHExNzM0Mj09IkJ5IDExcG0iXSA8LSAxDQpva2NkYXRhc2V0JHNsZWVwX3RpbWVbb2tjZGF0YXNldCRxMTczNDI9PSJCeSAxYW0iXSA8LSAyDQpva2NkYXRhc2V0JHNsZWVwX3RpbWVbb2tjZGF0YXNldCRxMTczNDI9PSJMYXRlciJdIDwtIDMNCg0Kb2tjZGF0YXNldCRzbGVlcF90cm91YmxlIDwtIE5BDQpva2NkYXRhc2V0JHNsZWVwX3Ryb3VibGVbb2tjZGF0YXNldCRxNzkxMzQ9PSJOZXZlci4iXSA8LSAwDQpva2NkYXRhc2V0JHNsZWVwX3Ryb3VibGVbb2tjZGF0YXNldCRxNzkxMzQ9PSJSYXJlbHkuIl0gPC0gMQ0Kb2tjZGF0YXNldCRzbGVlcF90cm91YmxlW29rY2RhdGFzZXQkcTc5MTM0PT0iRnJlcXVlbnRseS4iXSA8LSAyDQpva2NkYXRhc2V0JHNsZWVwX3Ryb3VibGVbb2tjZGF0YXNldCRxNzkxMzQ9PSJBbHdheXMuIl0gPC0gMw0KDQpva2NkYXRhc2V0JHNsZWVwaW5nX2R1cmluZ190aGVfZGF5IDwtIE5BDQpva2NkYXRhc2V0JHNsZWVwaW5nX2R1cmluZ190aGVfZGF5W29rY2RhdGFzZXQkcTE4NjQ0PT0iTm8iXSA8LSAwDQpva2NkYXRhc2V0JHNsZWVwaW5nX2R1cmluZ190aGVfZGF5W29rY2RhdGFzZXQkcTE4NjQ0PT0iWWVzIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGluc29tbmlhYyA8LSBOQQ0Kb2tjZGF0YXNldCRpbnNvbW5pYWNbb2tjZGF0YXNldCRxMTg2NDQ9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkaW5zb21uaWFjW29rY2RhdGFzZXQkcTE4NjQ0PT0iT2NjYXNpb25hbGx5Il0gPC0gMQ0Kb2tjZGF0YXNldCRpbnNvbW5pYWNbb2tjZGF0YXNldCRxMTg2NDQ9PSJZZXMiXSA8LSAyDQoNCnVuaXF1ZShva2NkYXRhc2V0JHE4NDAyMykNCg0Kb2tjZGF0YXNldCRsaWZlX3dpdGhvdXRfYWxjb2hvbCA8LSBOQQ0Kb2tjZGF0YXNldCRsaWZlX3dpdGhvdXRfYWxjb2hvbFtva2NkYXRhc2V0JHE4NDAyMz09Ik5vLiJdIDwtIDANCm9rY2RhdGFzZXQkbGlmZV93aXRob3V0X2FsY29ob2xbb2tjZGF0YXNldCRxODQwMjM9PSJZZXMuIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGFsY29ob2xfdXNlIDwtIE5BDQpva2NkYXRhc2V0JGFsY29ob2xfdXNlW29rY2RhdGFzZXQkcTc3PT0iTmV2ZXIiXSA8LSAwDQpva2NkYXRhc2V0JGFsY29ob2xfdXNlW29rY2RhdGFzZXQkcTc3PT0iUmFyZWx5Il0gPC0gMQ0Kb2tjZGF0YXNldCRhbGNvaG9sX3VzZVtva2NkYXRhc2V0JHE3Nz09IlNvbWV0aW1lcyJdIDwtIDINCm9rY2RhdGFzZXQkYWxjb2hvbF91c2Vbb2tjZGF0YXNldCRxNzc9PSJWZXJ5IG9mdGVuIl0gPC0gMw0KDQpva2NkYXRhc2V0JGFsY29ob2xfaW5oaWJpdF9zZXh1YWxfdGVuc2lvbnMgPC0gTkENCm9rY2RhdGFzZXQkYWxjb2hvbF9pbmhpYml0X3NleHVhbF90ZW5zaW9uc1tva2NkYXRhc2V0JHExMjU0MD09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRhbGNvaG9sX2luaGliaXRfc2V4dWFsX3RlbnNpb25zW29rY2RhdGFzZXQkcTEyNTQwPT0iWWVzIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGJsYWNrb3V0X2Zyb21fYWxjb2hvbCA8LSBOQQ0Kb2tjZGF0YXNldCRibGFja291dF9mcm9tX2FsY29ob2xbb2tjZGF0YXNldCRxNDE3PT0iTm8iXSA8LSAwDQpva2NkYXRhc2V0JGJsYWNrb3V0X2Zyb21fYWxjb2hvbFtva2NkYXRhc2V0JHE0MTc9PSJZZXMiXSA8LSAxDQoNCnVuaXF1ZShva2NkYXRhc2V0JHE1NTc0NCkNCg0Kb2tjZGF0YXNldCRidXJuaW5nX293bl9mbGFnX2lsbGVnYWxpdHkgPC0gTkENCm9rY2RhdGFzZXQkYnVybmluZ19vd25fZmxhZ19pbGxlZ2FsaXR5W29rY2RhdGFzZXQkcTE3NT09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRidXJuaW5nX293bl9mbGFnX2lsbGVnYWxpdHlbb2tjZGF0YXNldCRxMTc1PT0iWWVzIl0gPC0gMQ0KDQpva2NkYXRhc2V0JHdvcnRoX21vcmVfdGhhbl9zdHJhbmdlcnMgPC0gTkENCm9rY2RhdGFzZXQkd29ydGhfbW9yZV90aGFuX3N0cmFuZ2Vyc1tva2NkYXRhc2V0JHExNjg9PUZdIDwtIDANCm9rY2RhdGFzZXQkd29ydGhfbW9yZV90aGFuX3N0cmFuZ2Vyc1tva2NkYXRhc2V0JHExNjg9PVRdIDwtIDENCg0Kb2tjZGF0YXNldCRpbnRvX2ZvcmVpZ25fYWNjZW50cyA8LSBOQQ0Kb2tjZGF0YXNldCRpbnRvX2ZvcmVpZ25fYWNjZW50c1tva2NkYXRhc2V0JHExMjk1ND09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRpbnRvX2ZvcmVpZ25fYWNjZW50c1tva2NkYXRhc2V0JHExMjk1ND09IlllcyJdIDwtIDENCg0Kb2tjZGF0YXNldCR3ZWFyaW5nX3NoaXJ0X3dpdGhfZmxhZyA8LSBOQQ0Kb2tjZGF0YXNldCR3ZWFyaW5nX3NoaXJ0X3dpdGhfZmxhZ1tva2NkYXRhc2V0JHE2NjA2Nz09IlJpZGljdWxvdXMvVGFja3kuIl0gPC0gMA0Kb2tjZGF0YXNldCR3ZWFyaW5nX3NoaXJ0X3dpdGhfZmxhZ1tva2NkYXRhc2V0JHE2NjA2Nz09Ikl0cyBvaywgYnV0IG5vdCBmb3IgbWUuIl0gPC0gMQ0Kb2tjZGF0YXNldCR3ZWFyaW5nX3NoaXJ0X3dpdGhfZmxhZ1tva2NkYXRhc2V0JHE2NjA2Nz09IkEgcG9vciBzdWJzdGl0dXRlIGZvciB0cnVlIHBhdHJpb3Rpc20uIl0gPC0gMg0Kb2tjZGF0YXNldCR3ZWFyaW5nX3NoaXJ0X3dpdGhfZmxhZ1tva2NkYXRhc2V0JHE2NjA2Nz09IkEgZmluZSB3YXkgdG8gc2hvdyBuYXRpb25hbCBwcmlkZS4iXSA8LSAzDQoNCm9rY2RhdGFzZXQkcGFydG5lcl9zYW1lX2V0aG5pY2l0eV9hc195b3UgPC0gTkENCm9rY2RhdGFzZXQkcGFydG5lcl9zYW1lX2V0aG5pY2l0eV9hc195b3Vbb2tjZGF0YXNldCRxNTU3NDQ9PSJOby4iXSA8LSAwDQpva2NkYXRhc2V0JHBhcnRuZXJfc2FtZV9ldGhuaWNpdHlfYXNfeW91W29rY2RhdGFzZXQkcTU1NzQ0PT0iVGhpcyB3b3VsZCBub3QgYmUgYW4gaW1wb3J0YW50IGZhY3RvciB0byBtZS4iXSA8LSAxDQpva2NkYXRhc2V0JHBhcnRuZXJfc2FtZV9ldGhuaWNpdHlfYXNfeW91W29rY2RhdGFzZXQkcTU1NzQ0PT0iWWVzLiJdIDwtIDINCg0KdW5pcXVlKG9rY2RhdGFzZXQkcTQ4OCkNCg0Kb2tjZGF0YXNldCRtb25leV9zYXZpbmcgPC0gTkENCm9rY2RhdGFzZXQkbW9uZXlfc2F2aW5nW29rY2RhdGFzZXQkcTE5MTEwPT0iU2F2ZSBzb21lL21vc3Qgb2YgaXQsIGJ1dCBub3QgaW52ZXN0IGl0LiJdIDwtIDINCm9rY2RhdGFzZXQkbW9uZXlfc2F2aW5nW29rY2RhdGFzZXQkcTE5MTEwPT0iU2F2ZSBzb21lL21vc3Qgb2YgaXQgYW5kIGludmVzdCBpdC4iXSA8LSAyDQpva2NkYXRhc2V0JG1vbmV5X3NhdmluZ1tva2NkYXRhc2V0JHExOTExMD09IlNhdmUgc29tZSBmb3IgYW4gZW1lcmdlbmN5IGZ1bmQsIHNwZW5kIHRoZSByZXN0LiJdIDwtIDENCm9rY2RhdGFzZXQkbW9uZXlfc2F2aW5nW29rY2RhdGFzZXQkcTE5MTEwPT0iU3BlbmQgaXQgYWxsIGFuZCBsaXZlIHBheWNoZWNrIHRvIHBheWNoZWNrLiJdIDwtIDANCg0Kb2tjZGF0YXNldCRpbXB1bHNlX3B1cmNoYXNpbmcgPC0gTkENCm9rY2RhdGFzZXQkaW1wdWxzZV9wdXJjaGFzaW5nW29rY2RhdGFzZXQkcTQ4OD09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRpbXB1bHNlX3B1cmNoYXNpbmdbb2tjZGF0YXNldCRxNDg4PT0iWWVzIl0gPC0gMQ0KDQp1bmlxdWUob2tjZGF0YXNldCRxMzgwNTEpDQoNCm9rY2RhdGFzZXQkZ2FtYmxpbmcgPC0gTkENCm9rY2RhdGFzZXQkZ2FtYmxpbmdbb2tjZGF0YXNldCRxMzU2NzM9PSJObywgSSBoYXZlIG5vIGludGVyZXN0IGluIGdhbWJsaW5nLiJdIDwtIDANCm9rY2RhdGFzZXQkZ2FtYmxpbmdbb2tjZGF0YXNldCRxMzU2NzM9PSJObywgaXQgaXMgaWxsZWdhbCBvciBhZ2FpbnN0IHRoZSBydWxlcy4iXSA8LSAwDQpva2NkYXRhc2V0JGdhbWJsaW5nW29rY2RhdGFzZXQkcTM1NjczPT0iWWVzLCBidXQgb25seSBpZiByZWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgc3ViamVjdC4iXSA8LSAxDQpva2NkYXRhc2V0JGdhbWJsaW5nW29rY2RhdGFzZXQkcTM1NjczPT0iWWVzLCBJJ2QgZ2FtYmxlIG9uIGFsbW9zdCBhbnl0aGluZy4iXSA8LSAyDQoNCm9rY2RhdGFzZXQkZ2FtYmxpbmcyIDwtIE5BDQpva2NkYXRhc2V0JGdhbWJsaW5nMltva2NkYXRhc2V0JHEzODA1MT09Ik5ldmVyLiJdIDwtIDANCm9rY2RhdGFzZXQkZ2FtYmxpbmcyW29rY2RhdGFzZXQkcTM4MDUxPT0iUmFyZWx5LiJdIDwtIDENCm9rY2RhdGFzZXQkZ2FtYmxpbmcyW29rY2RhdGFzZXQkcTM4MDUxPT0iT2Z0ZW4uIl0gPC0gMg0KDQp1bmlxdWUob2tjZGF0YXNldCRxMjcyNDMpDQoNCm9rY2RhdGFzZXQkcHJvYmxlbV93aXRoX2F1dGhvcml0eSA8LSBOQQ0Kb2tjZGF0YXNldCRwcm9ibGVtX3dpdGhfYXV0aG9yaXR5W29rY2RhdGFzZXQkcTYzNzc9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkcHJvYmxlbV93aXRoX2F1dGhvcml0eVtva2NkYXRhc2V0JHE2Mzc3PT0iWWVzIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGV2ZXJfYXJyZXN0ZWQgPC0gTkENCm9rY2RhdGFzZXQkZXZlcl9hcnJlc3RlZFtva2NkYXRhc2V0JHEyNTI9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkZXZlcl9hcnJlc3RlZFtva2NkYXRhc2V0JHEyNTI9PSJZZXMiXSA8LSAxDQoNCm9rY2RhdGFzZXQkdHJvdWJsZV9hc19jaGlsZCA8LSBOQQ0Kb2tjZGF0YXNldCR0cm91YmxlX2FzX2NoaWxkW29rY2RhdGFzZXQkcTE4MTY5PT0iSSBuZXZlciBnb3QgaW4gdHJvdWJsZS4iXSA8LSAwDQpva2NkYXRhc2V0JHRyb3VibGVfYXNfY2hpbGRbb2tjZGF0YXNldCRxMTgxNjk9PSJJIG5ldmVyIGdvdCBpbiB0cm91YmxlIGJlY2F1c2UgSSBuZXZlciBnb3QgY2F1Z2h0LiJdIDwtIDENCm9rY2RhdGFzZXQkdHJvdWJsZV9hc19jaGlsZFtva2NkYXRhc2V0JHExODE2OT09IkkgZ290IGluIHRyb3VibGUgYWxsIHRoZSB0aW1lLiJdIDwtIDENCg0Kb2tjZGF0YXNldCRmaWdodHNfd2l0aF9hdXRob3JpdHkgPC0gTkENCm9rY2RhdGFzZXQkZmlnaHRzX3dpdGhfYXV0aG9yaXR5W29rY2RhdGFzZXQkcTI3MjQzPT0iUmFyZWx5IC8gbmV2ZXIiXSA8LSAwDQpva2NkYXRhc2V0JGZpZ2h0c193aXRoX2F1dGhvcml0eVtva2NkYXRhc2V0JHEyNzI0Mz09Ik9mdGVuIl0gPC0gMQ0KDQp1bmlxdWUob2tjZGF0YXNldCRxMTMxMDMpDQoNCm9rY2RhdGFzZXQkcmVjZWl2aW5nX2FuYWxfc2V4IDwtIE5BDQpva2NkYXRhc2V0JHJlY2VpdmluZ19hbmFsX3NleFtva2NkYXRhc2V0JHExMDQwPT0iSSBkb24ndCBsaWtlIGl0IC8gSSBkb24ndCB0aGluayBJIHdvdWxkIGxpa2UgaXQiXSA8LSAwDQpva2NkYXRhc2V0JHJlY2VpdmluZ19hbmFsX3NleFtva2NkYXRhc2V0JHExMDQwPT0iSSBsaWtlIGl0IC8gSSB0aGluayBJIG1pZ2h0IGxpa2UgaXQiXSA8LSAxDQoNCm9rY2RhdGFzZXQkcG9ybl9jb2xsZWN0aW9uIDwtIE5BDQpva2NkYXRhc2V0JHBvcm5fY29sbGVjdGlvbltva2NkYXRhc2V0JHExMzEwMz09IkkgZG9uJ3QgaGF2ZSBvbmUiXSA8LSAwDQpva2NkYXRhc2V0JHBvcm5fY29sbGVjdGlvbltva2NkYXRhc2V0JHExMzEwMz09IlNtYWxsIl0gPC0gMQ0Kb2tjZGF0YXNldCRwb3JuX2NvbGxlY3Rpb25bb2tjZGF0YXNldCRxMTMxMDM9PSJNZWRpdW0iXSA8LSAyDQpva2NkYXRhc2V0JHBvcm5fY29sbGVjdGlvbltva2NkYXRhc2V0JHExMzEwMz09IkxBUkdFIl0gPC0gMw0KDQpva2NkYXRhc2V0JGRhdGluZ19zZXhfd29ya2VyIDwtIE5BDQpva2NkYXRhc2V0JGRhdGluZ19zZXhfd29ya2VyW29rY2RhdGFzZXQkcTE4MDQ4PT0iVGhlIHZlcnkgbm90aW9uIG9mIHRoaXMgcXVlc3Rpb24gb2ZmZW5kcyBtZS4iXSA8LSBOQQ0Kb2tjZGF0YXNldCRkYXRpbmdfc2V4X3dvcmtlcltva2NkYXRhc2V0JHExODA0OD09Ik5vIHdheSEiXSA8LSAwDQpva2NkYXRhc2V0JGRhdGluZ19zZXhfd29ya2VyW29rY2RhdGFzZXQkcTE4MDQ4PT0iRGVwZW5kcy4uLiB3aGF0IGtpbmQgb2Ygc2V4IHdvcmtlcj8iXSA8LSAxDQpva2NkYXRhc2V0JGRhdGluZ19zZXhfd29ya2VyW29rY2RhdGFzZXQkcTE4MDQ4PT0iU3VyZS4gQXQgbGVhc3QgdGhleSBrbm93IHdoYXQgdGhleSdyZSBkb2luZy4iXSA8LSAyDQoNCm9rY2RhdGFzZXQkZGF0aW5nX0hJVl9wb3NpdGl2ZSA8LSBOQQ0Kb2tjZGF0YXNldCRkYXRpbmdfSElWX3Bvc2l0aXZlW29rY2RhdGFzZXQkcTE2MzE3PT0iTm8iXSA8LSAwDQpva2NkYXRhc2V0JGRhdGluZ19ISVZfcG9zaXRpdmVbb2tjZGF0YXNldCRxMTYzMTc9PSJJIGRvbid0IGtub3ciXSA8LSAxDQpva2NkYXRhc2V0JGRhdGluZ19ISVZfcG9zaXRpdmVbb2tjZGF0YXNldCRxMTYzMTc9PSJZZXMiXSA8LSAyDQoNCm9rY2RhdGFzZXQkZGF0aW5nX3RyYW5zX3BlcnNvbiA8LSBOQQ0Kb2tjZGF0YXNldCRkYXRpbmdfdHJhbnNfcGVyc29uW29rY2RhdGFzZXQkcTU0Nj09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRkYXRpbmdfdHJhbnNfcGVyc29uW29rY2RhdGFzZXQkcTU0Nj09IlllcyJdIDwtIDENCg0Kb2tjZGF0YXNldCRkYXRpbmdfaGVycGVzX3Bvc2l0aXZlIDwtIE5BDQpva2NkYXRhc2V0JGRhdGluZ19oZXJwZXNfcG9zaXRpdmVbb2tjZGF0YXNldCRxMTYxOD09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRkYXRpbmdfaGVycGVzX3Bvc2l0aXZlW29rY2RhdGFzZXQkcTE2MTg9PSJZZXMiXSA8LSAxDQoNCm9rY2RhdGFzZXQkZm9vdF9mZXRpc2ggPC0gTkENCm9rY2RhdGFzZXQkZm9vdF9mZXRpc2hbb2tjZGF0YXNldCRxMTk4OTI9PSJObywgSSBkb24ndCBoYXZlIGEgZm9vdCBmZXRpc2giXSA8LSAwDQpva2NkYXRhc2V0JGZvb3RfZmV0aXNoW29rY2RhdGFzZXQkcTE5ODkyPT0iWWVzLCBJIGhhdmUgYSBmb290IGZldGlzaCEiXSA8LSAxDQoNCnVuaXF1ZShva2NkYXRhc2V0JHEzMjMpDQoNCm9rY2RhdGFzZXQkc2VsZl9jb25maWRlbmNlIDwtIE5BDQpva2NkYXRhc2V0JHNlbGZfY29uZmlkZW5jZVtva2NkYXRhc2V0JHEyMDkzMD09IkJlbG93IGF2ZXJhZ2UiXSA8LSAwDQpva2NkYXRhc2V0JHNlbGZfY29uZmlkZW5jZVtva2NkYXRhc2V0JHEyMDkzMD09IkF2ZXJhZ2UiXSA8LSAxDQpva2NkYXRhc2V0JHNlbGZfY29uZmlkZW5jZVtva2NkYXRhc2V0JHEyMDkzMD09IkhpZ2hlciB0aGFuIGF2ZXJhZ2UiXSA8LSAyDQpva2NkYXRhc2V0JHNlbGZfY29uZmlkZW5jZVtva2NkYXRhc2V0JHEyMDkzMD09IlZlcnksIHZlcnkgaGlnaCJdIDwtIDMNCg0Kb2tjZGF0YXNldCRjb21mb3J0YWJsZV93aXRoX3lvdXJzZWxmIDwtIE5BDQpva2NkYXRhc2V0JGNvbWZvcnRhYmxlX3dpdGhfeW91cnNlbGZbb2tjZGF0YXNldCRxMjA0NTI9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkY29tZm9ydGFibGVfd2l0aF95b3Vyc2VsZltva2NkYXRhc2V0JHEyMDQ1Mj09IlllcyJdIDwtIDENCg0Kb2tjZGF0YXNldCRzZWxmX2VzdGVlbSA8LSBOQQ0Kb2tjZGF0YXNldCRzZWxmX2VzdGVlbVtva2NkYXRhc2V0JHExOTY5MT09IkxvdyJdIDwtIDANCm9rY2RhdGFzZXQkc2VsZl9lc3RlZW1bb2tjZGF0YXNldCRxMTk2OTE9PSJOZWl0aGVyIGhpZ2ggbm9yIGxvdyJdIDwtIDENCm9rY2RhdGFzZXQkc2VsZl9lc3RlZW1bb2tjZGF0YXNldCRxMTk2OTE9PSJIaWdoIl0gPC0gMg0KDQpva2NkYXRhc2V0JHNleHVhbF9jb25maWRlbmNlIDwtIE5BDQpva2NkYXRhc2V0JHNleHVhbF9jb25maWRlbmNlW29rY2RhdGFzZXQkcTMyMz09Ik5vdCByZWFsbHkgY29uZmlkZW50Il0gPC0gMA0Kb2tjZGF0YXNldCRzZXh1YWxfY29uZmlkZW5jZVtva2NkYXRhc2V0JHEzMjM9PSJDb25maWRlbnQiXSA8LSAxDQpva2NkYXRhc2V0JHNleHVhbF9jb25maWRlbmNlW29rY2RhdGFzZXQkcTMyMz09IlN1cGVyIGNvbmZpZGVudCJdIDwtIDINCg0KdW5pcXVlKG9rY2RhdGFzZXQkcTYzNDcpDQoNCm9rY2RhdGFzZXQkYmVsaWV2ZV9pbl9nb2QgPC0gTkENCm9rY2RhdGFzZXQkYmVsaWV2ZV9pbl9nb2Rbb2tjZGF0YXNldCRxMjEwPT0iTm8iXSA8LSAwDQpva2NkYXRhc2V0JGJlbGlldmVfaW5fZ29kW29rY2RhdGFzZXQkcTIxMD09IlllcyJdIDwtIDENCg0Kb2tjZGF0YXNldCRyZWxpZ2lvbl9pbXBvcnRhbnQgPC0gTkENCm9rY2RhdGFzZXQkcmVsaWdpb25faW1wb3J0YW50W29rY2RhdGFzZXQkcTQxPT0iTm90IGF0IGFsbCBpbXBvcnRhbnQiXSA8LSAwDQpva2NkYXRhc2V0JHJlbGlnaW9uX2ltcG9ydGFudFtva2NkYXRhc2V0JHE0MT09Ik5vdCB2ZXJ5IGltcG9ydGFudCJdIDwtIDENCm9rY2RhdGFzZXQkcmVsaWdpb25faW1wb3J0YW50W29rY2RhdGFzZXQkcTQxPT0iU29tZXdoYXQgaW1wb3J0YW50Il0gPC0gMg0Kb2tjZGF0YXNldCRyZWxpZ2lvbl9pbXBvcnRhbnRbb2tjZGF0YXNldCRxNDE9PSJFeHRyZW1lbHkgaW1wb3J0YW50Il0gPC0gMw0KDQpva2NkYXRhc2V0JHJlbGlnaW91c19kdXR5X2ltcG9ydGFudCA8LSBOQQ0Kb2tjZGF0YXNldCRyZWxpZ2lvdXNfZHV0eV9pbXBvcnRhbnRbb2tjZGF0YXNldCRxNDI9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkcmVsaWdpb3VzX2R1dHlfaW1wb3J0YW50W29rY2RhdGFzZXQkcTQyPT0iWWVzIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGhvbW9zZXh1YWxpdHlfaXNfc2luIDwtIE5BDQpva2NkYXRhc2V0JGhvbW9zZXh1YWxpdHlfaXNfc2luW29rY2RhdGFzZXQkcTcwPT0iTm8iXSA8LSAwDQpva2NkYXRhc2V0JGhvbW9zZXh1YWxpdHlfaXNfc2luW29rY2RhdGFzZXQkcTcwPT0iWWVzIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGJlbGllZl9pbl9taXJhY2xlcyA8LSBOQQ0Kb2tjZGF0YXNldCRiZWxpZWZfaW5fbWlyYWNsZXNbb2tjZGF0YXNldCRxNjM0Nz09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRiZWxpZWZfaW5fbWlyYWNsZXNbb2tjZGF0YXNldCRxNjM0Nz09IlllcyJdIDwtIDENCg0KdW5pcXVlKG9rY2RhdGFzZXQkcTEzMTA2KQ0KDQpva2NkYXRhc2V0JGFtX3ZlZ2V0ZXJpYW4gPC0gTkENCm9rY2RhdGFzZXQkYW1fdmVnZXRlcmlhbltva2NkYXRhc2V0JHExNzkyNjg9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkYW1fdmVnZXRlcmlhbltva2NkYXRhc2V0JHExNzkyNjg9PSJZZXMiXSA8LSAxDQoNCm9rY2RhdGFzZXQkY29uc2lkZXJfdmVnZXRhcmlhbiA8LSBOQQ0Kb2tjZGF0YXNldCRjb25zaWRlcl92ZWdldGFyaWFuW29rY2RhdGFzZXQkcTEzMTA2PT0iTm8gd2F5ISJdIDwtIDANCm9rY2RhdGFzZXQkY29uc2lkZXJfdmVnZXRhcmlhbltva2NkYXRhc2V0JHExMzEwNj09IkknZCBjb25zaWRlciBpdC4iXSA8LSAxDQpva2NkYXRhc2V0JGNvbnNpZGVyX3ZlZ2V0YXJpYW5bb2tjZGF0YXNldCRxMTMxMDY9PSJJJ20gcGFydGlhbGx5IHRoZXJlIGFscmVhZHkuIl0gPC0gMg0Kb2tjZGF0YXNldCRjb25zaWRlcl92ZWdldGFyaWFuW29rY2RhdGFzZXQkcTEzMTA2PT0iSSBhbSBvbmUhIl0gPC0gMw0KDQp1bmlxdWUob2tjZGF0YXNldCRxMjA5NzYpDQoNCm9rY2RhdGFzZXQkdG9vX21hbnlfc2V4X3BhcnRuZXJzIDwtIE5BDQpva2NkYXRhc2V0JHRvb19tYW55X3NleF9wYXJ0bmVyc1tva2NkYXRhc2V0JHEzOTM9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkdG9vX21hbnlfc2V4X3BhcnRuZXJzW29rY2RhdGFzZXQkcTM5Mz09IlllcyJdIDwtIDENCg0Kb2tjZGF0YXNldCRtdWx0aXBsZV9zZXhfcGFydG5lcnNfc2FtZV90aW1lIDwtIE5BDQpva2NkYXRhc2V0JG11bHRpcGxlX3NleF9wYXJ0bmVyc19zYW1lX3RpbWVbb2tjZGF0YXNldCRxMTEyMT09Ik5vLiJdIDwtIDANCm9rY2RhdGFzZXQkbXVsdGlwbGVfc2V4X3BhcnRuZXJzX3NhbWVfdGltZVtva2NkYXRhc2V0JHExMTIxPT0iWWVzLCBhbmQgSSBkaWRuJ3QgdGVsbCBhdCBsZWFzdCBvbmUgb2YgdGhlbS4iXSA8LSAxDQpva2NkYXRhc2V0JG11bHRpcGxlX3NleF9wYXJ0bmVyc19zYW1lX3RpbWVbb2tjZGF0YXNldCRxMTEyMT09IlllcywgYW5kIHRoZXkgYm90aCBrbmV3LiJdIDwtIDENCg0Kb2tjZGF0YXNldCRjb25zaWRlcl9md2IgPC0gTkENCm9rY2RhdGFzZXQkY29uc2lkZXJfZndiW29rY2RhdGFzZXQkcTQyNTI0PT0iTm8uIl0gPC0gMA0Kb2tjZGF0YXNldCRjb25zaWRlcl9md2Jbb2tjZGF0YXNldCRxNDI1MjQ9PSJZZXMuIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGZvdXJ0ZWVuX3NleHBhcnRfYWxvdCA8LSBOQQ0Kb2tjZGF0YXNldCRmb3VydGVlbl9zZXhwYXJ0X2Fsb3Rbb2tjZGF0YXNldCRxMjA5NzY9PSJZZXMsIGFuZCBpdCBtYWtlcyBtZSB1bmNvbWZvcnRhYmxlLiJdIDwtIDINCm9rY2RhdGFzZXQkZm91cnRlZW5fc2V4cGFydF9hbG90W29rY2RhdGFzZXQkcTIwOTc2PT0iSSBndWVzcywgYnV0IEl0IGRvZXNuJ3QgY2hhbmdlIGhvdyBJIGZlZWwuIl0gPC0gMg0Kb2tjZGF0YXNldCRmb3VydGVlbl9zZXhwYXJ0X2Fsb3Rbb2tjZGF0YXNldCRxMjA5NzY9PSJUaGF0IHNlZW1zIGxpa2UgYW4gYXZlcmFnZSBudW1iZXIuIl0gPC0gMQ0Kb2tjZGF0YXNldCRmb3VydGVlbl9zZXhwYXJ0X2Fsb3Rbb2tjZGF0YXNldCRxMjA5NzY9PSJObywgdGhhdCdzIG5vdGhpbmcuIl0gPC0gMA0KDQp1bmlxdWUob2tjZGF0YXNldCRxODAwNDEpDQoNCm9rY2RhdGFzZXQkZGVzaXJlZF9mZXJ0aWxpdHkgPC0gTkENCm9rY2RhdGFzZXQkZGVzaXJlZF9mZXJ0aWxpdHlbb2tjZGF0YXNldCRxOTc5PT0iTm9uZSJdIDwtIDANCm9rY2RhdGFzZXQkZGVzaXJlZF9mZXJ0aWxpdHlbb2tjZGF0YXNldCRxOTc5PT0iMS0yIl0gPC0gMS41DQpva2NkYXRhc2V0JGRlc2lyZWRfZmVydGlsaXR5W29rY2RhdGFzZXQkcTk3OT09IjMtNCJdIDwtIDMuNQ0Kb2tjZGF0YXNldCRkZXNpcmVkX2ZlcnRpbGl0eVtva2NkYXRhc2V0JHE5Nzk9PSI1IG9yIG1vcmUhIl0gPC0gNg0KDQpva2NkYXRhc2V0JGNoaWxkX2JpcnRoX2Rpc2d1c3QgPC0gTkENCm9rY2RhdGFzZXQkY2hpbGRfYmlydGhfZGlzZ3VzdFtva2NkYXRhc2V0JHE0Nzg9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkY2hpbGRfYmlydGhfZGlzZ3VzdFtva2NkYXRhc2V0JHE0Nzg9PSJZZXMiXSA8LSAxDQoNCm9rY2RhdGFzZXQkcGxhbm5lZF9jaGlsZF9uYW1lcyA8LSBOQQ0Kb2tjZGF0YXNldCRwbGFubmVkX2NoaWxkX25hbWVzW29rY2RhdGFzZXQkcTYzMDEwPT0iTm8uIl0gPC0gMA0Kb2tjZGF0YXNldCRwbGFubmVkX2NoaWxkX25hbWVzW29rY2RhdGFzZXQkcTYzMDEwPT0iTm8sIGFuZCBJJ20gbm90IHBsYW5uaW5nIG9uIGFueSBmdXR1cmUgY2hpbGRyZW4uIl0gPC0gMA0Kb2tjZGF0YXNldCRwbGFubmVkX2NoaWxkX25hbWVzW29rY2RhdGFzZXQkcTYzMDEwPT0iWWVzLiJdIDwtIDENCg0Kb2tjZGF0YXNldCRsb29raW5nX3RvX2hhdmVfa2lkcyA8LSBOQQ0Kb2tjZGF0YXNldCRsb29raW5nX3RvX2hhdmVfa2lkc1tva2NkYXRhc2V0JHE4MDA0MT09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRsb29raW5nX3RvX2hhdmVfa2lkc1tva2NkYXRhc2V0JHE4MDA0MT09IlllcyJdIDwtIDENCg0Kb2tjZGF0YXNldCR0YXR0b29zIDwtIE5BDQpva2NkYXRhc2V0JHRhdHRvb3Nbb2tjZGF0YXNldCRxMTI4PT0iSSBoYXZlIG5vIHRhdHRvb3MiXSA8LSAwDQpva2NkYXRhc2V0JHRhdHRvb3Nbb2tjZGF0YXNldCRxMTI4PT0iSSBoYXZlIDEgb3IgbW9yZSBMSVRUTEUgdGF0dG9vcyJdIDwtIDENCm9rY2RhdGFzZXQkdGF0dG9vc1tva2NkYXRhc2V0JHExMjg9PSJJIGhhdmUgMSBvciBtb3JlIEJJRyB0YXR0b29zIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGFfbG90X29mX2JsYWNrX2Nsb3RoZXMgPC0gTkENCm9rY2RhdGFzZXQkYV9sb3Rfb2ZfYmxhY2tfY2xvdGhlc1tva2NkYXRhc2V0JHE0NzY9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkYV9sb3Rfb2ZfYmxhY2tfY2xvdGhlc1tva2NkYXRhc2V0JHE0NzY9PSJZZXMiXSA8LSAxDQoNCm9rY2RhdGFzZXQkYXJlX2ZyZWNrbGVzX2F0dHJhY3RpdmUgPC0gTkENCm9rY2RhdGFzZXQkYXJlX2ZyZWNrbGVzX2F0dHJhY3RpdmVbb2tjZGF0YXNldCRxMzA5NTc9PSJObyJdIDwtIDANCm9rY2RhdGFzZXQkYXJlX2ZyZWNrbGVzX2F0dHJhY3RpdmVbb2tjZGF0YXNldCRxMzA5NTc9PSJJJ20gTm90IFN1cmUiXSA8LSAxDQpva2NkYXRhc2V0JGFyZV9mcmVja2xlc19hdHRyYWN0aXZlW29rY2RhdGFzZXQkcTMwOTU3PT0iSXQgZGVwZW5kcyB3aGVyZSBvbiB0aGUgYm9keSB0aGV5IGFyZSJdIDwtIDENCm9rY2RhdGFzZXQkYXJlX2ZyZWNrbGVzX2F0dHJhY3RpdmVbb2tjZGF0YXNldCRxMzA5NTc9PSJZZXMiXSA8LSAyDQoNCm9rY2RhdGFzZXQkY29zcGxheSA8LSBOQQ0Kb2tjZGF0YXNldCRjb3NwbGF5W29rY2RhdGFzZXQkcTE4NzExPT0iTm8sIGJ1dCBpdCBzb3VuZHMgY29vbCJdIDwtIDANCm9rY2RhdGFzZXQkY29zcGxheVtva2NkYXRhc2V0JHExODcxMT09Ik5vLCBhbmQgSSB3b3VsZG4ndCBiZSBpbnRlcmVzdGVkIl0gPC0gMA0Kb2tjZGF0YXNldCRjb3NwbGF5W29rY2RhdGFzZXQkcTE4NzExPT0iWWVzIl0gPC0gMQ0KDQpva2NkYXRhc2V0JGVkdWNhdGlvbl9sZXZlbCA8LSBOQQ0Kb2tjZGF0YXNldCRlZHVjYXRpb25fbGV2ZWxbb2tjZGF0YXNldCRxMjc0PT0iSnVuaW9yIEhpZ2giXSA8LSAwDQpva2NkYXRhc2V0JGVkdWNhdGlvbl9sZXZlbFtva2NkYXRhc2V0JHEyNzQ9PSJIaWdoIFNjaG9vbCJdIDwtIDENCm9rY2RhdGFzZXQkZWR1Y2F0aW9uX2xldmVsW29rY2RhdGFzZXQkcTI3ND09IkNvbGxlZ2UiXSA8LSAyDQpva2NkYXRhc2V0JGVkdWNhdGlvbl9sZXZlbFtva2NkYXRhc2V0JHEyNzQ9PSJHcmFkdWF0ZSBTY2hvb2wiXSA8LSAzDQoNCm9rY2RhdGFzZXQkc2NhcmVkX29mX2NvbW1pdG1lbnQgPC0gTkENCm9rY2RhdGFzZXQkc2NhcmVkX29mX2NvbW1pdG1lbnRbb2tjZGF0YXNldCRxNDA0Mz09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCRzY2FyZWRfb2ZfY29tbWl0bWVudFtva2NkYXRhc2V0JHE0MDQzPT0iSSdtIE5vdCBTdXJlIl0gPC0gMQ0Kb2tjZGF0YXNldCRzY2FyZWRfb2ZfY29tbWl0bWVudFtva2NkYXRhc2V0JHE0MDQzPT0iWWVzIl0gPC0gMg0KDQpva2NkYXRhc2V0JHRyYXVtYSA8LSBOQQ0Kb2tjZGF0YXNldCR0cmF1bWFbb2tjZGF0YXNldCRxMTI5MD09Ik5vIl0gPC0gMA0Kb2tjZGF0YXNldCR0cmF1bWFbb2tjZGF0YXNldCRxMTI5MD09IlllcyJdIDwtIDENCg0Kb2tjZGF0YXNldCRzaHluZXNzIDwtIE5BDQpva2NkYXRhc2V0JHNoeW5lc3Nbb2tjZGF0YXNldCRxMTcxMj09Ik5vdCBhdCBhbGwgc2h5Il0gPC0gMA0Kb2tjZGF0YXNldCRzaHluZXNzW29rY2RhdGFzZXQkcTE3MTI9PSJOb3QgcmVhbGx5IHNoeSJdIDwtIDENCm9rY2RhdGFzZXQkc2h5bmVzc1tva2NkYXRhc2V0JHExNzEyPT0iS2luZCBvZiBzaHkiXSA8LSAyDQpva2NkYXRhc2V0JHNoeW5lc3Nbb2tjZGF0YXNldCRxMTcxMj09IlZlcnkgc2h5Il0gPC0gMw0KDQpva2NkYXRhc2V0JGxlZnRfd2luZyA8LSBOQQ0Kb2tjZGF0YXNldCRsZWZ0X3dpbmdbb2tjZGF0YXNldCRxMjEyODEzPT0iQ29uc2VydmF0aXZlIC8gUmlnaHQtd2luZyJdIDwtIDANCm9rY2RhdGFzZXQkbGVmdF93aW5nW29rY2RhdGFzZXQkcTIxMjgxMz09Ik90aGVyIl0gPC0gMQ0Kb2tjZGF0YXNldCRsZWZ0X3dpbmdbb2tjZGF0YXNldCRxMjEyODEzPT0iQ2VudHJpc3QiXSA8LSAxDQpva2NkYXRhc2V0JGxlZnRfd2luZ1tva2NkYXRhc2V0JHEyMTI4MTM9PSJMaWJlcmFsIC8gTGVmdC13aW5nIl0gPC0gMg0KDQp1bmlxdWUob2tjZGF0YXNldCRzZXh1YWxpdHkpDQoNCm9rY2RhdGFzZXQkaG9tb3NleHVhbGl0eSA8LSBOQQ0Kb2tjZGF0YXNldCRob21vc2V4dWFsaXR5W29rY2RhdGFzZXQkc2V4dWFsaXR5PT0iT3RoZXIiXSA8LSBOQQ0Kb2tjZGF0YXNldCRob21vc2V4dWFsaXR5W29rY2RhdGFzZXQkc2V4dWFsaXR5PT0iU3RyYWlnaHQiXSA8LSAwDQpva2NkYXRhc2V0JGhvbW9zZXh1YWxpdHlbb2tjZGF0YXNldCRzZXh1YWxpdHk9PSJCaXNleHVhbCJdIDwtIDENCm9rY2RhdGFzZXQkaG9tb3NleHVhbGl0eVtva2NkYXRhc2V0JHNleHVhbGl0eT09IkdheSJdIDwtIDINCg0KDQp1bmlxdWUob2tjZGF0YXNldCRxMTg1MzgpDQpva2NkYXRhc2V0JGdvdGggPC0gTkENCm9rY2RhdGFzZXQkZ290aFtva2NkYXRhc2V0JHExODUzOD09Ik5vLiJdIDwtIDANCm9rY2RhdGFzZXQkZ290aFtva2NkYXRhc2V0JHExODUzOD09IlllcywgYW5kIEknbSBhIGxpdHRsZSBlbWJhcmFzc2VkIGFib3V0IGl0LiJdIDwtIDENCm9rY2RhdGFzZXQkZ290aFtva2NkYXRhc2V0JHExODUzOD09IlllcywgYW5kIEknbSBwcm91ZCBvZiBpdC4iXSA8LSAyDQpva2NkYXRhc2V0JGdvdGhbb2tjZGF0YXNldCRxMTg1Mzg9PSJJdCB3YXNuJ3QgYSAncGhhc2UnISJdIDwtIDMNCg0KDQp2YXJzIDwtIGNvbG5hbWVzKG9rY2RhdGFzZXRbLCAyNjMwOjI3MTJdKQ0KDQpgYGANCg0KQ29ycmVsYXRpb24gYmV0d2VlbiBoYXZpbmcgaWRlbnRpZmllZCBhcyBnb3RoIGFuZCBlYWNoIHZhcmlhYmxlOg0KYGBge3J9DQpkYWZ2YXJzIDwtIGRhdGEuZnJhbWUociA9IHJlcCgwLCBsZW5ndGgodmFycykpLCBzZSA9IHJlcCgwLCBsZW5ndGgodmFycykpLCB2YXJuYW1lcyA9IHZhcnMpDQoNCmZvcihpIGluIDE6bGVuZ3RoKHZhcnMpKSB7DQogIGN1cnZhciA8LSB2YXJzW2ldDQogIA0KICBpZHggPC0gY29tcGxldGUuY2FzZXMob2tjZGF0YXNldFtjKCJnb3RoIiwgY3VydmFyKV0pDQogIA0KICBpZihtZWFuKGlkeCkgPiAwICYgIWN1cnZhcj09J2dvdGgnKSB7DQogICAgZ290aF9jbGVhbiA8LSBva2NkYXRhc2V0JGdvdGhbaWR4XQ0KICAgIGN1cnZhcl9jbGVhbiA8LSBva2NkYXRhc2V0W1tjdXJ2YXJdXVtpZHhdDQogICAgDQogICAgZ290aF9mYWN0b3IgPC0gZmFjdG9yKGdvdGhfY2xlYW4sIG9yZGVyZWQgPSBUUlVFKQ0KICAgIGN1cnZhcl9mYWN0b3IgPC0gZmFjdG9yKGN1cnZhcl9jbGVhbiwgb3JkZXJlZCA9IFRSVUUpDQogICAgDQogICAgY3VzdGFyZCA8LSBwb2x5Y2hvcihnb3RoX2ZhY3RvciwgY3VydmFyX2ZhY3Rvciwgc3RkLmVycj1UKQ0KICAgIA0KICAgIGRhZnZhcnMkcltpXSA8LSBjdXN0YXJkJHJobw0KICAgIGRhZnZhcnMkc2VbaV0gPC0gc3FydChjdXN0YXJkJHZhcikNCiAgfQ0KICBlbHNlIHsNCiAgICBkYWZ2YXJzJHJbaV0gPC0gTkENCiAgICBkYWZ2YXJzJHNlW2ldIDwtIE5BDQogIH0NCiAgDQp9DQpkYWZ2YXJzDQpkYWZ2YXJzJHVjZSA8LSBkYWZ2YXJzJHIgKyBkYWZ2YXJzJHNlKjEuOTYNCmRhZnZhcnMkbGNlIDwtIGRhZnZhcnMkciAtIGRhZnZhcnMkc2UqMS45Ng0KDQpkYWZ2YXJzICU+JSBmaWx0ZXIodmFybmFtZXM9PSdtdWNoX2RlcHJlc3Npb24nKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmRhZl9jbGVhbiA8LSBuYS5vbWl0KGRhZnZhcnMpDQoNCiMgU29ydCBieSBjb3JyZWxhdGlvbiAncicgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdA0KZGFmX3NvcnRlZCA8LSBkYWZfY2xlYW5bb3JkZXIoLWRhZl9jbGVhbiRyKSwgXQ0KDQojIENvbnZlcnQgdmFybmFtZXMgdG8gYSBmYWN0b3Igd2l0aCBsZXZlbHMgaW4gZGVzaXJlZCBvcmRlciAoZm9yIGdncGxvdCkNCmRhZl9zb3J0ZWQkdmFybmFtZXMgPC0gZmFjdG9yKGRhZl9zb3J0ZWQkdmFybmFtZXMsIGxldmVscyA9IGRhZl9zb3J0ZWQkdmFybmFtZXMpDQoNCiMgUGxvdA0KcCA8LSBnZ3Bsb3QoZGFmX3NvcnRlZCwgYWVzKHggPSB2YXJuYW1lcywgeSA9IHIpKSArDQogIGdlb21fcG9pbnQoc2l6ZSA9IDMsIGNvbG9yID0gInN0ZWVsYmx1ZSIpICsgICMgRG90cyBmb3IgY29ycmVsYXRpb25zDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBsY2UsIHltYXggPSB1Y2UpLCB3aWR0aCA9IDAuMiwgY29sb3IgPSAiYmxhY2siKSArDQogIGNvb3JkX2ZsaXAoKSArDQogIGxhYnModGl0bGUgPSAiIiwNCiAgICAgICB4ID0gIlZhcmlhYmxlcyIsDQogICAgICAgeSA9ICJDb3JyZWxhdGlvbiB3aXRoIGhhdmluZyBiZWVuIGdvdGgiKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiLA0KICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChjb2xvciA9ICJ3aGl0ZSIpLA0KICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCkNCiAgKQ0KDQpwDQoNCmBgYA0KDQpDb3JyZWxhdGlvbiBtYXRyaXgNCg0KYGBge3J9DQpva2NkYXRhc2V0JG1lbnRhbF9pbGxuZXNzIDwtIGdldHBjKG9rY2RhdGFzZXQgJT4lIHNlbGVjdChzZWVuX3RoZXJhcGlzdCwgbXVjaF9kZXByZXNzaW9uLCBlbW90aW9uYWxfZGl2ZXJzaXR5LCBoYXBweV93aXRoX2xpZmUsIHRyYXVtYSksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkc2xlZXBfaXNzdWVzIDwtIGdldHBjKG9rY2RhdGFzZXQgJT4lIHNlbGVjdChzbGVlcF90aW1lLCBpbnNvbW5pYWMsIHNsZWVwaW5nX2R1cmluZ190aGVfZGF5LCBzbGVlcF90aW1lLCBzbGVlcF90cm91YmxlKSwgZG9mYT1GLCBmaWxsbWlzc2luZz1GLCBub3JtYWxpemVpdD1UKQ0Kb2tjZGF0YXNldCRhbGNvaG9sX3VzYWdlIDwtIGdldHBjKG9rY2RhdGFzZXQgJT4lIHNlbGVjdChsaWZlX3dpdGhvdXRfYWxjb2hvbCwgYWxjb2hvbF91c2UsIGFsY29ob2xfaW5oaWJpdF9zZXh1YWxfdGVuc2lvbnMsIGJsYWNrb3V0X2Zyb21fYWxjb2hvbCksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkbmF0aW9uYWxpc20gPC0gZ2V0cGMob2tjZGF0YXNldCAlPiUgc2VsZWN0KGJ1cm5pbmdfb3duX2ZsYWdfaWxsZWdhbGl0eSwgd29ydGhfbW9yZV90aGFuX3N0cmFuZ2VycywgaW50b19mb3JlaWduX2FjY2VudHMsIHdlYXJpbmdfc2hpcnRfd2l0aF9mbGFnLCBwYXJ0bmVyX3NhbWVfZXRobmljaXR5X2FzX3lvdSksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkaHlnaWVuZSA8LSBnZXRwYyhva2NkYXRhc2V0ICU+JSBzZWxlY3QoYnJ1c2hpbmdfdGVldGgsIHNob3dlcmluZywgbWVzc19jbGVhbmluZywgYmF0aHJvb21fY2xlYW5saW5lc3MsIG1lc3NpbmVzcyksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkYW5nZXIgPC0gZ2V0cGMob2tjZGF0YXNldCAlPiUgc2VsZWN0KGFuZ3J5X3ZpZGVvX2dhbWVzLCBnZW5lcmFsX2FuZ3J5LCBxdWlldGx5X2FuZ3J5LCB0aHJvd2luZ19vYmplY3RzKSwgZG9mYT1GLCBmaWxsbWlzc2luZz1GLCBub3JtYWxpemVpdD1UKQ0Kb2tjZGF0YXNldCRwaHlzaWNhbF9oZWFsdGggPC0gZ2V0cGMob2tjZGF0YXNldCAlPiUgc2VsZWN0KHNpeF9wYWNrX2ltcG9ydGFuY2UsIHBoeXNpY2FsX3NoYXBlLCBwaHlzaWNhbF9zdHJlbmd0aCwgZ29vZF9wb3N0dXJlKSwgZG9mYT1GLCBmaWxsbWlzc2luZz1GLCBub3JtYWxpemVpdD1UKQ0Kb2tjZGF0YXNldCRnYW1ibGluZ190ZW5kZW5jeSA8LSBnZXRwYyhva2NkYXRhc2V0ICU+JSBzZWxlY3QoZ2FtYmxpbmcsIGdhbWJsaW5nMiksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkcmViZWxsaW91c25lc3MgPC0gZ2V0cGMob2tjZGF0YXNldCAlPiUgc2VsZWN0KHByb2JsZW1fd2l0aF9hdXRob3JpdHksIGV2ZXJfYXJyZXN0ZWQsIHRyb3VibGVfYXNfY2hpbGQsIGZpZ2h0c193aXRoX2F1dGhvcml0eSksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkc2V4dWFsX3VuYyA8LSBnZXRwYyhva2NkYXRhc2V0ICU+JSBzZWxlY3QocmVjZWl2aW5nX2FuYWxfc2V4LCBwb3JuX2NvbGxlY3Rpb24sIGRhdGluZ19zZXhfd29ya2VyLCBkYXRpbmdfSElWX3Bvc2l0aXZlLCBkYXRpbmdfdHJhbnNfcGVyc29uLCBkYXRpbmdfaGVycGVzX3Bvc2l0aXZlLCBmb290X2ZldGlzaCksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkY29uZmlkZW5jZSA8LSBnZXRwYyhva2NkYXRhc2V0ICU+JSBzZWxlY3Qoc2VsZl9jb25maWRlbmNlLCBjb21mb3J0YWJsZV93aXRoX3lvdXJzZWxmLCBzZWxmX2VzdGVlbSwgc2V4dWFsX2NvbmZpZGVuY2UpLCBkb2ZhPUYsIGZpbGxtaXNzaW5nPUYsIG5vcm1hbGl6ZWl0PVQpDQpva2NkYXRhc2V0JHJlbGlnaW9uIDwtIGdldHBjKG9rY2RhdGFzZXQgJT4lIHNlbGVjdChiZWxpZXZlX2luX2dvZCwgcmVsaWdpb25faW1wb3J0YW50LCByZWxpZ2lvdXNfZHV0eV9pbXBvcnRhbnQsIGhvbW9zZXh1YWxpdHlfaXNfc2luLCBiZWxpZWZfaW5fbWlyYWNsZXMpLCBkb2ZhPUYsIGZpbGxtaXNzaW5nPUYsIG5vcm1hbGl6ZWl0PVQpDQpva2NkYXRhc2V0JGRydWdfdXNhZ2UgPC0gZ2V0cGMob2tjZGF0YXNldCAlPiUgc2VsZWN0KHBzeWNoZWRlbGljc191c2UsIGRydWdfdXNlLCBtYXJpanVhbmEpLCBkb2ZhPUYsIGZpbGxtaXNzaW5nPUYsIG5vcm1hbGl6ZWl0PVQpDQpva2NkYXRhc2V0JHNleHVhbF9saWJlcmFsaXNtIDwtIC1nZXRwYyhva2NkYXRhc2V0ICU+JSBzZWxlY3QodG9vX21hbnlfc2V4X3BhcnRuZXJzLCBtdWx0aXBsZV9zZXhfcGFydG5lcnNfc2FtZV90aW1lLCBjb25zaWRlcl9md2IsIGZvdXJ0ZWVuX3NleHBhcnRfYWxvdCksIGRvZmE9RiwgZmlsbG1pc3Npbmc9Riwgbm9ybWFsaXplaXQ9VCkNCm9rY2RhdGFzZXQkZmluYW5jZV9zYXZpbmcgPC0gZ2V0cGMob2tjZGF0YXNldCAlPiUgc2VsZWN0KGltcHVsc2VfcHVyY2hhc2luZywgbW9uZXlfc2F2aW5nKSwgZG9mYT1GLCBmaWxsbWlzc2luZz1GLCBub3JtYWxpemVpdD1UKQ0Kb2tjZGF0YXNldCRwb2x5Z2FteSA8LSBnZXRwYyhva2NkYXRhc2V0ICU+JSBzZWxlY3Qob3Blbl90b19wb2x5LCBvcGVuX3RvX2RhdGluZ19wb2x5LCBwcmVmX3BvbHkpLCBkb2ZhPUYsIGZpbGxtaXNzaW5nPUYsIG5vcm1hbGl6ZWl0PVQpDQpva2NkYXRhc2V0JHZlZ2V0YXJpYW5pc20gPC0gZ2V0cGMob2tjZGF0YXNldCAlPiUgc2VsZWN0KGFtX3ZlZ2V0ZXJpYW4sIGNvbnNpZGVyX3ZlZ2V0YXJpYW4pLCBkb2ZhPUYsIGZpbGxtaXNzaW5nPUYsIG5vcm1hbGl6ZWl0PVQpDQpva2NkYXRhc2V0JG5hdGFsaXNtIDwtIGdldHBjKG9rY2RhdGFzZXQgJT4lIHNlbGVjdChkZXNpcmVkX2ZlcnRpbGl0eSwgcGxhbm5lZF9jaGlsZF9uYW1lcywgbG9va2luZ190b19oYXZlX2tpZHMpLCBkb2ZhPUYsIGZpbGxtaXNzaW5nPUYsIG5vcm1hbGl6ZWl0PVQpDQoNCmNvcnJlbGF0aW9uX21hdHJpeChva2NkYXRhc2V0ICU+JSBzZWxlY3QobWVudGFsX2lsbG5lc3MsIGRydWdfdXNhZ2UsIHNsZWVwX2lzc3VlcywgYWxjb2hvbF91c2FnZSwgbmF0aW9uYWxpc20sIGh5Z2llbmUsIGFuZ2VyLCBwaHlzaWNhbF9oZWFsdGgsIGdhbWJsaW5nX3RlbmRlbmN5LCByZWJlbGxpb3VzbmVzcywgc2V4dWFsX3VuYywgY29uZmlkZW5jZSwgcmVsaWdpb24sIHNleHVhbF9saWJlcmFsaXNtLCBmaW5hbmNlX3NhdmluZywgcG9seWdhbXksIHZlZ2V0YXJpYW5pc20sIG5hdGFsaXNtLCBnb3RoKSkNCmBgYA0KDQpWaXN1YWxpemVkIGdyYXBoaWNhbGx5Og0KDQpgYGB7cn0NCmRhdGFfc2VsZWN0ZWQgPC0gb2tjZGF0YXNldCAlPiUgc2VsZWN0KG1lbnRhbF9pbGxuZXNzLCBkcnVnX3VzYWdlLCBzbGVlcF9pc3N1ZXMsIGFsY29ob2xfdXNhZ2UsIG5hdGlvbmFsaXNtLCBoeWdpZW5lLCBhbmdlciwgcGh5c2ljYWxfaGVhbHRoLCBnYW1ibGluZ190ZW5kZW5jeSwgcmViZWxsaW91c25lc3MsIHNleHVhbF91bmMsIGNvbmZpZGVuY2UsIHJlbGlnaW9uLCBzZXh1YWxfbGliZXJhbGlzbSwgZmluYW5jZV9zYXZpbmcsIHBvbHlnYW15LCB2ZWdldGFyaWFuaXNtLCBuYXRhbGlzbSwgZ290aCkNCg0KY29yX21hdHJpeCA8LSBjb3IoZGF0YV9zZWxlY3RlZCwgdXNlID0gInBhaXJ3aXNlLmNvbXBsZXRlLm9icyIpDQoNCmNvcl9sb25nIDwtIGFzLmRhdGEuZnJhbWUoYXMudGFibGUoY29yX21hdHJpeCkpDQpjb2xuYW1lcyhjb3JfbG9uZykgPC0gYygiVmFyMSIsICJWYXIyIiwgIkNvcnJlbGF0aW9uIikNCg0KY29yX2xvbmckbGFiZWwgPC0gc3ByaW50ZigiJS4yZiIsIGNvcl9sb25nJENvcnJlbGF0aW9uKQ0KDQpwIDwtIGdncGxvdChjb3JfbG9uZywgYWVzKHggPSBWYXIxLCB5ID0gVmFyMiwgZmlsbCA9IENvcnJlbGF0aW9uKSkgKw0KICBnZW9tX3RpbGUoY29sb3IgPSAid2hpdGUiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBsYWJlbCksIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDMpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudDIoDQogICAgbG93ID0gImJsdWUiLCBtaWQgPSAid2hpdGUiLCBoaWdoID0gInJlZCIsIG1pZHBvaW50ID0gMCwNCiAgICBsaW1pdCA9IGMoLTEsIDEpLCBzcGFjZSA9ICJMYWIiLCBuYW1lID0gInIiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0ID0gMSkpICsNCiAgY29vcmRfZml4ZWQoKSArDQogIGxhYnModGl0bGUgPSAiIiwgeCA9ICIiLCB5ID0gIiIpDQoNCnANCg0KYGBgDQoNCkZhY3RvciBhbmFseXNpcy4gRmFpcmx5IHNpbXBsZS4NCg0KYGBge3J9DQoNCmYgPC0gZmEob2tjZGF0YXNldFssIDI2MzA6MjcxMl0sIG5mYWN0b3JzPTEpDQpwcmludChmKQ0KYGBgDQoNCkxpbmVhciByZWdyZXNzaW9uIG1vZGVscyB0aGF0IHRlc3Qgd2hldGhlciB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiBnb3RoIGlkZW50aXR5DQphbmQgdmFyaW91cyB2YXJpYWJsZXMgYXJlIGR1ZSB0byBkZW1vZ3JhcGhpYyBjb25mb3VuZGluZy4gDQoNCmBgYHtyfQ0Kb2tjZGF0YXNldCRnb3RoX3N0YW5kIDwtIG5vcm1hbGlzZShva2NkYXRhc2V0JGdvdGgpDQpva2NkYXRhc2V0JG1lbnRhbF9zdGFuZCA8LSBub3JtYWxpc2Uob2tjZGF0YXNldCRtZW50YWxfaWxsbmVzcykNCm9rY2RhdGFzZXQkaG9tb19zdGFuZCA8LSBub3JtYWxpc2Uob2tjZGF0YXNldCRob21vc2V4dWFsaXR5KQ0Kb2tjZGF0YXNldCRzZXh1YWxfdW5jX3N0YW5kIDwtIG5vcm1hbGlzZShva2NkYXRhc2V0JHNleHVhbF91bmMpDQpva2NkYXRhc2V0JGluY29tZV9zdGFuZCA8LSBub3JtYWxpc2Uob2tjZGF0YXNldCRudW1pbmNvbWUpDQpva2NkYXRhc2V0JGFnZV9zdGFuZCA8LSBub3JtYWxpc2Uob2tjZGF0YXNldCRkX2FnZSkNCg0KbHIgPC0gbG0oZGF0YT1va2NkYXRhc2V0LCBtZW50YWxfaWxsbmVzcyB+IGdvdGhfc3RhbmQpDQpzdW1tYXJ5KGxyKQ0KbHIgPC0gbG0oZGF0YT1va2NkYXRhc2V0LCBtZW50YWxfaWxsbmVzcyB+IGdvdGhfc3RhbmQgKyBhZ2Vfc3RhbmQgKyBzZXggKyByYWNlICsgaW5jb21lX3N0YW5kKQ0Kc3VtbWFyeShscikNCg0KbHIgPC0gbG0oZGF0YT1va2NkYXRhc2V0LCBzZXh1YWxfdW5jX3N0YW5kIH4gZ290aF9zdGFuZCkNCnN1bW1hcnkobHIpDQpsciA8LSBsbShkYXRhPW9rY2RhdGFzZXQsIHNleHVhbF91bmNfc3RhbmQgfiBnb3RoX3N0YW5kICsgYWdlX3N0YW5kICsgc2V4ICsgcmFjZSArIGluY29tZV9zdGFuZCkNCnN1bW1hcnkobHIpDQoNCg0KbHIgPC0gbG0oZGF0YT1va2NkYXRhc2V0LCBob21vX3N0YW5kIH4gZ290aF9zdGFuZCkNCnN1bW1hcnkobHIpDQpsciA8LSBsbShkYXRhPW9rY2RhdGFzZXQsIGhvbW9fc3RhbmQgfiBnb3RoX3N0YW5kICsgYWdlX3N0YW5kICsgc2V4ICsgcmFjZSArIGluY29tZV9zdGFuZCkNCnN1bW1hcnkobHIpDQpgYGANCkNoYXJ0IHRoYXQgYW5ub3RhdGVzIGhvdyBvZnRlbiBwZW9wbGUgY2hvc2UgZWFjaCBhbnN3ZXIgdG8gdGhlIGdvdGgtaWQgcXVlc3Rpb24uDQoNCmBgYHtyfQ0KbmVyX3BlcmNlbnQgPC0gb2tjZGF0YXNldCAlPiUNCiAgZmlsdGVyKCFpcy5uYShzZXgpICYgIWlzLm5hKHExODUzOCkpICU+JQ0KICBncm91cF9ieShzZXgsIHExODUzOCkgJT4lDQogIHN1bW1hcmlzZShuID0gbigpLCAuZ3JvdXBzID0gImRyb3AiKSAlPiUNCiAgZ3JvdXBfYnkoc2V4KSAlPiUNCiAgbXV0YXRlKHBlcmNlbnQgPSBuIC8gc3VtKG4pICogMTAwKSAlPiUNCiAgdW5ncm91cCgpDQoNCm5lcl9wZXJjZW50IDwtIG5lcl9wZXJjZW50ICU+JQ0KICBtdXRhdGUocTE4NTM4ID0gZmN0X3Jlb3JkZXIocTE4NTM4LCBwZXJjZW50LCAuZnVuID0gc3VtLCAuZGVzYyA9IFRSVUUpKQ0KDQojIFBsb3QNCmFzIDwtIGdncGxvdChuZXJfcGVyY2VudCwgYWVzKHggPSBxMTg1MzgsIHkgPSBwZXJjZW50IC8gMTAwLCBmaWxsID0gcTE4NTM4KSkgKw0KICBnZW9tX2NvbCgpICsNCiAgZmFjZXRfd3JhcCh+c2V4KSArDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICIiLA0KICAgIHN1YnRpdGxlID0gIiIsDQogICAgY2FwdGlvbiA9ICIiLA0KICAgIHggPSAiRGlkIHlvdSBoYXZlIGEgZ290aCBwaGFzZT8nIiwNCiAgICB5ID0gIiUiLA0KICAgIGZpbGwgPSAiUmVzcG9uc2UiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZSgNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCksDQogICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQ0KDQpwbG90KGFzKQ0KYGBgDQoNCg0KDQo=