Cancer Death Rate Amoung Different Age and Race in 2013

For our assignment, we will explore cancer 2013 data that originates from the Centers for Disease Control and Prevention (CDC) and the Centers for Medicare & Medicaid Services (CMS). This Data Sets provide information about death rates due to different types of cancers on the U.S county and state level. We are mainly interested in total death from cancer amoung young and old people and different Race. For our Purpose we define \(YOUNG\) as age between 18 to 44 and \(OLD\) age between 45 to 64 .

Import our \(CSV\) data and look at our imported data

library(readr)
cancer_df<- read_csv("C:/Users/Afzal Hossain/Documents/A.Spring 2019/SOC 712/HW/hw2/R12021551_SL040.csv",col_names = TRUE)
head(cancer_df)

Let’s Keep only the Variables that we are interested.

library(dplyr)
Cancer_18_to_64_Death<-select(cancer_df,"Name of Area" ,"Total Cancer Deaths (18 to 44 Years, Rate per 100,000 Population, 2007-2013)","Total Cancer Deaths (45 to 64 Years, Rate per 100,000 Population, 2007-2013)","Total Cancer Deaths (18 to 44 Years, 2007-2013)" : "Total Cancer Deaths (18 to 44 Years American Indian or Alaska Native, 2007-2013)","Total Cancer Deaths (45 to 64 Years, 2007-2013)":"Total Cancer Deaths (45 to 64 Years American Indian or Alaska Native, 2007-2013)")
names(Cancer_18_to_64_Death)
 [1] "Name of Area"                                                                          
 [2] "Total Cancer Deaths (18 to 44 Years, Rate per 100,000 Population, 2007-2013)"          
 [3] "Total Cancer Deaths (45 to 64 Years, Rate per 100,000 Population, 2007-2013)"          
 [4] "Total Cancer Deaths (18 to 44 Years, 2007-2013)"                                       
 [5] "Total Cancer Deaths (18 to 44 Years White, 2007-2013)"                                 
 [6] "Total Cancer Deaths (18 to 44 Years White Non-Hispanic, 2007-2013)"                    
 [7] "Total Cancer Deaths (18 to 44 Years Black or African American, 2007-2013)"             
 [8] "Total Cancer Deaths (18 to 44 Years Black or African American Non-Hispanic, 2007-2013)"
 [9] "Total Cancer Deaths (18 to 44 Years Asian or Pacific Islander, 2007-2013)"             
[10] "Total Cancer Deaths (18 to 44 Years American Indian or Alaska Native, 2007-2013)"      
[11] "Total Cancer Deaths (45 to 64 Years, 2007-2013)"                                       
[12] "Total Cancer Deaths (45 to 64 Years White, 2007-2013)"                                 
[13] "Total Cancer Deaths (45 to 64 Years White Non-Hispanic, 2007-2013)"                    
[14] "Total Cancer Deaths (45 to 64 Years Black or African American, 2007-2013)"             
[15] "Total Cancer Deaths (45 to 64 Years Black or African American Non-Hispanic, 2007-2013)"
[16] "Total Cancer Deaths (45 to 64 Years Asian or Pacific Islander, 2007-2013)"             
[17] "Total Cancer Deaths (45 to 64 Years American Indian or Alaska Native, 2007-2013)"      

Let’s Plote Now Usiing \(ggplot2\)

The Total Young People Dath Rate per one hundred thousand people for Each State and where size of the dote represent Total number of young people Die in Cancer.

library(ggplot2)
ggplot(data = Cancer_18_to_64_Death, aes(`Name of Area`,`Total Cancer Deaths (18 to 44 Years, Rate per 100,000 Population, 2007-2013)` )) + 
    geom_point(aes(size=`Total Cancer Deaths (18 to 44 Years, 2007-2013)`))+
       scale_fill_gradient2(low = ("red"), mid = "white",high = ("blue"), midpoint = 0, space = "Lab",na.value =                    "grey50", guide = "colourbar") + coord_flip() +
               ggtitle("Total Young People Dath and Reate per Hundred Thousand People") +
                  xlab("State") + ylab(" Cancer Death Reate per Hundred Thousand Peopl") +theme_minimal()

Ploting More Variable Side By Side

We will plot \(2013\) total death of Young and Old people side by side for each State

library(gridExtra)
#plot the 18 to 44 year
x<-ggplot(data=Cancer_18_to_64_Death, aes(x=`Name of Area`, y=`Total Cancer Deaths (18 to 44 Years, 2007-2013)`)) +
  geom_bar(stat="identity",fill="deeppink1")+ coord_flip()+
  geom_text(aes(label=`Total Cancer Deaths (18 to 44 Years, 2007-2013)`), vjust=.4, color="Black", size=2.6)+
  ggtitle("Aged Between 18 to 44 Years") +
  xlab("State") + ylab("Total Death") +theme_minimal()
# plot 45 to 64 year
y<-ggplot(data=Cancer_18_to_64_Death, aes(x=`Name of Area`, y=`Total Cancer Deaths (45 to 64 Years, 2007-2013)`)) +
  geom_bar(stat="identity",fill="darkorange1")+ coord_flip()+
  geom_text(aes(label=`Total Cancer Deaths (45 to 64 Years, 2007-2013)`), vjust=.5, color="Black", size=3.0)+
  ggtitle("Aged Between 45 to 64 Years") +
  xlab("State") + ylab("Total Death") +theme_minimal()
grid.arrange(x, y, ncol = 2)

From this plot we can see that California, New York, Florida and Illinois has the hight mortality rate. Its because those state has the higher population.

Using magrittr and Group By and Summarize

Inorder to compare Young and Old people total death because of cancer per state, we have to use Group by.

Cancer_young_Death_Avg<- Cancer_18_to_64_Death  %>% 
         filter(!is.na(`Total Cancer Deaths (18 to 44 Years, 2007-2013)`),!is.na(`Total Cancer Deaths (45 to 64 Years, 2007-2013)`))%>%
                  group_by(`Name of Area`) %>% 
                      summarize(Total_young_Death = sum(`Total Cancer Deaths (18 to 44 Years, 2007-2013)`),
                                Total_Old_Death =sum(`Total Cancer Deaths (45 to 64 Years, 2007-2013)`))
Cancer_young_Death_Avg

Create Variable using \(mutate\)

Now lets Create a New Variable Youngn Minority Deaths where we sum all the death of young minority group.

# Using Mutate
Cancer_young_Death_minority <- Cancer_18_to_64_Death %>% 
   mutate( "Young Minority Deaths" = `Total Cancer Deaths (18 to 44 Years Black or African American, 2007-2013)`+
                +`Total Cancer Deaths (18 to 44 Years Black or African American Non-Hispanic, 2007-2013)`      
                +`Total Cancer Deaths (18 to 44 Years Asian or Pacific Islander, 2007-2013)` 
                +`Total Cancer Deaths (18 to 44 Years American Indian or Alaska Native, 2007-2013)`)
names(Cancer_young_Death_minority)
 [1] "Name of Area"                                                                          
 [2] "Total Cancer Deaths (18 to 44 Years, Rate per 100,000 Population, 2007-2013)"          
 [3] "Total Cancer Deaths (45 to 64 Years, Rate per 100,000 Population, 2007-2013)"          
 [4] "Total Cancer Deaths (18 to 44 Years, 2007-2013)"                                       
 [5] "Total Cancer Deaths (18 to 44 Years White, 2007-2013)"                                 
 [6] "Total Cancer Deaths (18 to 44 Years White Non-Hispanic, 2007-2013)"                    
 [7] "Total Cancer Deaths (18 to 44 Years Black or African American, 2007-2013)"             
 [8] "Total Cancer Deaths (18 to 44 Years Black or African American Non-Hispanic, 2007-2013)"
 [9] "Total Cancer Deaths (18 to 44 Years Asian or Pacific Islander, 2007-2013)"             
[10] "Total Cancer Deaths (18 to 44 Years American Indian or Alaska Native, 2007-2013)"      
[11] "Total Cancer Deaths (45 to 64 Years, 2007-2013)"                                       
[12] "Total Cancer Deaths (45 to 64 Years White, 2007-2013)"                                 
[13] "Total Cancer Deaths (45 to 64 Years White Non-Hispanic, 2007-2013)"                    
[14] "Total Cancer Deaths (45 to 64 Years Black or African American, 2007-2013)"             
[15] "Total Cancer Deaths (45 to 64 Years Black or African American Non-Hispanic, 2007-2013)"
[16] "Total Cancer Deaths (45 to 64 Years Asian or Pacific Islander, 2007-2013)"             
[17] "Total Cancer Deaths (45 to 64 Years American Indian or Alaska Native, 2007-2013)"      
[18] "Young Minority Deaths"                                                                 

We can see that our newly created variable at the bottom.

Compare Our New Variable with Other Variable using group by and Summarize

Cancer_young_minority_White<- Cancer_young_Death_minority  %>% 
  filter(!is.na(`Total Cancer Deaths (18 to 44 Years White, 2007-2013)`),!is.na(`Young Minority Deaths`))%>%
         group_by(`Name of Area`) %>% 
             summarize(under_44_Minority = sum(`Young Minority Deaths`),Under_44_White =sum(`Total Cancer Deaths (18 to 44 Years White, 2007-2013)`))
head(Cancer_young_minority_White)

Using \(melt\)

Ploting the summarize Variable by making it long, so we can compare side by side time will compare minority with white demographic cancer death

library(tidyr)
Cancer_young_minority_White.long<-melt(Cancer_young_minority_White)
Using Name of Area as id variables
ggplot(Cancer_young_minority_White.long,aes(`Name of Area`,value,fill=variable))+
  geom_bar(stat="identity",position="dodge")+coord_flip()+
       ggtitle(" Young Minority VS Young White People Death By Cancer ") +
             xlab("State") + ylab("Total Death") +theme_minimal()

LS0tDQp0aXRsZTogIk1kIEFmemFsIEhvc3NhaW4gfCBTT0MgNzEyIHwgSG9tZSBXb3JrOiAyIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQojIyAqQ2FuY2VyIERlYXRoIFJhdGUgQW1vdW5nIERpZmZlcmVudCBBZ2UgYW5kIFJhY2UgaW4gMjAxMyoNCg0KRm9yIG91ciBhc3NpZ25tZW50LCB3ZSB3aWxsIGV4cGxvcmUgY2FuY2VyIDIwMTMgZGF0YSB0aGF0IG9yaWdpbmF0ZXMgZnJvbSB0aGUgQ2VudGVycyBmb3IgRGlzZWFzZSBDb250cm9sIGFuZCBQcmV2ZW50aW9uIChDREMpIGFuZCB0aGUgQ2VudGVycyBmb3IgTWVkaWNhcmUgJiBNZWRpY2FpZCBTZXJ2aWNlcyAoQ01TKS4gVGhpcyBEYXRhIFNldHMgcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBkZWF0aCByYXRlcyBkdWUgdG8gZGlmZmVyZW50IHR5cGVzIG9mIGNhbmNlcnMgb24gdGhlIFUuUyBjb3VudHkgYW5kIHN0YXRlIGxldmVsLiANCldlIGFyZSBtYWlubHkgaW50ZXJlc3RlZCBpbiB0b3RhbCBkZWF0aCBmcm9tIGNhbmNlciBhbW91bmcgeW91bmcgYW5kIG9sZCBwZW9wbGUgYW5kIGRpZmZlcmVudCBSYWNlLiBGb3Igb3VyIFB1cnBvc2Ugd2UgZGVmaW5lICRZT1VORyQgYXMgYWdlIGJldHdlZW4gYDE4IHRvIDQ0YCBhbmQgJE9MRCQgYWdlIGJldHdlZW4gYDQ1IHRvIDY0YCAuDQoNCg0KDQojIyMgSW1wb3J0IG91ciAkQ1NWJCBkYXRhIGFuZCBsb29rIGF0IG91ciBpbXBvcnRlZCBkYXRhDQoNCg0KYGBge3IgbWVzc2FnZT1GQUxTRX0NCg0KDQoNCmxpYnJhcnkocmVhZHIpDQpjYW5jZXJfZGY8LSByZWFkX2NzdigiQzovVXNlcnMvQWZ6YWwgSG9zc2Fpbi9Eb2N1bWVudHMvQS5TcHJpbmcgMjAxOS9TT0MgNzEyL0hXL2h3Mi9SMTIwMjE1NTFfU0wwNDAuY3N2Iixjb2xfbmFtZXMgPSBUUlVFKQ0KDQoNCmhlYWQoY2FuY2VyX2RmKQ0KDQoNCmBgYA0KDQoNCg0KIyMjIExldCdzIEtlZXAgb25seSB0aGUgVmFyaWFibGVzIHRoYXQgd2UgYXJlIGludGVyZXN0ZWQuDQoNCmBgYHtyfQ0KDQoNCmxpYnJhcnkoZHBseXIpDQoNCg0KQ2FuY2VyXzE4X3RvXzY0X0RlYXRoPC1zZWxlY3QoY2FuY2VyX2RmLCJOYW1lIG9mIEFyZWEiICwiVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMsIFJhdGUgcGVyIDEwMCwwMDAgUG9wdWxhdGlvbiwgMjAwNy0yMDEzKSIsIlRvdGFsIENhbmNlciBEZWF0aHMgKDQ1IHRvIDY0IFllYXJzLCBSYXRlIHBlciAxMDAsMDAwIFBvcHVsYXRpb24sIDIwMDctMjAxMykiLCJUb3RhbCBDYW5jZXIgRGVhdGhzICgxOCB0byA0NCBZZWFycywgMjAwNy0yMDEzKSIgOiAiVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMgQW1lcmljYW4gSW5kaWFuIG9yIEFsYXNrYSBOYXRpdmUsIDIwMDctMjAxMykiLCJUb3RhbCBDYW5jZXIgRGVhdGhzICg0NSB0byA2NCBZZWFycywgMjAwNy0yMDEzKSI6IlRvdGFsIENhbmNlciBEZWF0aHMgKDQ1IHRvIDY0IFllYXJzIEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2EgTmF0aXZlLCAyMDA3LTIwMTMpIikNCg0KDQpuYW1lcyhDYW5jZXJfMThfdG9fNjRfRGVhdGgpDQoNCmBgYA0KDQoNCiMjIyBMZXQncyBQbG90ZSBOb3cgVXNpaW5nICRnZ3Bsb3QyJA0KDQpUaGUgVG90YWwgWW91bmcgUGVvcGxlIERhdGggUmF0ZSBwZXIgb25lIGh1bmRyZWQgdGhvdXNhbmQgcGVvcGxlIGZvciBFYWNoIFN0YXRlIGFuZCB3aGVyZSBzaXplIG9mIHRoZSBkb3RlIHJlcHJlc2VudCBUb3RhbCBudW1iZXIgb2YgeW91bmcgcGVvcGxlIERpZSBpbiBDYW5jZXIuDQoNCmBgYHtyIGZpZy5hc3A9MiwgZmlnLndpZHRoPTEwfQ0KDQpsaWJyYXJ5KGdncGxvdDIpDQoNCmdncGxvdChkYXRhID0gQ2FuY2VyXzE4X3RvXzY0X0RlYXRoLCBhZXMoYE5hbWUgb2YgQXJlYWAsYFRvdGFsIENhbmNlciBEZWF0aHMgKDE4IHRvIDQ0IFllYXJzLCBSYXRlIHBlciAxMDAsMDAwIFBvcHVsYXRpb24sIDIwMDctMjAxMylgICkpICsgDQogICAgZ2VvbV9wb2ludChhZXMoc2l6ZT1gVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMsIDIwMDctMjAxMylgKSkrDQogICAgICAgc2NhbGVfZmlsbF9ncmFkaWVudDIobG93ID0gKCJyZWQiKSwgbWlkID0gIndoaXRlIixoaWdoID0gKCJibHVlIiksIG1pZHBvaW50ID0gMCwgc3BhY2UgPSAiTGFiIixuYS52YWx1ZSA9ICAgICAgICAgICAgICAgICAgICAiZ3JleTUwIiwgZ3VpZGUgPSAiY29sb3VyYmFyIikgKyBjb29yZF9mbGlwKCkgKw0KICAgICAgICAgICAgICAgZ2d0aXRsZSgiVG90YWwgWW91bmcgUGVvcGxlIERhdGggYW5kIFJlYXRlIHBlciBIdW5kcmVkIFRob3VzYW5kIFBlb3BsZSIpICsNCiAgICAgICAgICAgICAgICAgIHhsYWIoIlN0YXRlIikgKyB5bGFiKCIgQ2FuY2VyIERlYXRoIFJlYXRlIHBlciBIdW5kcmVkIFRob3VzYW5kIFBlb3BsIikgK3RoZW1lX21pbmltYWwoKQ0KYGBgDQoNCg0KIyMjIFBsb3RpbmcgTW9yZSBWYXJpYWJsZSBTaWRlIEJ5IFNpZGUNCg0KV2Ugd2lsbCBwbG90ICQyMDEzJCB0b3RhbCBkZWF0aCBvZiBZb3VuZyBhbmQgT2xkIHBlb3BsZSBzaWRlIGJ5IHNpZGUgZm9yIGVhY2ggU3RhdGUNCg0KYGBge3IgZmlnLmFzcD0yLCBmaWcud2lkdGg9OH0NCg0KbGlicmFyeShncmlkRXh0cmEpDQoNCg0KI3Bsb3QgdGhlIDE4IHRvIDQ0IHllYXINCg0KeDwtZ2dwbG90KGRhdGE9Q2FuY2VyXzE4X3RvXzY0X0RlYXRoLCBhZXMoeD1gTmFtZSBvZiBBcmVhYCwgeT1gVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMsIDIwMDctMjAxMylgKSkgKw0KICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsZmlsbD0iZGVlcHBpbmsxIikrIGNvb3JkX2ZsaXAoKSsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbD1gVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMsIDIwMDctMjAxMylgKSwgdmp1c3Q9LjQsIGNvbG9yPSJCbGFjayIsIHNpemU9Mi42KSsNCiAgZ2d0aXRsZSgiQWdlZCBCZXR3ZWVuIDE4IHRvIDQ0IFllYXJzIikgKw0KICB4bGFiKCJTdGF0ZSIpICsgeWxhYigiVG90YWwgRGVhdGgiKSArdGhlbWVfbWluaW1hbCgpDQoNCg0KIyBwbG90IDQ1IHRvIDY0IHllYXINCg0KDQp5PC1nZ3Bsb3QoZGF0YT1DYW5jZXJfMThfdG9fNjRfRGVhdGgsIGFlcyh4PWBOYW1lIG9mIEFyZWFgLCB5PWBUb3RhbCBDYW5jZXIgRGVhdGhzICg0NSB0byA2NCBZZWFycywgMjAwNy0yMDEzKWApKSArDQogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IixmaWxsPSJkYXJrb3JhbmdlMSIpKyBjb29yZF9mbGlwKCkrDQogIGdlb21fdGV4dChhZXMobGFiZWw9YFRvdGFsIENhbmNlciBEZWF0aHMgKDQ1IHRvIDY0IFllYXJzLCAyMDA3LTIwMTMpYCksIHZqdXN0PS41LCBjb2xvcj0iQmxhY2siLCBzaXplPTMuMCkrDQogIGdndGl0bGUoIkFnZWQgQmV0d2VlbiA0NSB0byA2NCBZZWFycyIpICsNCiAgeGxhYigiU3RhdGUiKSArIHlsYWIoIlRvdGFsIERlYXRoIikgK3RoZW1lX21pbmltYWwoKQ0KDQoNCg0KDQpncmlkLmFycmFuZ2UoeCwgeSwgbmNvbCA9IDIpDQoNCg0KDQoNCg0KDQpgYGANCg0KDQoNCkZyb20gdGhpcyBwbG90IHdlIGNhbiBzZWUgdGhhdCBDYWxpZm9ybmlhLCBOZXcgWW9yaywgRmxvcmlkYSBhbmQgSWxsaW5vaXMgaGFzIHRoZSBoaWdodCBtb3J0YWxpdHkgcmF0ZS4gSXRzIGJlY2F1c2UgdGhvc2Ugc3RhdGUgaGFzIHRoZSBoaWdoZXIgcG9wdWxhdGlvbi4NCg0KIyMjIFVzaW5nIG1hZ3JpdHRyIGFuZCBHcm91cCBCeSBhbmQgU3VtbWFyaXplDQoNCklub3JkZXIgdG8gY29tcGFyZSBZb3VuZyBhbmQgT2xkIHBlb3BsZSB0b3RhbCBkZWF0aCBiZWNhdXNlIG9mIGNhbmNlciBwZXIgc3RhdGUsIHdlIGhhdmUgdG8gdXNlIEdyb3VwIGJ5Lg0KDQoNCmBgYHtyfQ0KQ2FuY2VyX3lvdW5nX0RlYXRoX0F2ZzwtIENhbmNlcl8xOF90b182NF9EZWF0aCAgJT4lIA0KICAgICAgICAgZmlsdGVyKCFpcy5uYShgVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMsIDIwMDctMjAxMylgKSwhaXMubmEoYFRvdGFsIENhbmNlciBEZWF0aHMgKDQ1IHRvIDY0IFllYXJzLCAyMDA3LTIwMTMpYCkpJT4lDQogICAgICAgICAgICAgICAgICBncm91cF9ieShgTmFtZSBvZiBBcmVhYCkgJT4lIA0KICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShUb3RhbF95b3VuZ19EZWF0aCA9IHN1bShgVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMsIDIwMDctMjAxMylgKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWxfT2xkX0RlYXRoID1zdW0oYFRvdGFsIENhbmNlciBEZWF0aHMgKDQ1IHRvIDY0IFllYXJzLCAyMDA3LTIwMTMpYCkpDQpDYW5jZXJfeW91bmdfRGVhdGhfQXZnDQpgYGANCg0KDQoNCiMjIyBDcmVhdGUgVmFyaWFibGUgdXNpbmcgJG11dGF0ZSQNCg0KTm93IGxldHMgQ3JlYXRlIGEgTmV3IFZhcmlhYmxlIGBZb3VuZ24gTWlub3JpdHkgRGVhdGhzYCAgd2hlcmUgd2Ugc3VtIGFsbCB0aGUgZGVhdGggb2YgeW91bmcgbWlub3JpdHkgZ3JvdXAuDQoNCg0KYGBge3IgfQ0KDQoNCg0KIyBVc2luZyBNdXRhdGUNCkNhbmNlcl95b3VuZ19EZWF0aF9taW5vcml0eSA8LSBDYW5jZXJfMThfdG9fNjRfRGVhdGggJT4lIA0KICAgbXV0YXRlKCAiWW91bmcgTWlub3JpdHkgRGVhdGhzIiA9IGBUb3RhbCBDYW5jZXIgRGVhdGhzICgxOCB0byA0NCBZZWFycyBCbGFjayBvciBBZnJpY2FuIEFtZXJpY2FuLCAyMDA3LTIwMTMpYCsNCiAgICAgICAgICAgICAgICArYFRvdGFsIENhbmNlciBEZWF0aHMgKDE4IHRvIDQ0IFllYXJzIEJsYWNrIG9yIEFmcmljYW4gQW1lcmljYW4gTm9uLUhpc3BhbmljLCAyMDA3LTIwMTMpYCAgICAgIA0KICAgICAgICAgICAgICAgICtgVG90YWwgQ2FuY2VyIERlYXRocyAoMTggdG8gNDQgWWVhcnMgQXNpYW4gb3IgUGFjaWZpYyBJc2xhbmRlciwgMjAwNy0yMDEzKWAgDQogICAgICAgICAgICAgICAgK2BUb3RhbCBDYW5jZXIgRGVhdGhzICgxOCB0byA0NCBZZWFycyBBbWVyaWNhbiBJbmRpYW4gb3IgQWxhc2thIE5hdGl2ZSwgMjAwNy0yMDEzKWApDQoNCm5hbWVzKENhbmNlcl95b3VuZ19EZWF0aF9taW5vcml0eSkNCg0KDQoNCg0KDQoNCg0KYGBgDQoNCldlIGNhbiBzZWUgdGhhdCBvdXIgbmV3bHkgY3JlYXRlZCB2YXJpYWJsZSBhdCB0aGUgYm90dG9tLg0KDQojIENvbXBhcmUgT3VyIE5ldyBWYXJpYWJsZSB3aXRoIE90aGVyIFZhcmlhYmxlIHVzaW5nIGdyb3VwIGJ5IGFuZCBTdW1tYXJpemUNCg0KDQpgYGB7ciBmaWcud2lkdGg9IDcsIGZpZy5hc3A9IDEuNX0NCg0KQ2FuY2VyX3lvdW5nX21pbm9yaXR5X1doaXRlPC0gQ2FuY2VyX3lvdW5nX0RlYXRoX21pbm9yaXR5ICAlPiUgDQogIGZpbHRlcighaXMubmEoYFRvdGFsIENhbmNlciBEZWF0aHMgKDE4IHRvIDQ0IFllYXJzIFdoaXRlLCAyMDA3LTIwMTMpYCksIWlzLm5hKGBZb3VuZyBNaW5vcml0eSBEZWF0aHNgKSklPiUNCiAgICAgICAgIGdyb3VwX2J5KGBOYW1lIG9mIEFyZWFgKSAlPiUgDQogICAgICAgICAgICAgc3VtbWFyaXplKHVuZGVyXzQ0X01pbm9yaXR5ID0gc3VtKGBZb3VuZyBNaW5vcml0eSBEZWF0aHNgKSxVbmRlcl80NF9XaGl0ZSA9c3VtKGBUb3RhbCBDYW5jZXIgRGVhdGhzICgxOCB0byA0NCBZZWFycyBXaGl0ZSwgMjAwNy0yMDEzKWApKQ0KDQpoZWFkKENhbmNlcl95b3VuZ19taW5vcml0eV9XaGl0ZSkNCmBgYA0KDQoNCiMjIyBVc2luZyAkbWVsdCQNCg0KUGxvdGluZyB0aGUgc3VtbWFyaXplIFZhcmlhYmxlIGJ5IG1ha2luZyBpdCBsb25nLCBzbyB3ZSBjYW4gY29tcGFyZSBzaWRlIGJ5IHNpZGUgdGltZSB3aWxsIGNvbXBhcmUgbWlub3JpdHkgd2l0aCB3aGl0ZSBkZW1vZ3JhcGhpYyBjYW5jZXIgZGVhdGgNCg0KYGBge3IgZmlnLndpZHRoPSA3LCBmaWcuYXNwPSAxLjV9DQoNCmxpYnJhcnkodGlkeXIpDQoNCkNhbmNlcl95b3VuZ19taW5vcml0eV9XaGl0ZS5sb25nPC1tZWx0KENhbmNlcl95b3VuZ19taW5vcml0eV9XaGl0ZSkNCg0KZ2dwbG90KENhbmNlcl95b3VuZ19taW5vcml0eV9XaGl0ZS5sb25nLGFlcyhgTmFtZSBvZiBBcmVhYCx2YWx1ZSxmaWxsPXZhcmlhYmxlKSkrDQogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5Iixwb3NpdGlvbj0iZG9kZ2UiKStjb29yZF9mbGlwKCkrDQogICAgICAgZ2d0aXRsZSgiIFlvdW5nIE1pbm9yaXR5IFZTIFlvdW5nIFdoaXRlIFBlb3BsZSBEZWF0aCBCeSBDYW5jZXIgIikgKw0KICAgICAgICAgICAgIHhsYWIoIlN0YXRlIikgKyB5bGFiKCJUb3RhbCBEZWF0aCIpICt0aGVtZV9taW5pbWFsKCkNCg0KYGBgDQoNCg0K