library(tidyverse)
library(pewdata)
pew <- read.csv("January 3-10, 2018 - Core Trends Survey/January 3-10, 2018 - Core Trends Survey - CSV.csv")

Reading in the .CSV file.

glimpse(pew)
Rows: 2,002
Columns: 70
$ respid      <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 20, 21, 23, 24, 25, 26, 27, 28, 2…
$ sample      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
$ comp        <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
$ int_date    <dbl> 180103, 180103, 180103, 180103, 180103, 180103, 180103, 180103, 180103, 180103, …
$ lang        <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,…
$ cregion     <dbl> 1, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 2, 1, 1, 2, 1, 2, 1, 1, 3, 3, 2,…
$ state       <dbl> 42, 45, 34, 24, 33, 37, 12, 34, 51, 54, 51, 12, 42, 37, 51, 21, 39, 42, 36, 26, …
$ density     <dbl> 5, 2, 5, 4, 2, 3, 5, 5, 1, 2, 2, 5, 4, 1, 2, 2, 2, 3, 1, 5, 4, 5, 1, 3, 4, 2, 4,…
$ usr         <chr> "U", "S", "S", "S", "R", "U", "U", "S", "R", "R", "S", "U", "S", "R", "S", "U", …
$ qs1         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ sex         <dbl> 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2,…
$ eminuse     <dbl> 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1,…
$ intmob      <dbl> 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1,…
$ intfreq     <dbl> 1, NA, 3, 4, 2, 2, 2, 2, NA, 2, 2, 2, NA, 3, 2, 2, NA, 4, NA, 3, 3, 3, 2, NA, 2,…
$ home4nw     <dbl> 1, NA, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, NA, 1, 1, 1, NA, 2, NA, 1, 1, 1, 1, NA, 1,…
$ bbhome1     <dbl> 2, NA, 2, 2, 2, 2, 2, 2, NA, 2, 2, 2, NA, 2, 2, 2, NA, NA, NA, 2, 2, 2, 2, NA, 2…
$ bbhome2     <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ device1a    <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 2, 1, 1,…
$ smart2      <dbl> 1, 2, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, NA, 1, 1, 1, 2, 1, NA, NA, NA, 2, NA, 2, NA…
$ snsint2     <dbl> 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1,…
$ device1b    <dbl> 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1,…
$ device1c    <dbl> 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 1,…
$ device1d    <dbl> 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 9, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2,…
$ web1a       <dbl> 2, 2, 2, 2, 2, 1, 2, 2, NA, 2, 1, 2, NA, 1, 2, 2, 2, 2, NA, 2, 2, 2, 2, 2, 2, 2,…
$ web1b       <dbl> 1, 2, 2, 2, 2, 2, 2, 2, NA, 2, 1, 2, NA, 2, 2, 2, 2, 2, NA, 2, 2, 2, 2, 2, 2, 2,…
$ web1c       <dbl> 1, 2, 2, 1, 1, 1, 1, 1, NA, 1, 1, 1, NA, 1, 1, 2, 2, 1, NA, 2, 2, 2, 2, 2, 2, 2,…
$ web1d       <dbl> 1, 2, 2, 2, 2, 2, 2, 2, NA, 2, 2, 2, NA, 2, 2, 2, 2, 1, NA, 2, 2, 2, 2, 2, 2, 2,…
$ web1e       <dbl> 1, 2, 2, 2, 1, 1, 1, 1, NA, 1, 1, 1, NA, 1, 2, 2, 2, 1, NA, 1, 2, 1, 1, 2, 2, 1,…
$ web1f       <dbl> 1, 2, 2, 2, 2, 2, 2, 2, NA, 2, 2, 2, NA, 1, 2, 2, 2, 2, NA, 2, 2, 2, 2, 2, 2, 2,…
$ web1g       <dbl> 2, 2, 2, 2, 1, 1, 1, 1, NA, 2, 2, 2, NA, 1, 1, 2, 2, 8, NA, 1, 2, 1, 1, 2, 2, 2,…
$ web1h       <dbl> 2, 2, 2, 2, 1, 1, 1, 1, NA, 2, 2, 2, NA, 2, 2, 2, 2, 2, NA, 8, 2, 2, 2, 2, 2, 2,…
$ sns2a       <dbl> NA, NA, NA, NA, NA, 2, NA, NA, NA, NA, 1, NA, NA, 4, NA, NA, NA, NA, NA, NA, NA,…
$ sns2b       <dbl> 1, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ sns2c       <dbl> 1, NA, NA, 3, 3, 1, 3, 2, NA, 2, 3, 5, NA, 1, 5, NA, NA, 5, NA, NA, NA, NA, NA, …
$ sns2d       <dbl> 3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 5, NA, NA, NA…
$ sns2e       <dbl> 3, NA, NA, NA, 2, 3, 5, 4, NA, 4, 4, 3, NA, 4, NA, NA, NA, 3, NA, 1, NA, 1, 1, N…
$ pial5a      <dbl> 2, 2, 1, 2, 1, 3, 3, 2, 6, 1, 1, 2, 1, 1, 3, 2, 1, 1, 1, 1, 1, 3, 1, 6, 1, 4, 4,…
$ pial5b      <dbl> 1, 3, 2, 3, 2, 5, 3, 2, NA, 2, 4, 1, NA, 3, 1, 1, 4, 1, NA, NA, NA, 2, NA, 2, NA…
$ pial5c      <dbl> 2, NA, 1, 3, 1, 1, 3, 2, NA, 2, 1, 1, NA, 1, 3, 1, NA, 3, NA, 4, 1, 2, 1, NA, 4,…
$ pial5d      <dbl> 3, NA, NA, 3, 3, 1, 4, 3, NA, 3, NA, 4, NA, 3, 4, NA, NA, NA, NA, NA, NA, NA, NA…
$ pial11      <dbl> 1, 8, 1, 2, 1, 3, 8, 1, 8, 1, 1, 1, 8, 1, 2, 1, 2, 1, 2, 1, 1, 1, 3, 2, 1, 1, 2,…
$ pial11a     <dbl> 1, NA, 1, 1, 1, NA, NA, 1, NA, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1,…
$ `pial11ao@` <chr> "information has become available more frequently and easier", NA, "it connects …
$ pial11_igbm <dbl> 1, 9, 2, 5, 1, 9, 9, 1, 9, 1, 1, 1, 9, 1, 8, 1, 7, 1, 8, 1, 1, 1, 9, 4, 1, 2, 4,…
$ pial12      <dbl> 1, NA, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, NA, 1, 8, 1, NA, 1, NA, 1, 1, 1, 1, NA, 2,…
$ books1      <dbl> 1, 5, 0, 2, 6, 18, 3, 2, 3, 97, 5, 8, 6, 3, 98, 12, 0, 1, 0, 0, 0, 0, 0, 4, 1, 1…
$ books2a     <dbl> 1, 1, NA, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, NA, 2, NA, NA, NA, NA, NA, 1, 1…
$ books2b     <dbl> 2, 2, NA, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, NA, 1, NA, NA, NA, NA, NA, 2, 2…
$ books2c     <dbl> 2, 2, NA, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, NA, 2, NA, NA, NA, NA, NA, 2, 2…
$ age         <dbl> 33, 76, 99, 60, 55, 58, 99, 72, 58, 68, 65, 63, 88, 64, 40, 50, 67, 30, 84, 43, …
$ marital     <dbl> 2, 1, 5, 2, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 3, 8, 1, 6, 4, 5, 1, 1, 1, 9, 1,…
$ educ2       <dbl> 3, 98, 5, 5, 4, 7, 5, 6, 1, 6, 7, 6, 7, 6, 7, 4, 4, 3, 3, 3, 5, 3, 4, 3, 1, 99, …
$ emplnw      <dbl> 1, 3, 5, 8, 1, 1, 5, 4, 4, 3, 3, 2, 3, 3, 4, 1, 3, 6, 3, 6, 6, 3, 3, 2, 3, 99, 3…
$ hisp        <dbl> 2, 2, 2, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 1, 9, 2,…
$ racem1      <dbl> 1, 1, 1, 1, 1, 1, 9, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 7, 9, 1,…
$ racem2      <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ racem3      <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ racem4      <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ racecmb     <dbl> 1, 1, 1, 1, 1, 1, 9, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 5, 9, 1,…
$ birth_hisp  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ inc         <dbl> 6, 4, 4, 2, 7, 7, 9, 6, 1, 2, 2, 6, 4, 5, 99, 9, 3, 1, 3, 1, 2, 3, 2, 2, 1, 99, …
$ party       <dbl> 2, 3, 1, 2, 1, 3, 2, 3, 1, 4, 1, 3, 2, 1, 1, 1, 3, 3, 4, 8, 3, 1, 3, 1, 4, 9, 1,…
$ partyln     <dbl> NA, 8, NA, NA, NA, 2, NA, 2, NA, 8, NA, 1, NA, NA, NA, NA, 8, 2, 1, 8, 1, NA, 1,…
$ hh1         <dbl> 5, 2, 1, 2, 3, 2, 2, 2, 1, 2, 5, 2, 2, 2, 9, 9, 1, 2, 2, 5, 4, 3, 3, 6, 2, 9, 2,…
$ hh3         <dbl> 4, 2, NA, 2, 3, 2, 2, 2, NA, 2, 4, 2, 2, 2, 2, 2, NA, 2, 2, 3, 4, 3, 3, 2, 2, 2,…
$ ql1         <dbl> 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1,…
$ ql1a        <dbl> NA, 2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2, NA, NA, NA, NA, NA, 2, NA, 1, …
$ qc1         <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ weight      <dbl> 1.7463586, 1.6597644, 0.4908044, 0.9479652, 0.9159586, 0.4850252, 0.6532008, 0.4…
$ cellweight  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …

A glimpse of the data.

pew <- pew %>% 
  mutate(web1c = as.factor(web1c))


pew %>% 
  count(web1c)

Converting Facebook use data to be a factor.

pew <- pew %>%
mutate(Facebook = fct_recode(web1c, 
                             "yes" = "1", 
                             "No" = "2",
                             "Dont know" = "8",
                             "Refused" = "9"))
      
pew %>%
  count(Facebook)

Re-coding numerical data to give character labels for use of Facebook

pew <- pew %>% 
  mutate(educ2 = as.factor(educ2))


pew %>% 
  count(educ2)

Converting the education data to be a factor.

pew <- pew %>%
  mutate(Education = fct_recode(educ2,
                            "Less than HS" = "1", 
                            "Some HS" = "2", 
                            "HS graduate" = "3", 
                            "Some college" = "4", 
                            "Associate degree" = "5", 
                            "College degree" = "6", 
                            "Some grad school" = "7", 
                            "Grad degree" = "8", 
                            "Don't know" = "98", 
                            "Refused" = "99"))


pew %>%
count(Education)

Re-coding numerical data to give character labels for education level

pew %>% 
  drop_na(intfreq) %>%
  count(Facebook, Education)

Facebook use by education level.

pew %>% 
  drop_na(intfreq) %>% 
  ggplot(aes(x = Facebook, fill = Education)) +
  geom_bar()

This vertical stacked bar graph indicates that there were almost an equal amount of Facebook users with the educational level of Some HS and College degree. It also appears that individuals with less than a High School diploma, were less likely to be on Facebook.

pew %>% 
  drop_na(intfreq) %>% 
  ggplot(aes(x = Education, fill = Facebook)) +
  scale_fill_viridis_d() +
  geom_bar(position = "dodge") +
coord_flip() +
theme_minimal()

This is a vertical bar graph representing the same thing as the previous graph. Those with a college degree the largest population to use Facebook. It appears those with a less than High School education were on Facebook the least.

pew <- pew %>% 
  mutate(Education = fct_collapse(educ2,
                                         College_below = c("College degree", "Associate degree",  "Some college", "HS graduate", "Some HS", "Less than HS"),
                                         Grad_above = c("Grad degree", "Some grad school", "Don't know", "Refused")))

pew %>% 
  count(Education)

This shows education level grouped by under-graduate and graduate level.

pew %>% 
  drop_na(intfreq) %>% 
  ggplot(aes(x = Education, fill = Facebook)) +
  scale_fill_viridis_d() +
  geom_bar(position = "fill") +
coord_flip()

This is a horizontal stacked bar graph representation of the data. College degree utilized Facebook the most while those with less than a High school education utilized it the least.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwZXdkYXRhKQpgYGAKCgoKCgpgYGB7ciB3YXJuaW5nPUZBTFNFfQpwZXcgPC0gcmVhZC5jc3YoIkphbnVhcnkgMy0xMCwgMjAxOCAtIENvcmUgVHJlbmRzIFN1cnZleS9KYW51YXJ5IDMtMTAsIDIwMTggLSBDb3JlIFRyZW5kcyBTdXJ2ZXkgLSBDU1YuY3N2IikKYGBgCgoKKipSZWFkaW5nIGluIHRoZSAuQ1NWIGZpbGUuKioKCgpgYGB7cn0KZ2xpbXBzZShwZXcpCmBgYAoKCioqQSBnbGltcHNlIG9mIHRoZSBkYXRhLioqCgoKYGBge3J9CnBldyA8LSBwZXcgJT4lIAogIG11dGF0ZSh3ZWIxYyA9IGFzLmZhY3Rvcih3ZWIxYykpCgoKcGV3ICU+JSAKICBjb3VudCh3ZWIxYykKYGBgCgoKKipDb252ZXJ0aW5nIEZhY2Vib29rIHVzZSBkYXRhIHRvIGJlIGEgZmFjdG9yLioqCgoKYGBge3J9CnBldyA8LSBwZXcgJT4lCm11dGF0ZShGYWNlYm9vayA9IGZjdF9yZWNvZGUod2ViMWMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5ZXMiID0gIjEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEb250IGtub3ciID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWZ1c2VkIiA9ICI5IikpCiAgICAgIApwZXcgJT4lCiAgY291bnQoRmFjZWJvb2spCmBgYAoKCioqUmUtY29kaW5nIG51bWVyaWNhbCBkYXRhIHRvIGdpdmUgY2hhcmFjdGVyIGxhYmVscyBmb3IgdXNlIG9mIEZhY2Vib29rKioKCgpgYGB7cn0KcGV3IDwtIHBldyAlPiUgCiAgbXV0YXRlKGVkdWMyID0gYXMuZmFjdG9yKGVkdWMyKSkKCgpwZXcgJT4lIAogIGNvdW50KGVkdWMyKQpgYGAKCgoqKkNvbnZlcnRpbmcgdGhlIGVkdWNhdGlvbiBkYXRhIHRvIGJlIGEgZmFjdG9yLioqCgoKYGBge3Igd2FybmluZz1UUlVFfQpwZXcgPC0gcGV3ICU+JQogIG11dGF0ZShFZHVjYXRpb24gPSBmY3RfcmVjb2RlKGVkdWMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiBIUyIgPSAiMSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgSFMiID0gIjIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIUyBncmFkdWF0ZSIgPSAiMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgY29sbGVnZSIgPSAiNCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFzc29jaWF0ZSBkZWdyZWUiID0gIjUiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb2xsZWdlIGRlZ3JlZSIgPSAiNiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgZ3JhZCBzY2hvb2wiID0gIjciLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHcmFkIGRlZ3JlZSIgPSAiOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3ciID0gIjk4IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVmdXNlZCIgPSAiOTkiKSkKCgpwZXcgJT4lCmNvdW50KEVkdWNhdGlvbikKYGBgCgoKKipSZS1jb2RpbmcgbnVtZXJpY2FsIGRhdGEgdG8gZ2l2ZSBjaGFyYWN0ZXIgbGFiZWxzIGZvciBlZHVjYXRpb24gbGV2ZWwqKgoKCmBgYHtyfQpwZXcgJT4lIAogIGRyb3BfbmEoaW50ZnJlcSkgJT4lCiAgY291bnQoRmFjZWJvb2ssIEVkdWNhdGlvbikKYGBgCgoKKipGYWNlYm9vayB1c2UgYnkgZWR1Y2F0aW9uIGxldmVsLioqCgoKYGBge3J9CnBldyAlPiUgCiAgZHJvcF9uYShpbnRmcmVxKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gRmFjZWJvb2ssIGZpbGwgPSBFZHVjYXRpb24pKSArCiAgZ2VvbV9iYXIoKQpgYGAKCgoqKlRoaXMgdmVydGljYWwgc3RhY2tlZCBiYXIgZ3JhcGggaW5kaWNhdGVzIHRoYXQgdGhlcmUgd2VyZSBhbG1vc3QgYW4gZXF1YWwgYW1vdW50IG9mIEZhY2Vib29rIHVzZXJzIHdpdGggdGhlIGVkdWNhdGlvbmFsIGxldmVsIG9mIFNvbWUgSFMgYW5kIENvbGxlZ2UgZGVncmVlLiBJdCBhbHNvIGFwcGVhcnMgdGhhdCBpbmRpdmlkdWFscyB3aXRoIGxlc3MgdGhhbiBhIEhpZ2ggU2Nob29sIGRpcGxvbWEsIHdlcmUgbGVzcyBsaWtlbHkgdG8gYmUgb24gRmFjZWJvb2suKioKCgpgYGB7cn0KcGV3ICU+JSAKICBkcm9wX25hKGludGZyZXEpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBFZHVjYXRpb24sIGZpbGwgPSBGYWNlYm9vaykpICsKICBzY2FsZV9maWxsX3ZpcmlkaXNfZCgpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJkb2RnZSIpICsKY29vcmRfZmxpcCgpICsKdGhlbWVfbWluaW1hbCgpCmBgYAoKCioqVGhpcyBpcyBhIHZlcnRpY2FsIGJhciBncmFwaCByZXByZXNlbnRpbmcgdGhlIHNhbWUgdGhpbmcgYXMgdGhlIHByZXZpb3VzIGdyYXBoLiBUaG9zZSB3aXRoIGEgY29sbGVnZSBkZWdyZWUgdGhlIGxhcmdlc3QgcG9wdWxhdGlvbiB0byB1c2UgRmFjZWJvb2suIEl0IGFwcGVhcnMgdGhvc2Ugd2l0aCBhIGxlc3MgdGhhbiBIaWdoIFNjaG9vbCBlZHVjYXRpb24gd2VyZSBvbiBGYWNlYm9vayB0aGUgbGVhc3QuKioKCgpgYGB7cn0KcGV3IDwtIHBldyAlPiUgCiAgbXV0YXRlKEVkdWNhdGlvbiA9IGZjdF9jb2xsYXBzZShlZHVjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWdlX2JlbG93ID0gYygiQ29sbGVnZSBkZWdyZWUiLCAiQXNzb2NpYXRlIGRlZ3JlZSIsICAiU29tZSBjb2xsZWdlIiwgIkhTIGdyYWR1YXRlIiwgIlNvbWUgSFMiLCAiTGVzcyB0aGFuIEhTIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhZF9hYm92ZSA9IGMoIkdyYWQgZGVncmVlIiwgIlNvbWUgZ3JhZCBzY2hvb2wiLCAiRG9uJ3Qga25vdyIsICJSZWZ1c2VkIikpKQoKcGV3ICU+JSAKICBjb3VudChFZHVjYXRpb24pCmBgYAoKCioqVGhpcyBzaG93cyBlZHVjYXRpb24gbGV2ZWwgZ3JvdXBlZCBieSB1bmRlci1ncmFkdWF0ZSBhbmQgZ3JhZHVhdGUgbGV2ZWwuKiogCgoKYGBge3J9CnBldyAlPiUgCiAgZHJvcF9uYShpbnRmcmVxKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gRWR1Y2F0aW9uLCBmaWxsID0gRmFjZWJvb2spKSArCiAgc2NhbGVfZmlsbF92aXJpZGlzX2QoKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKY29vcmRfZmxpcCgpCmBgYAoKCioqVGhpcyBpcyBhIGhvcml6b250YWwgc3RhY2tlZCBiYXIgZ3JhcGggcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGEuIENvbGxlZ2UgZGVncmVlIHV0aWxpemVkIEZhY2Vib29rIHRoZSBtb3N0IHdoaWxlIHRob3NlIHdpdGggbGVzcyB0aGFuIGEgSGlnaCBzY2hvb2wgZWR1Y2F0aW9uIHV0aWxpemVkIGl0IHRoZSBsZWFzdC4qKgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=