The Influence of Alcohol Use to Obesity

Introduction

In this analysis I will try to investigate and map percentages of Obesity. This data was gathered from Social Explorer Health Data 2016 using all 50 states and Counties.

I will be using two different methods: the first is County Level Spatial Mapping looking only at Obesity and the second is non-spatial (ecological regression and plotting).

Data Used and Variable Explanation:

A data frame consisting of:

*state : All 50 States

*Drinking Adults : Excessive Drinking is the percentage of adults that report either binge drinking, defined as consuming more than 4 (women) or 5 (men) alcoholic beverages on a single occasion in the past 30 days, or heavy drinking, defined as drinking more than one (women) or 2 (men) drinks per day on average.

*Obese Persons : This will be the continuous dependent variable. Adult Obesity is the percentage of the adult population (age 20 and older) that reports a body mass index (BMI) greater than or equal to 30 kg/m2.

*Persons with Limited Access to Healthy Foods : This will be an independent variable used to see if there is an interaction between limited access to healthy foods and alcohol usage and if it has any influence on obesity.

library(sf)
ct_map <- st_read("tl_2016_us_county.shp", stringsAsFactors = FALSE)
Reading layer `tl_2016_us_county' from data source `C:\Users\cngon\Documents\R\tl_2016_us_county.shp' using driver `ESRI Shapefile'
Simple feature collection with 3233 features and 17 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -179.2311 ymin: -14.60181 xmax: 179.8597 ymax: 71.44106
epsg (SRID):    4269
proj4string:    +proj=longlat +datum=NAD83 +no_defs
names(ct_map)
 [1] "STATEFP"  "COUNTYFP" "COUNTYNS" "GEOID"    "NAME"     "NAMELSAD" "LSAD"     "CLASSFP"  "MTFCC"    "CSAFP"    "CBSAFP"  
[12] "METDIVFP" "FUNCSTAT" "ALAND"    "AWATER"   "INTPTLAT" "INTPTLON" "geometry"
head(AlcoObesity)
library(dplyr)

AlcoObesity <- rename (AlcoObesity,
          "County" = Geo_QNAME,
          "STATEFP" = Geo_STATE,
          "Fair_to_Poor_Health" = SE_T002_001,
          "Current_Smokers" = SE_T011_001,
          "Drinking_Adults" = SE_T011_002,
          "Persons_with_Limited_Access_to _Healthy_Foods" = SE_T012_001,
          "Access_to_Exercise" = SE_T012_002,
          "Obese_Persons" = SE_T012_003,
          "Physically_Inactive" = SE_T012_004,
          "Free_Lunch" = SE_T012_005)
AlOb <- AlcoObesity
select(AlOb, STATEFP, County, Obese_Persons, Drinking_Adults, Persons_with_Limited_Access_to_Healthy_Foods)

head(AlOb)
head(AlOb)

Non-Spatial

Ecological Regression

AlcObEco<- AlOb %>% 
  group_by(STATEFP) %>% 
  summarise(mean_p = mean(Obese_Persons, na.rm = TRUE), mean_s = mean(Drinking_Adults, na.rm = TRUE))
head(AlcObEco)
ecoalcobe<-lm(mean_p ~ mean_s, data = AlcObEco)
summary(ecoalcobe)

Call:
lm(formula = mean_p ~ mean_s, data = AlcObEco)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.4287 -2.1042  0.2516  2.4969  7.0014 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  40.3962     2.6574  15.201  < 2e-16 ***
mean_s       -0.6261     0.1511  -4.145 0.000134 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.376 on 49 degrees of freedom
Multiple R-squared:  0.2596,    Adjusted R-squared:  0.2445 
F-statistic: 17.18 on 1 and 49 DF,  p-value: 0.0001344

Merge the Data & Spatial Mapping

package <U+393C><U+3E31>tmap<U+393C><U+3E32> was built under R version 3.4.4

Excluding Hawaii and Alaska

obesitymap1 <- Obesitymap %>% 
  filter(STATEFP.x != "02") %>% 
  filter(STATEFP.x != "15") %>% 
  filter(STATEFP.x != "60") %>% 
  filter(STATEFP.x != "66") %>% 
  filter(STATEFP.x != "69") %>% 
  filter(STATEFP.x != "72") %>% 
  filter(STATEFP.x != "78") 
##**Excluding Hawaii and Alaska**
tm_shape(obesitymap1, projection = 2163) + tm_polygons("Obese_Persons")

Changing the Color

library(tmaptools)
tm_shape(obesitymap1, projection = 2163) + tm_polygons("Obese_Persons", palette = "-RdBu")

Adding State Borders

tm_shape(obesitymap1, projection = 2163) + tm_polygons("Obese_Persons", palette = "-RdBu") + 
  tm_shape(us_states) + tm_borders(lwd = .36, col = "black", alpha = 1)

Highlight the State Line

tm_shape(obesitymap1, projection = 2163) + tm_polygons("Obese_Persons", palette = "-RdBu", border.col = "grey", border.alpha = .4) + 
  tm_shape(us_states) + tm_borders(lwd = .36, col = "black", alpha = 1)

Using Tigris

package <U+393C><U+3E31>tigris<U+393C><U+3E32> was built under R version 3.4.4To enable 
caching of data, set `options(tigris_use_cache = TRUE)` in your R script or .Rprofile.

Attaching package: <U+393C><U+3E31>tigris<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:graphics<U+393C><U+3E32>:

    plot

  |                                                                                                                                  
  |                                                                                                                            |   0%
  |                                                                                                                                  
  |=                                                                                                                           |   0%
  |                                                                                                                                  
  |=                                                                                                                           |   1%
  |                                                                                                                                  
  |==                                                                                                                          |   1%
  |                                                                                                                                  
  |==                                                                                                                          |   2%
  |                                                                                                                                  
  |===                                                                                                                         |   2%
  |                                                                                                                                  
  |===                                                                                                                         |   3%
  |                                                                                                                                  
  |====                                                                                                                        |   3%
  |                                                                                                                                  
  |====                                                                                                                        |   4%
  |                                                                                                                                  
  |=====                                                                                                                       |   4%
  |                                                                                                                                  
  |======                                                                                                                      |   4%
  |                                                                                                                                  
  |======                                                                                                                      |   5%
  |                                                                                                                                  
  |=======                                                                                                                     |   5%
  |                                                                                                                                  
  |=======                                                                                                                     |   6%
  |                                                                                                                                  
  |========                                                                                                                    |   6%
  |                                                                                                                                  
  |========                                                                                                                    |   7%
  |                                                                                                                                  
  |=========                                                                                                                   |   7%
  |                                                                                                                                  
  |=========                                                                                                                   |   8%
  |                                                                                                                                  
  |==========                                                                                                                  |   8%
  |                                                                                                                                  
  |===========                                                                                                                 |   9%
  |                                                                                                                                  
  |============                                                                                                                |   9%
  |                                                                                                                                  
  |============                                                                                                                |  10%
  |                                                                                                                                  
  |=============                                                                                                               |  10%
  |                                                                                                                                  
  |=============                                                                                                               |  11%
  |                                                                                                                                  
  |==============                                                                                                              |  11%
  |                                                                                                                                  
  |==============                                                                                                              |  12%
  |                                                                                                                                  
  |===============                                                                                                             |  12%
  |                                                                                                                                  
  |================                                                                                                            |  13%
  |                                                                                                                                  
  |=================                                                                                                           |  13%
  |                                                                                                                                  
  |=================                                                                                                           |  14%
  |                                                                                                                                  
  |==================                                                                                                          |  14%
  |                                                                                                                                  
  |==================                                                                                                          |  15%
  |                                                                                                                                  
  |===================                                                                                                         |  15%
  |                                                                                                                                  
  |===================                                                                                                         |  16%
  |                                                                                                                                  
  |====================                                                                                                        |  16%
  |                                                                                                                                  
  |====================                                                                                                        |  17%
  |                                                                                                                                  
  |=====================                                                                                                       |  17%
  |                                                                                                                                  
  |======================                                                                                                      |  17%
  |                                                                                                                                  
  |======================                                                                                                      |  18%
  |                                                                                                                                  
  |=======================                                                                                                     |  18%
  |                                                                                                                                  
  |=======================                                                                                                     |  19%
  |                                                                                                                                  
  |========================                                                                                                    |  19%
  |                                                                                                                                  
  |========================                                                                                                    |  20%
  |                                                                                                                                  
  |=========================                                                                                                   |  20%
  |                                                                                                                                  
  |==========================                                                                                                  |  21%
  |                                                                                                                                  
  |===========================                                                                                                 |  21%
  |                                                                                                                                  
  |===========================                                                                                                 |  22%
  |                                                                                                                                  
  |============================                                                                                                |  22%
  |                                                                                                                                  
  |============================                                                                                                |  23%
  |                                                                                                                                  
  |=============================                                                                                               |  23%
  |                                                                                                                                  
  |=============================                                                                                               |  24%
  |                                                                                                                                  
  |==============================                                                                                              |  24%
  |                                                                                                                                  
  |===============================                                                                                             |  25%
  |                                                                                                                                  
  |================================                                                                                            |  25%
  |                                                                                                                                  
  |================================                                                                                            |  26%
  |                                                                                                                                  
  |=================================                                                                                           |  26%
  |                                                                                                                                  
  |=================================                                                                                           |  27%
  |                                                                                                                                  
  |==================================                                                                                          |  27%
  |                                                                                                                                  
  |==================================                                                                                          |  28%
  |                                                                                                                                  
  |===================================                                                                                         |  28%
  |                                                                                                                                  
  |====================================                                                                                        |  29%
  |                                                                                                                                  
  |=====================================                                                                                       |  29%
  |                                                                                                                                  
  |=====================================                                                                                       |  30%
  |                                                                                                                                  
  |======================================                                                                                      |  30%
  |                                                                                                                                  
  |======================================                                                                                      |  31%
  |                                                                                                                                  
  |=======================================                                                                                     |  31%
  |                                                                                                                                  
  |=======================================                                                                                     |  32%
  |                                                                                                                                  
  |========================================                                                                                    |  32%
  |                                                                                                                                  
  |=========================================                                                                                   |  33%
  |                                                                                                                                  
  |==========================================                                                                                  |  34%
  |                                                                                                                                  
  |===========================================                                                                                 |  34%
  |                                                                                                                                  
  |===========================================                                                                                 |  35%
  |                                                                                                                                  
  |============================================                                                                                |  35%
  |                                                                                                                                  
  |============================================                                                                                |  36%
  |                                                                                                                                  
  |=============================================                                                                               |  36%
  |                                                                                                                                  
  |=============================================                                                                               |  37%
  |                                                                                                                                  
  |==============================================                                                                              |  37%
  |                                                                                                                                  
  |===============================================                                                                             |  38%
  |                                                                                                                                  
  |================================================                                                                            |  38%
  |                                                                                                                                  
  |================================================                                                                            |  39%
  |                                                                                                                                  
  |=================================================                                                                           |  39%
  |                                                                                                                                  
  |=================================================                                                                           |  40%
  |                                                                                                                                  
  |==================================================                                                                          |  40%
  |                                                                                                                                  
  |==================================================                                                                          |  41%
  |                                                                                                                                  
  |===================================================                                                                         |  41%
  |                                                                                                                                  
  |====================================================                                                                        |  42%
  |                                                                                                                                  
  |=====================================================                                                                       |  42%
  |                                                                                                                                  
  |=====================================================                                                                       |  43%
  |                                                                                                                                  
  |======================================================                                                                      |  43%
  |                                                                                                                                  
  |======================================================                                                                      |  44%
  |                                                                                                                                  
  |=======================================================                                                                     |  44%
  |                                                                                                                                  
  |=======================================================                                                                     |  45%
  |                                                                                                                                  
  |========================================================                                                                    |  45%
  |                                                                                                                                  
  |========================================================                                                                    |  46%
  |                                                                                                                                  
  |=========================================================                                                                   |  46%
  |                                                                                                                                  
  |==========================================================                                                                  |  47%
  |                                                                                                                                  
  |===========================================================                                                                 |  47%
  |                                                                                                                                  
  |===========================================================                                                                 |  48%
  |                                                                                                                                  
  |============================================================                                                                |  48%
  |                                                                                                                                  
  |============================================================                                                                |  49%
  |                                                                                                                                  
  |=============================================================                                                               |  49%
  |                                                                                                                                  
  |==============================================================                                                              |  50%
  |                                                                                                                                  
  |===============================================================                                                             |  51%
  |                                                                                                                                  
  |================================================================                                                            |  51%
  |                                                                                                                                  
  |================================================================                                                            |  52%
  |                                                                                                                                  
  |=================================================================                                                           |  52%
  |                                                                                                                                  
  |=================================================================                                                           |  53%
  |                                                                                                                                  
  |==================================================================                                                          |  53%
  |                                                                                                                                  
  |==================================================================                                                          |  54%
  |                                                                                                                                  
  |===================================================================                                                         |  54%
  |                                                                                                                                  
  |====================================================================                                                        |  55%
  |                                                                                                                                  
  |=====================================================================                                                       |  55%
  |                                                                                                                                  
  |=====================================================================                                                       |  56%
  |                                                                                                                                  
  |======================================================================                                                      |  56%
  |                                                                                                                                  
  |======================================================================                                                      |  57%
  |                                                                                                                                  
  |=======================================================================                                                     |  57%
  |                                                                                                                                  
  |=======================================================================                                                     |  58%
  |                                                                                                                                  
  |========================================================================                                                    |  58%
  |                                                                                                                                  
  |=========================================================================                                                   |  59%
  |                                                                                                                                  
  |==========================================================================                                                  |  59%
  |                                                                                                                                  
  |==========================================================================                                                  |  60%
  |                                                                                                                                  
  |===========================================================================                                                 |  60%
  |                                                                                                                                  
  |===========================================================================                                                 |  61%
  |                                                                                                                                  
  |============================================================================                                                |  61%
  |                                                                                                                                  
  |============================================================================                                                |  62%
  |                                                                                                                                  
  |=============================================================================                                               |  62%
  |                                                                                                                                  
  |==============================================================================                                              |  63%
  |                                                                                                                                  
  |===============================================================================                                             |  64%
  |                                                                                                                                  
  |================================================================================                                            |  64%
  |                                                                                                                                  
  |================================================================================                                            |  65%
  |                                                                                                                                  
  |=================================================================================                                           |  65%
  |                                                                                                                                  
  |=================================================================================                                           |  66%
  |                                                                                                                                  
  |==================================================================================                                          |  66%
  |                                                                                                                                  
  |==================================================================================                                          |  67%
  |                                                                                                                                  
  |===================================================================================                                         |  67%
  |                                                                                                                                  
  |====================================================================================                                        |  68%
  |                                                                                                                                  
  |=====================================================================================                                       |  68%
  |                                                                                                                                  
  |=====================================================================================                                       |  69%
  |                                                                                                                                  
  |======================================================================================                                      |  69%
  |                                                                                                                                  
  |======================================================================================                                      |  70%
  |                                                                                                                                  
  |=======================================================================================                                     |  70%
  |                                                                                                                                  
  |========================================================================================                                    |  71%
  |                                                                                                                                  
  |=========================================================================================                                   |  71%
  |                                                                                                                                  
  |=========================================================================================                                   |  72%
  |                                                                                                                                  
  |==========================================================================================                                  |  72%
  |                                                                                                                                  
  |==========================================================================================                                  |  73%
  |                                                                                                                                  
  |===========================================================================================                                 |  73%
  |                                                                                                                                  
  |===========================================================================================                                 |  74%
  |                                                                                                                                  
  |============================================================================================                                |  74%
  |                                                                                                                                  
  |=============================================================================================                               |  75%
  |                                                                                                                                  
  |==============================================================================================                              |  75%
  |                                                                                                                                  
  |==============================================================================================                              |  76%
  |                                                                                                                                  
  |===============================================================================================                             |  76%
  |                                                                                                                                  
  |===============================================================================================                             |  77%
  |                                                                                                                                  
  |================================================================================================                            |  77%
  |                                                                                                                                  
  |================================================================================================                            |  78%
  |                                                                                                                                  
  |=================================================================================================                           |  78%
  |                                                                                                                                  
  |==================================================================================================                          |  79%
  |                                                                                                                                  
  |===================================================================================================                         |  79%
  |                                                                                                                                  
  |===================================================================================================                         |  80%
  |                                                                                                                                  
  |====================================================================================================                        |  80%
  |                                                                                                                                  
  |====================================================================================================                        |  81%
  |                                                                                                                                  
  |=====================================================================================================                       |  81%
  |                                                                                                                                  
  |=====================================================================================================                       |  82%
  |                                                                                                                                  
  |======================================================================================================                      |  82%
  |                                                                                                                                  
  |=======================================================================================================                     |  83%
  |                                                                                                                                  
  |========================================================================================================                    |  84%
  |                                                                                                                                  
  |=========================================================================================================                   |  84%
  |                                                                                                                                  
  |=========================================================================================================                   |  85%
  |                                                                                                                                  
  |==========================================================================================================                  |  85%
  |                                                                                                                                  
  |==========================================================================================================                  |  86%
  |                                                                                                                                  
  |===========================================================================================================                 |  86%
  |                                                                                                                                  
  |===========================================================================================================                 |  87%
  |                                                                                                                                  
  |============================================================================================================                |  87%
  |                                                                                                                                  
  |=============================================================================================================               |  88%
  |                                                                                                                                  
  |==============================================================================================================              |  88%
  |                                                                                                                                  
  |==============================================================================================================              |  89%
  |                                                                                                                                  
  |===============================================================================================================             |  89%
  |                                                                                                                                  
  |===============================================================================================================             |  90%
  |                                                                                                                                  
  |================================================================================================================            |  90%
  |                                                                                                                                  
  |================================================================================================================            |  91%
  |                                                                                                                                  
  |=================================================================================================================           |  91%
  |                                                                                                                                  
  |==================================================================================================================          |  92%
  |                                                                                                                                  
  |===================================================================================================================         |  92%
  |                                                                                                                                  
  |===================================================================================================================         |  93%
  |                                                                                                                                  
  |====================================================================================================================        |  93%
  |                                                                                                                                  
  |====================================================================================================================        |  94%
  |                                                                                                                                  
  |=====================================================================================================================       |  94%
  |                                                                                                                                  
  |=====================================================================================================================       |  95%
  |                                                                                                                                  
  |======================================================================================================================      |  95%
  |                                                                                                                                  
  |=======================================================================================================================     |  96%
  |                                                                                                                                  
  |========================================================================================================================    |  96%
  |                                                                                                                                  
  |========================================================================================================================    |  97%
  |                                                                                                                                  
  |=========================================================================================================================   |  97%
  |                                                                                                                                  
  |=========================================================================================================================   |  98%
  |                                                                                                                                  
  |==========================================================================================================================  |  98%
  |                                                                                                                                  
  |==========================================================================================================================  |  99%
  |                                                                                                                                  
  |=========================================================================================================================== |  99%
  |                                                                                                                                  
  |=========================================================================================================================== | 100%
  |                                                                                                                                  
  |============================================================================================================================| 100%
 [1] "STATEFP"  "COUNTYFP" "COUNTYNS" "AFFGEOID" "GEOID"    "NAME"     "LSAD"     "ALAND"    "AWATER"   "geometry"

Looking at the map we get an overall sense of the percentage of Obesity accross the US while also applying border lines to specifically see obesity in each state.

Slide 32

According to the Tigris document: If cb is set to TRUE, it will download a generalized (1:500k) file. Defaults to FALSE (the most detailed TIGER/Line file)

I also noticed that when we use False we get 18 Variable names instead of 10 as seen below

library(tigris)
options(tigris_class = "sf")
t_county <- counties(cb = TRUE)
names(t_county)
 [1] "STATEFP"  "COUNTYFP" "COUNTYNS" "AFFGEOID" "GEOID"    "NAME"     "LSAD"     "ALAND"    "AWATER"   "geometry"
library(tigris)
options(tigris_class = "sf")
t_county <- counties(cb = FALSE)
names(t_county)
 [1] "STATEFP"  "COUNTYFP" "COUNTYNS" "GEOID"    "NAME"     "NAMELSAD" "LSAD"     "CLASSFP"  "MTFCC"    "CSAFP"    "CBSAFP"  
[12] "METDIVFP" "FUNCSTAT" "ALAND"    "AWATER"   "INTPTLAT" "INTPTLON" "geometry"

Conclusion

Difference between Spatial vs Non-Spatial

*Obviously Spatial shows us in this particular analysis Obesity overall in the country and it’s relationship in each state. It gives us a better and physical view of the data we are looking at and a visual understanding. The data defines a location

*Non-spatial data relates to a specific, precisely defined location. The data are often statistical.

The two main differences are:

*spatial data are generally multi-dimensional and auto correlated.

*non-spatial data are generally one-dimensional and independent.

Combining both spatial and non-spatial analysis to view and analyze data sets can be very helpful in determining and understanding the data. Using both can be very beneficial in explaining and supporting our hypothesis. I personally like using a spatial approach to understand my data and to help me interpret and explain it.

Although we are only getting familiar with mapping, I would like to later run this looking at all the variables combined into one map(Drinking_Adults and Persons_with_Access_to_Healthy_Foods). I did have a hard time running it that’s why I took it out.

LS0tDQp0aXRsZTogIkhvbWV3b3JrIDEwIE1hcHBpbmciDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojVGhlIEluZmx1ZW5jZSBvZiBBbGNvaG9sIFVzZSB0byBPYmVzaXR5DQojI0ludHJvZHVjdGlvbg0KDQoNCkluIHRoaXMgYW5hbHlzaXMgSSB3aWxsIHRyeSB0byBpbnZlc3RpZ2F0ZSBhbmQgbWFwIHBlcmNlbnRhZ2VzIG9mIE9iZXNpdHkuIFRoaXMgZGF0YSB3YXMgZ2F0aGVyZWQgZnJvbSBTb2NpYWwgRXhwbG9yZXIgSGVhbHRoIERhdGEgMjAxNiB1c2luZyBhbGwgNTAgc3RhdGVzIGFuZCBDb3VudGllcy4gDQoNCkkgd2lsbCBiZSB1c2luZyB0d28gZGlmZmVyZW50IG1ldGhvZHM6IHRoZSBmaXJzdCBpcyBDb3VudHkgTGV2ZWwgU3BhdGlhbCBNYXBwaW5nIGxvb2tpbmcgb25seSBhdCBPYmVzaXR5IGFuZCB0aGUgc2Vjb25kIGlzIG5vbi1zcGF0aWFsIChlY29sb2dpY2FsIHJlZ3Jlc3Npb24gYW5kIHBsb3R0aW5nKS4NCg0KRGF0YSBVc2VkIGFuZCBWYXJpYWJsZSBFeHBsYW5hdGlvbjoNCg0KQSBkYXRhIGZyYW1lIGNvbnNpc3Rpbmcgb2Y6DQoNCipzdGF0ZSA6IEFsbCA1MCBTdGF0ZXMNCg0KKkRyaW5raW5nIEFkdWx0cyA6IEV4Y2Vzc2l2ZSBEcmlua2luZyBpcyB0aGUgcGVyY2VudGFnZSBvZiBhZHVsdHMgdGhhdCByZXBvcnQgZWl0aGVyIGJpbmdlIGRyaW5raW5nLCBkZWZpbmVkIGFzIGNvbnN1bWluZyBtb3JlIHRoYW4gNCAod29tZW4pIG9yIDUgKG1lbikgYWxjb2hvbGljIGJldmVyYWdlcyBvbiBhIHNpbmdsZSBvY2Nhc2lvbiBpbiB0aGUgcGFzdCAzMCBkYXlzLCBvciBoZWF2eSBkcmlua2luZywgZGVmaW5lZCBhcyBkcmlua2luZyBtb3JlIHRoYW4gb25lICh3b21lbikgb3IgMiAobWVuKSBkcmlua3MgcGVyIGRheSBvbiBhdmVyYWdlLg0KDQoqT2Jlc2UgUGVyc29ucyA6IFRoaXMgd2lsbCBiZSB0aGUgY29udGludW91cyBkZXBlbmRlbnQgdmFyaWFibGUuIEFkdWx0IE9iZXNpdHkgaXMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGFkdWx0IHBvcHVsYXRpb24gKGFnZSAyMCBhbmQgb2xkZXIpIHRoYXQgcmVwb3J0cyBhIGJvZHkgbWFzcyBpbmRleCAoQk1JKSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMzAga2cvbTIuDQoNCipQZXJzb25zIHdpdGggTGltaXRlZCBBY2Nlc3MgdG8gSGVhbHRoeSBGb29kcyA6IFRoaXMgd2lsbCBiZSBhbiBpbmRlcGVuZGVudCB2YXJpYWJsZSB1c2VkIHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBpbnRlcmFjdGlvbiBiZXR3ZWVuIGxpbWl0ZWQgYWNjZXNzIHRvIGhlYWx0aHkgZm9vZHMgYW5kIGFsY29ob2wgdXNhZ2UgYW5kIGlmIGl0IGhhcyBhbnkgaW5mbHVlbmNlIG9uIG9iZXNpdHkuDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9RkFMU0UsIHBhZ2VkLnByaW50PUZBTFNFfQ0KbGlicmFyeShrbml0cikNCmBgYA0KDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHBhZ2VkLnByaW50PUZBTFNFfQ0KbGlicmFyeShzZikNCmN0X21hcCA8LSBzdF9yZWFkKCJ0bF8yMDE2X3VzX2NvdW50eS5zaHAiLCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpDQpgYGANCg0KYGBge3J9DQpuYW1lcyhjdF9tYXApDQpgYGANCg0KDQpgYGB7cn0NCmhlYWQoQWxjb09iZXNpdHkpDQpgYGANCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcGFnZWQucHJpbnQ9RkFMU0V9DQpsaWJyYXJ5KGRwbHlyKQ0KDQpBbGNvT2Jlc2l0eSA8LSByZW5hbWUgKEFsY29PYmVzaXR5LA0KICAgICAgICAgICJDb3VudHkiID0gR2VvX1FOQU1FLA0KICAgICAgICAgICJTVEFURUZQIiA9IEdlb19TVEFURSwNCiAgICAgICAgICAiRmFpcl90b19Qb29yX0hlYWx0aCIgPSBTRV9UMDAyXzAwMSwNCiAgICAgICAgICAiQ3VycmVudF9TbW9rZXJzIiA9IFNFX1QwMTFfMDAxLA0KICAgICAgICAgICJEcmlua2luZ19BZHVsdHMiID0gU0VfVDAxMV8wMDIsDQogICAgICAgICAgIlBlcnNvbnNfd2l0aF9MaW1pdGVkX0FjY2Vzc190byBfSGVhbHRoeV9Gb29kcyIgPSBTRV9UMDEyXzAwMSwNCiAgICAgICAgICAiQWNjZXNzX3RvX0V4ZXJjaXNlIiA9IFNFX1QwMTJfMDAyLA0KICAgICAgICAgICJPYmVzZV9QZXJzb25zIiA9IFNFX1QwMTJfMDAzLA0KICAgICAgICAgICJQaHlzaWNhbGx5X0luYWN0aXZlIiA9IFNFX1QwMTJfMDA0LA0KICAgICAgICAgICJGcmVlX0x1bmNoIiA9IFNFX1QwMTJfMDA1KQ0KQWxPYiA8LSBBbGNvT2Jlc2l0eQ0Kc2VsZWN0KEFsT2IsIFNUQVRFRlAsIENvdW50eSwgT2Jlc2VfUGVyc29ucywgRHJpbmtpbmdfQWR1bHRzLCBQZXJzb25zX3dpdGhfTGltaXRlZF9BY2Nlc3NfdG9fSGVhbHRoeV9Gb29kcykNCg0KaGVhZChBbE9iKQ0KDQpgYGANCg0KDQpgYGB7cn0NCmhlYWQoQWxPYikNCmBgYA0KDQoNCiNOb24tU3BhdGlhbA0KIyNFY29sb2dpY2FsIFJlZ3Jlc3Npb24NCg0KYGBge3J9DQpBbGNPYkVjbzwtIEFsT2IgJT4lIA0KICBncm91cF9ieShTVEFURUZQKSAlPiUgDQogIHN1bW1hcmlzZShtZWFuX3AgPSBtZWFuKE9iZXNlX1BlcnNvbnMsIG5hLnJtID0gVFJVRSksIG1lYW5fcyA9IG1lYW4oRHJpbmtpbmdfQWR1bHRzLCBuYS5ybSA9IFRSVUUpKQ0KaGVhZChBbGNPYkVjbykNCmBgYA0KDQpgYGB7cn0NCmVjb2FsY29iZTwtbG0obWVhbl9wIH4gbWVhbl9zLCBkYXRhID0gQWxjT2JFY28pDQpzdW1tYXJ5KGVjb2FsY29iZSkNCmBgYA0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcGFnZWQucHJpbnQ9RkFMU0V9DQpsaWJyYXJ5KGdncGxvdDIpDQoNCkQxPC0gZ2dwbG90KEFsT2IsIGFlcyh4ID0gU1RBVEVGUCwgeT0gT2Jlc2VfUGVyc29ucykpICsNCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBEcmlua2luZ19BZHVsdHMpLCBzaXplID0gMykrDQogIGNvb3JkX2NhcHBlZF9jYXJ0KGJvdHRvbT0gJ2JvdGgnLCBsZWZ0ID0gJ25vbmUnKSsNCiAgdGhlbWVfbGlnaHQoKSArIHRoZW1lKHBhbmVsLmJvcmRlcj1lbGVtZW50X2JsYW5rKCksIGF4aXMubGluZT0gZWxlbWVudF9saW5lKCkpDQogDQpEMQ0KYGBgDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBwYWdlZC5wcmludD1GQUxTRX0NCmxpYnJhcnkobGVtb24pDQpnZ3Bsb3QoQWxPYiwgYWVzKHg9U1RBVEVGUCwgeT1PYmVzZV9QZXJzb25zKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGNvb3JkX2NhcHBlZF9jYXJ0KGJvdHRvbT0nYm90aCcsIGxlZnQ9J25vbmUnKSArDQogIHRoZW1lX2xpZ2h0KCkgKyB0aGVtZShwYW5lbC5ib3JkZXI9ZWxlbWVudF9ibGFuaygpLCBheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoKSkNCmBgYA0KDQoNCg0KDQojTWVyZ2UgdGhlIERhdGEgJiBTcGF0aWFsIE1hcHBpbmcNCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcGFnZWQucHJpbnQ9RkFMU0V9DQpsaWJyYXJ5KGRwbHlyKQ0KQWxPYiRHZW9fRklQUyA8LSBhcy5pbnRlZ2VyKEFsT2IkR2VvX0ZJUFMpDQpjdF9tYXAkR0VPSUQgPC0gYXMuaW50ZWdlcihjdF9tYXAkR0VPSUQpDQoNCkFsT2IxIDwtIEFsT2IgJT4lIA0KICBtdXRhdGUoZmlwcz0gR2VvX0ZJUFMpDQpjdF9tYXAgPC0gY3RfbWFwICU+JSANCiAgbXV0YXRlKGZpcHMgPSBwYXJzZV9pbnRlZ2VyKEdFT0lEKSkgDQpPYmVzaXR5bWFwIDwtIGN0X21hcCAlPiUgDQogIGxlZnRfam9pbihBbE9iMSwgYnkgPSAiZmlwcyIpDQoNCg0KbGlicmFyeSh0bWFwKQ0KdG1fc2hhcGUoT2Jlc2l0eW1hcCkgKyB0bV9wb2x5Z29ucygiT2Jlc2VfUGVyc29ucyIpDQpgYGANCg0KIyNFeGNsdWRpbmcgSGF3YWlpIGFuZCBBbGFza2ENCg0KYGBge3J9DQpvYmVzaXR5bWFwMSA8LSBPYmVzaXR5bWFwICU+JSANCiAgZmlsdGVyKFNUQVRFRlAueCAhPSAiMDIiKSAlPiUgDQogIGZpbHRlcihTVEFURUZQLnggIT0gIjE1IikgJT4lIA0KICBmaWx0ZXIoU1RBVEVGUC54ICE9ICI2MCIpICU+JSANCiAgZmlsdGVyKFNUQVRFRlAueCAhPSAiNjYiKSAlPiUgDQogIGZpbHRlcihTVEFURUZQLnggIT0gIjY5IikgJT4lIA0KICBmaWx0ZXIoU1RBVEVGUC54ICE9ICI3MiIpICU+JSANCiAgZmlsdGVyKFNUQVRFRlAueCAhPSAiNzgiKSANCg0KdG1fc2hhcGUob2Jlc2l0eW1hcDEsIHByb2plY3Rpb24gPSAyMTYzKSArIHRtX3BvbHlnb25zKCJPYmVzZV9QZXJzb25zIikNCmBgYA0KDQojQ2hhbmdpbmcgdGhlIENvbG9yDQoNCmBgYHtyfQ0KbGlicmFyeSh0bWFwdG9vbHMpDQp0bV9zaGFwZShvYmVzaXR5bWFwMSwgcHJvamVjdGlvbiA9IDIxNjMpICsgdG1fcG9seWdvbnMoIk9iZXNlX1BlcnNvbnMiLCBwYWxldHRlID0gIi1SZEJ1IikNCmBgYA0KDQojQWRkaW5nIFN0YXRlIEJvcmRlcnMNCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRSwgcGFnZWQucHJpbnQ9RkFMU0V9DQpsaWJyYXJ5KHRtYXB0b29scykNCnVzX3N0YXRlcyA8LSBvYmVzaXR5bWFwMSAlPiUgDQogIGFnZ3JlZ2F0ZV9tYXAoYnkgPSAiU1RBVEVGUC54IikNCmBgYA0KDQoNCmBgYHtyfQ0KdG1fc2hhcGUob2Jlc2l0eW1hcDEsIHByb2plY3Rpb24gPSAyMTYzKSArIHRtX3BvbHlnb25zKCJPYmVzZV9QZXJzb25zIiwgcGFsZXR0ZSA9ICItUmRCdSIpICsgDQogIHRtX3NoYXBlKHVzX3N0YXRlcykgKyB0bV9ib3JkZXJzKGx3ZCA9IC4zNiwgY29sID0gImJsYWNrIiwgYWxwaGEgPSAxKQ0KYGBgDQoNCiNIaWdobGlnaHQgdGhlIFN0YXRlIExpbmUNCg0KYGBge3J9DQp0bV9zaGFwZShvYmVzaXR5bWFwMSwgcHJvamVjdGlvbiA9IDIxNjMpICsgdG1fcG9seWdvbnMoIk9iZXNlX1BlcnNvbnMiLCBwYWxldHRlID0gIi1SZEJ1IiwgYm9yZGVyLmNvbCA9ICJncmV5IiwgYm9yZGVyLmFscGhhID0gLjQpICsgDQogIHRtX3NoYXBlKHVzX3N0YXRlcykgKyB0bV9ib3JkZXJzKGx3ZCA9IC4zNiwgY29sID0gImJsYWNrIiwgYWxwaGEgPSAxKQ0KYGBgDQoNCiNVc2luZyBUaWdyaXMNCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcGFnZWQucHJpbnQ9RkFMU0V9DQpsaWJyYXJ5KHRpZ3JpcykNCm9wdGlvbnModGlncmlzX2NsYXNzID0gInNmIikNCnRfY291bnR5IDwtIGNvdW50aWVzKGNiID0gVFJVRSkNCm5hbWVzKHRfY291bnR5KQ0KYGBgDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQp0X29iZXNlX2RhdGEgPC0gdF9jb3VudHkgJT4lIA0KICBtdXRhdGUoZmlwcyA9IHBhcnNlX2ludGVnZXIoR0VPSUQpKSAlPiUgDQogIGxlZnRfam9pbihBbE9iMSwgYnkgPSAiZmlwcyIpDQpgYGANCg0KYGBge3IgZWNobz1GQUxTRX0NCnRfb2Jlc2VfZGF0YV9zdWIgPC0gdF9vYmVzZV9kYXRhICU+JSANCiAgZmlsdGVyKFNUQVRFRlAueCAhPSAiMDIiKSAlPiUgDQogIGZpbHRlcihTVEFURUZQLnggIT0gIjE1IikgJT4lIA0KICBmaWx0ZXIoU1RBVEVGUC54ICE9ICI2MCIpICU+JSANCiAgZmlsdGVyKFNUQVRFRlAueCAhPSAiNjYiKSAlPiUgDQogIGZpbHRlcihTVEFURUZQLnggIT0gIjY5IikgJT4lIA0KICBmaWx0ZXIoU1RBVEVGUC54ICE9ICI3MiIpICU+JSANCiAgZmlsdGVyKFNUQVRFRlAueCAhPSAiNzgiKQ0Kb2Jlc2Vfc3RhdGVzIDwtIHRfb2Jlc2VfZGF0YV9zdWIgJT4lIA0KICBhZ2dyZWdhdGVfbWFwKGJ5ID0gIlNUQVRFRlAueCIpDQpvYmVzZV9uYXRpb24gPC0gdF9vYmVzZV9kYXRhX3N1YiAlPiUgDQogIGFnZ3JlZ2F0ZV9tYXAoYnkgPSAiU1RBVEVGUC54IikNCnRfb2Jlc2VfZGF0YV9zdWIgPC0gdF9vYmVzZV9kYXRhX3N1YiAlPiUgDQogIG11dGF0ZShPYmVzZV9QZXJzb25zID0gT2Jlc2VfUGVyc29ucyAtIG1lYW4oQWxPYjEkT2Jlc2VfUGVyc29ucykpDQp0bV9zaGFwZSh0X29iZXNlX2RhdGFfc3ViLCBwcm9qZWN0aW9uID0gMjE2MykgKyB0bV9wb2x5Z29ucygiT2Jlc2VfUGVyc29ucyIsIHBhbGV0dGUgPSAiLVJkQnUiLCBib3JkZXIuY29sID0gImdyZXkiLCBib3JkZXIuYWxwaGEgPSAuNCkgKyANCiAgdG1fc2hhcGUob2Jlc2VfbmF0aW9uKSArIHRtX2JvcmRlcnMobHdkID0gLjUwLCBjb2wgPSAiYmxhY2siLCBhbHBoYSA9IDEpDQpgYGANCkxvb2tpbmcgYXQgdGhlIG1hcCB3ZSBnZXQgYW4gb3ZlcmFsbCBzZW5zZSBvZiB0aGUgcGVyY2VudGFnZSBvZiBPYmVzaXR5IGFjY3Jvc3MgdGhlIFVTIHdoaWxlIGFsc28gYXBwbHlpbmcgYm9yZGVyIGxpbmVzIHRvIHNwZWNpZmljYWxseSBzZWUgb2Jlc2l0eSBpbiBlYWNoIHN0YXRlLiANCg0KDQoNCg0KDQojU2xpZGUgMzINCkFjY29yZGluZyB0byB0aGUgVGlncmlzIGRvY3VtZW50Og0KSWYgY2IgaXMgc2V0IHRvIFRSVUUsIGl0IHdpbGwgZG93bmxvYWQgYSBnZW5lcmFsaXplZCAoMTo1MDBrKSBmaWxlLiBEZWZhdWx0cyB0byBGQUxTRQ0KKHRoZSBtb3N0IGRldGFpbGVkIFRJR0VSL0xpbmUgZmlsZSkNCg0KSSBhbHNvIG5vdGljZWQgdGhhdCB3aGVuIHdlIHVzZSBGYWxzZSB3ZSBnZXQgMTggVmFyaWFibGUgbmFtZXMgaW5zdGVhZCBvZiAxMCBhcyBzZWVuIGJlbG93DQoNCmBgYHtyfQ0KbGlicmFyeSh0aWdyaXMpDQpvcHRpb25zKHRpZ3Jpc19jbGFzcyA9ICJzZiIpDQp0X2NvdW50eSA8LSBjb3VudGllcyhjYiA9IFRSVUUpDQpuYW1lcyh0X2NvdW50eSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkodGlncmlzKQ0Kb3B0aW9ucyh0aWdyaXNfY2xhc3MgPSAic2YiKQ0KdF9jb3VudHkgPC0gY291bnRpZXMoY2IgPSBGQUxTRSkNCm5hbWVzKHRfY291bnR5KQ0KYGBgDQoNCg0KDQojQ29uY2x1c2lvbg0KIyNEaWZmZXJlbmNlIGJldHdlZW4gU3BhdGlhbCB2cyBOb24tU3BhdGlhbA0KDQoqT2J2aW91c2x5IFNwYXRpYWwgc2hvd3MgdXMgaW4gdGhpcyBwYXJ0aWN1bGFyIGFuYWx5c2lzIE9iZXNpdHkgb3ZlcmFsbCBpbiB0aGUgY291bnRyeSBhbmQgaXQncyByZWxhdGlvbnNoaXAgaW4gZWFjaCBzdGF0ZS4gSXQgZ2l2ZXMgdXMgYSBiZXR0ZXIgYW5kIHBoeXNpY2FsIHZpZXcgb2YgdGhlIGRhdGEgd2UgYXJlIGxvb2tpbmcgYXQgYW5kIGEgdmlzdWFsIHVuZGVyc3RhbmRpbmcuIFRoZSBkYXRhIGRlZmluZXMgYSBsb2NhdGlvbg0KDQoqTm9uLXNwYXRpYWwgZGF0YSByZWxhdGVzIHRvIGEgc3BlY2lmaWMsIHByZWNpc2VseSBkZWZpbmVkIGxvY2F0aW9uLiBUaGUgZGF0YSBhcmUgb2Z0ZW4gc3RhdGlzdGljYWwuIA0KDQpUaGUgdHdvIG1haW4gZGlmZmVyZW5jZXMgYXJlOg0KDQoqc3BhdGlhbCBkYXRhIGFyZSBnZW5lcmFsbHkgbXVsdGktZGltZW5zaW9uYWwgYW5kIGF1dG8gY29ycmVsYXRlZC4NCg0KKm5vbi1zcGF0aWFsIGRhdGEgYXJlIGdlbmVyYWxseSBvbmUtZGltZW5zaW9uYWwgYW5kIGluZGVwZW5kZW50Lg0KDQpDb21iaW5pbmcgYm90aCBzcGF0aWFsIGFuZCBub24tc3BhdGlhbCBhbmFseXNpcyB0byB2aWV3IGFuZCBhbmFseXplIGRhdGEgc2V0cyBjYW4gYmUgdmVyeSBoZWxwZnVsIGluIGRldGVybWluaW5nIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhLiBVc2luZyBib3RoIGNhbiBiZSB2ZXJ5IGJlbmVmaWNpYWwgaW4gZXhwbGFpbmluZyBhbmQgc3VwcG9ydGluZyBvdXIgaHlwb3RoZXNpcy4gSSBwZXJzb25hbGx5IGxpa2UgdXNpbmcgYSBzcGF0aWFsIGFwcHJvYWNoIHRvIHVuZGVyc3RhbmQgbXkgZGF0YSBhbmQgdG8gaGVscCBtZSBpbnRlcnByZXQgYW5kIGV4cGxhaW4gaXQuICANCg0KQWx0aG91Z2ggd2UgYXJlIG9ubHkgZ2V0dGluZyBmYW1pbGlhciB3aXRoIG1hcHBpbmcsIEkgd291bGQgbGlrZSB0byBsYXRlciBydW4gdGhpcyBsb29raW5nIGF0IGFsbCB0aGUgdmFyaWFibGVzIGNvbWJpbmVkIGludG8gb25lIG1hcChEcmlua2luZ19BZHVsdHMgYW5kIFBlcnNvbnNfd2l0aF9BY2Nlc3NfdG9fSGVhbHRoeV9Gb29kcykuIEkgZGlkIGhhdmUgYSBoYXJkIHRpbWUgcnVubmluZyBpdCB0aGF0J3Mgd2h5IEkgdG9vayBpdCBvdXQuIA0K