Men and Women together
source("function for multiplot by ggplot.R")
data_sex <- subset(data, !is.na(men))
data_sex$Author <- droplevels(data_sex$Author)
Men <- ggplot(data_sex, aes(x = birth.year_high,
y = men,
color = Author,
size = n_m)) +
geom_line(linetype = "dashed", size = 1.2) +
geom_point() +
scale_x_continuous(breaks = seq(1900, 2005, 5)) +
scale_y_continuous(limits=c(0,100),breaks = seq(0,100,5))+
scale_colour_manual(name = "",
values = c("#EE1289", "#7FFFD4", "#838B8B", "#000000", "#0000EE", "#8B2323", "#32CD32", "#4F94CD", "#CD4F39", "#CD853F"),
limits=c("Kikuchi, 1998 , 1996",
"Ogihara, 2000 , 1990",
"Yamagata, 2000 , 1988",
"Kikuchi, 2005 , 1988",
"Tamura, 2012 , 2009",
"Hirayama, 2014 , 2008",
"Shiotani, 2008 , 2005",
"Shibata, 2002 , 1993",
"Fukao, 1993 , 1985",
"loess"),
labels = c("Kikuchi,1998,1996",
"Ogihara,2000,1990",
"Yamagata,2000,1988",
"Kikuchi,2005,1988",
"Tamura,2012,2009",
"Hirayama,2014,2008",
"Shiotani,2008,2005",
"Shibata,2002,1993",
"Fukao,1993,1985",
"TOTAL MEN")) +
ylab("Prevalence in Japanese men (%)") +
xlab("Birth Year") +
geom_smooth(aes(colour = "loess"), method = "loess") +
theme_bw()+
theme(legend.position = "bottom",
axis.text.x = element_text(size = rel(1.3)),
axis.text.y = element_text(size = rel(1.5)),
axis.title.x = element_text(size = rel(1.5)),
axis.title.y = element_text(size = rel(1.5)),
legend.text = element_text(size = rel(1.2)),
axis.text = element_text(size = 12, face = "bold"),
legend.direction = "horizontal")
Women <- ggplot(data_sex, aes(x = birth.year_high,
y = women,
color = Author,
size = n_f)) +
geom_line(linetype = "dashed", size = 1.2) +
geom_point() +
scale_x_continuous(breaks = seq(1900, 2005, 5)) +
scale_y_continuous(limits=c(0,100),breaks = seq(0,100,5))+
scale_colour_manual(name = "",
values = c("#EE1289", "#7FFFD4", "#838B8B", "#000000", "#0000EE", "#8B2323", "#32CD32", "#4F94CD", "#CD4F39", "#CD853F"),
limits=c("Kikuchi, 1998 , 1996",
"Ogihara, 2000 , 1990",
"Yamagata, 2000 , 1988",
"Kikuchi, 2005 , 1988",
"Tamura, 2012 , 2009",
"Hirayama, 2014 , 2008",
"Shiotani, 2008 , 2005",
"Shibata, 2002 , 1993",
"Fukao, 1993 , 1985",
"loess"),
labels = c("Kikuchi,1998,1996",
"Ogihara,2000,1990",
"Yamagata,2000,1988",
"Kikuchi,2005,1988",
"Tamura,2012,2009",
"Hirayama,2014,2008",
"Shiotani,2008,2005",
"Shibata,2002,1993",
"Fukao,1993,1985",
"TOTAL WOMEN")) +
ylab("Prevalence in Japanese women (%)") +
xlab("Birth Year") +
geom_smooth(aes(colour = "loess"), method = "loess") +
theme_bw()+
theme(legend.position = "bottom",
axis.text.x = element_text(size = rel(1.3)),
axis.text.y = element_text(size = rel(1.5)),
axis.title.x = element_text(size = rel(1.5)),
axis.title.y = element_text(size = rel(1.5)),
legend.text = element_text(size = rel(1.2)),
axis.text = element_text(size = 12, face = "bold"),
legend.direction = "horizontal")
multiplot(Men, Women, cols = 2)

Men only
library(plotly)
Men <- ggplot(data_sex, aes(x = birth.year_high,
y = men,
color = Author,
size = n_m)) +
geom_line(linetype = "dashed", size = 1.2) +
geom_point() +
scale_x_continuous(breaks = seq(1900, 2005, 5)) +
scale_y_continuous(limits=c(0,100),breaks = seq(0,100,5))+
scale_colour_manual(name = "",
values = c("#EE1289", "#7FFFD4", "#838B8B", "#000000", "#0000EE", "#8B2323", "#32CD32", "#4F94CD", "#CD4F39", "#CD853F"),
limits=c("Kikuchi, 1998 , 1996",
"Ogihara, 2000 , 1990",
"Yamagata, 2000 , 1988",
"Kikuchi, 2005 , 1988",
"Tamura, 2012 , 2009",
"Hirayama, 2014 , 2008",
"Shiotani, 2008 , 2005",
"Shibata, 2002 , 1993",
"Fukao, 1993 , 1985",
"loess"),
labels = c("Kikuchi,1998,1996",
"Ogihara,2000,1990",
"Yamagata,2000,1988",
"Kikuchi,2005,1988",
"Tamura,2012,2009",
"Hirayama,2014,2008",
"Shiotani,2008,2005",
"Shibata,2002,1993",
"Fukao,1993,1985",
"TOTAL MEN")) +
ylab("Prevalence in Japanese men (%)") +
xlab("Birth Year") +
geom_smooth(aes(colour = "loess"), method = "loess") +
theme_bw()+
theme(legend.position = "none",
axis.text.x = element_text(size = rel(1.3)),
axis.text.y = element_text(size = rel(1.5)),
axis.title.x = element_text(size = rel(1.5)),
axis.title.y = element_text(size = rel(1.5)),
legend.text = element_text(size = rel(1.2)),
axis.text = element_text(size = 12, face = "bold"),
legend.direction = "horizontal")
ggplotly(Men)
Women only
Women <- ggplot(data_sex, aes(x = birth.year_high,
y = women,
color = Author,
size = n_f)) +
geom_line(linetype = "dashed", size = 1.2) +
geom_point() +
scale_x_continuous(breaks = seq(1900, 2005, 5)) +
scale_y_continuous(limits=c(0,100),breaks = seq(0,100,5))+
scale_colour_manual(name = "",
values = c("#EE1289", "#7FFFD4", "#838B8B", "#000000", "#0000EE", "#8B2323", "#32CD32", "#4F94CD", "#CD4F39", "#CD853F"),
limits=c("Kikuchi, 1998 , 1996",
"Ogihara, 2000 , 1990",
"Yamagata, 2000 , 1988",
"Kikuchi, 2005 , 1988",
"Tamura, 2012 , 2009",
"Hirayama, 2014 , 2008",
"Shiotani, 2008 , 2005",
"Shibata, 2002 , 1993",
"Fukao, 1993 , 1985",
"loess"),
labels = c("Kikuchi,1998,1996",
"Ogihara,2000,1990",
"Yamagata,2000,1988",
"Kikuchi,2005,1988",
"Tamura,2012,2009",
"Hirayama,2014,2008",
"Shiotani,2008,2005",
"Shibata,2002,1993",
"Fukao,1993,1985",
"TOTAL WOMEN")) +
ylab("Prevalence in Japanese women (%)") +
xlab("Birth Year") +
geom_smooth(aes(colour = "loess"), method = "loess") +
theme_bw()+
theme(legend.position = "none",
axis.text.x = element_text(size = rel(1.3)),
axis.text.y = element_text(size = rel(1.5)),
axis.title.x = element_text(size = rel(1.5)),
axis.title.y = element_text(size = rel(1.5)),
legend.text = element_text(size = rel(1.2)),
axis.text = element_text(size = 12, face = "bold"),
legend.direction = "horizontal")
ggplotly(Women)
LS0tCnRpdGxlOiAiR3JhcGggMiAqSC5weWxvcmkqIHByZXZhbGVuY2UgaW4gSmFwYW5lc2Ugc3RyYXRpZmllZCBieSBnZW5kZXIiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjICoqKk1lbiBhbmQgV29tZW4gdG9nZXRoZXIqKioKYGBge3IsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0yNCwgd2FybmluZz1GQUxTRX0Kc291cmNlKCJmdW5jdGlvbiBmb3IgbXVsdGlwbG90IGJ5IGdncGxvdC5SIikKZGF0YV9zZXggPC0gc3Vic2V0KGRhdGEsICFpcy5uYShtZW4pKQpkYXRhX3NleCRBdXRob3IgPC0gZHJvcGxldmVscyhkYXRhX3NleCRBdXRob3IpCgpNZW4gPC0gZ2dwbG90KGRhdGFfc2V4LCBhZXMoeCA9IGJpcnRoLnllYXJfaGlnaCwgCiAgICAgICAgICAgICAgICAgIHkgPSBtZW4sCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gQXV0aG9yLCAKICAgICAgICAgICAgICAgICAgc2l6ZSA9IG5fbSkpICsgCiAgZ2VvbV9saW5lKGxpbmV0eXBlID0gImRhc2hlZCIsIHNpemUgPSAxLjIpICsgCiAgZ2VvbV9wb2ludCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDE5MDAsIDIwMDUsIDUpKSArIAogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHM9YygwLDEwMCksYnJlYWtzID0gc2VxKDAsMTAwLDUpKSsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoIiNFRTEyODkiLCAiIzdGRkZENCIsICIjODM4QjhCIiwgIiMwMDAwMDAiLCAiIzAwMDBFRSIsICIjOEIyMzIzIiwgIiMzMkNEMzIiLCAiIzRGOTRDRCIsICIjQ0Q0RjM5IiwgIiNDRDg1M0YiKSwgCiAgICAgICAgICAgICAgICAgICAgICBsaW1pdHM9YygiS2lrdWNoaSwgMTk5OCAsICAxOTk2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2dpaGFyYSwgMjAwMCAsICAxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hZ2F0YSwgMjAwMCAsICAxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAyMDA1ICwgIDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRhbXVyYSwgMjAxMiAsICAyMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaXJheWFtYSwgMjAxNCAsICAyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGlvdGFuaSwgMjAwOCAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGliYXRhLCAyMDAyICwgIDE5OTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a2FvLCAxOTkzICwgIDE5ODUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZXNzIiksIAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiS2lrdWNoaSwxOTk4LDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2dpaGFyYSwyMDAwLDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYWdhdGEsMjAwMCwxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksMjAwNSwxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRhbXVyYSwyMDEyLDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlyYXlhbWEsMjAxNCwyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLDIwMDgsMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGliYXRhLDIwMDIsMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWthbywxOTkzLDE5ODUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVE9UQUwgTUVOIikpICsgCiAgeWxhYigiUHJldmFsZW5jZSBpbiBKYXBhbmVzZSBtZW4gKCUpIikgKyAKICB4bGFiKCJCaXJ0aCBZZWFyIikgKyAKICBnZW9tX3Ntb290aChhZXMoY29sb3VyID0gImxvZXNzIiksIG1ldGhvZCA9ICJsb2VzcyIpICsgCiAgdGhlbWVfYncoKSsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpKSwgCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuNSkpLCAKICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMikpLAogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLCAKICAgICAgICBsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiKSAKCgpXb21lbiA8LSBnZ3Bsb3QoZGF0YV9zZXgsIGFlcyh4ID0gYmlydGgueWVhcl9oaWdoLCAKICAgICAgICAgICAgICAgICAgeSA9IHdvbWVuLAogICAgICAgICAgICAgICAgICBjb2xvciA9IEF1dGhvciwKICAgICAgICAgICAgICAgICAgc2l6ZSA9IG5fZikpICsgCiAgZ2VvbV9saW5lKGxpbmV0eXBlID0gImRhc2hlZCIsIHNpemUgPSAxLjIpICsgCiAgZ2VvbV9wb2ludCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDE5MDAsIDIwMDUsIDUpKSArIAogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHM9YygwLDEwMCksYnJlYWtzID0gc2VxKDAsMTAwLDUpKSsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoIiNFRTEyODkiLCAiIzdGRkZENCIsICIjODM4QjhCIiwgIiMwMDAwMDAiLCAiIzAwMDBFRSIsICIjOEIyMzIzIiwgIiMzMkNEMzIiLCAiIzRGOTRDRCIsICIjQ0Q0RjM5IiwgIiNDRDg1M0YiKSwgCiAgICAgICAgICAgICAgICAgICAgICBsaW1pdHM9YygiS2lrdWNoaSwgMTk5OCAsICAxOTk2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2dpaGFyYSwgMjAwMCAsICAxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hZ2F0YSwgMjAwMCAsICAxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAyMDA1ICwgIDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRhbXVyYSwgMjAxMiAsICAyMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaXJheWFtYSwgMjAxNCAsICAyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGlvdGFuaSwgMjAwOCAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGliYXRhLCAyMDAyICwgIDE5OTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a2FvLCAxOTkzICwgIDE5ODUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZXNzIiksIAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiS2lrdWNoaSwxOTk4LDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2dpaGFyYSwyMDAwLDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYWdhdGEsMjAwMCwxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksMjAwNSwxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRhbXVyYSwyMDEyLDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlyYXlhbWEsMjAxNCwyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLDIwMDgsMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGliYXRhLDIwMDIsMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWthbywxOTkzLDE5ODUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVE9UQUwgV09NRU4iKSkgKyAKICB5bGFiKCJQcmV2YWxlbmNlIGluIEphcGFuZXNlIHdvbWVuICglKSIpICsgCiAgeGxhYigiQmlydGggWWVhciIpICsgCiAgZ2VvbV9zbW9vdGgoYWVzKGNvbG91ciA9ICJsb2VzcyIpLCBtZXRob2QgPSAibG9lc3MiKSArIAogIHRoZW1lX2J3KCkrCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIsIAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSksIAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuNSkpLCAKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjIpKSwKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBmYWNlID0gImJvbGQiKSwgCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIikKCgptdWx0aXBsb3QoTWVuLCBXb21lbiwgY29scyA9IDIpCmBgYAoKCgojIyAqKipNZW4gb25seSoqKgpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTQsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CgoKbGlicmFyeShwbG90bHkpCk1lbiA8LSBnZ3Bsb3QoZGF0YV9zZXgsIGFlcyh4ID0gYmlydGgueWVhcl9oaWdoLCAKICAgICAgICAgICAgICAgICAgeSA9IG1lbiwKICAgICAgICAgICAgICAgICAgY29sb3IgPSBBdXRob3IsIAogICAgICAgICAgICAgICAgICBzaXplID0gbl9tKSkgKyAKICBnZW9tX2xpbmUobGluZXR5cGUgPSAiZGFzaGVkIiwgc2l6ZSA9IDEuMikgKyAKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMTkwMCwgMjAwNSwgNSkpICsgCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cz1jKDAsMTAwKSxicmVha3MgPSBzZXEoMCwxMDAsNSkpKwogIHNjYWxlX2NvbG91cl9tYW51YWwobmFtZSA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiI0VFMTI4OSIsICIjN0ZGRkQ0IiwgIiM4MzhCOEIiLCAiIzAwMDAwMCIsICIjMDAwMEVFIiwgIiM4QjIzMjMiLCAiIzMyQ0QzMiIsICIjNEY5NENEIiwgIiNDRDRGMzkiLCAiI0NEODUzRiIpLCAKICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cz1jKCJLaWt1Y2hpLCAxOTk4ICwgIDE5OTYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPZ2loYXJhLCAyMDAwICwgIDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllhbWFnYXRhLCAyMDAwICwgIDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDIwMDUgLCAgMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFtdXJhLCAyMDEyICwgIDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpcmF5YW1hLCAyMDE0ICwgIDIwMDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLCAyMDA4ICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaWJhdGEsIDIwMDIgLCAgMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVrYW8sIDE5OTMgLCAgMTk4NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9lc3MiKSwgCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJLaWt1Y2hpLDE5OTgsMTk5NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPZ2loYXJhLDIwMDAsMTk5MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hZ2F0YSwyMDAwLDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2lrdWNoaSwyMDA1LDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFtdXJhLDIwMTIsMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaXJheWFtYSwyMDE0LDIwMDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpb3RhbmksMjAwOCwyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaWJhdGEsMjAwMiwxOTkzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a2FvLDE5OTMsMTk4NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUT1RBTCBNRU4iKSkgKyAKICB5bGFiKCJQcmV2YWxlbmNlIGluIEphcGFuZXNlIG1lbiAoJSkiKSArIAogIHhsYWIoIkJpcnRoIFllYXIiKSArIAogIGdlb21fc21vb3RoKGFlcyhjb2xvdXIgPSAibG9lc3MiKSwgbWV0aG9kID0gImxvZXNzIikgKyAKICB0aGVtZV9idygpKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwgCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpKSwgCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuNSkpLCAKICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMikpLAogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLCAKICAgICAgICBsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiKSAKZ2dwbG90bHkoTWVuKSAKYGBgCgoKCiMjICoqKldvbWVuIG9ubHkqKioKYGBge3IsZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTQsIHdhcm5pbmc9RkFMU0V9CldvbWVuIDwtIGdncGxvdChkYXRhX3NleCwgYWVzKHggPSBiaXJ0aC55ZWFyX2hpZ2gsIAogICAgICAgICAgICAgICAgICB5ID0gd29tZW4sCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gQXV0aG9yLAogICAgICAgICAgICAgICAgICBzaXplID0gbl9mKSkgKyAKICBnZW9tX2xpbmUobGluZXR5cGUgPSAiZGFzaGVkIiwgc2l6ZSA9IDEuMikgKyAKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMTkwMCwgMjAwNSwgNSkpICsgCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cz1jKDAsMTAwKSxicmVha3MgPSBzZXEoMCwxMDAsNSkpKwogIHNjYWxlX2NvbG91cl9tYW51YWwobmFtZSA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiI0VFMTI4OSIsICIjN0ZGRkQ0IiwgIiM4MzhCOEIiLCAiIzAwMDAwMCIsICIjMDAwMEVFIiwgIiM4QjIzMjMiLCAiIzMyQ0QzMiIsICIjNEY5NENEIiwgIiNDRDRGMzkiLCAiI0NEODUzRiIpLCAKICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cz1jKCJLaWt1Y2hpLCAxOTk4ICwgIDE5OTYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPZ2loYXJhLCAyMDAwICwgIDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllhbWFnYXRhLCAyMDAwICwgIDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDIwMDUgLCAgMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFtdXJhLCAyMDEyICwgIDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpcmF5YW1hLCAyMDE0ICwgIDIwMDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLCAyMDA4ICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaWJhdGEsIDIwMDIgLCAgMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVrYW8sIDE5OTMgLCAgMTk4NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9lc3MiKSwgCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJLaWt1Y2hpLDE5OTgsMTk5NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPZ2loYXJhLDIwMDAsMTk5MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hZ2F0YSwyMDAwLDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2lrdWNoaSwyMDA1LDE5ODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFtdXJhLDIwMTIsMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaXJheWFtYSwyMDE0LDIwMDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpb3RhbmksMjAwOCwyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaWJhdGEsMjAwMiwxOTkzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a2FvLDE5OTMsMTk4NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUT1RBTCBXT01FTiIpKSArIAogIHlsYWIoIlByZXZhbGVuY2UgaW4gSmFwYW5lc2Ugd29tZW4gKCUpIikgKyAKICB4bGFiKCJCaXJ0aCBZZWFyIikgKyAKICBnZW9tX3Ntb290aChhZXMoY29sb3VyID0gImxvZXNzIiksIG1ldGhvZCA9ICJsb2VzcyIpICsgCiAgdGhlbWVfYncoKSsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsIAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4zKSksIAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuNSkpLCAKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjIpKSwKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBmYWNlID0gImJvbGQiKSwgCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIikKZ2dwbG90bHkoV29tZW4pIAoKYGBgCgo=