# Required packages for our course. Do not delete.
library(tidyverse)
library(mosaic)

Research Question

How have literacy rates among young women in Liberia evolved over time, and what trends can be observed in gender parity in education during the same period?


Data

Description of data

The dataset focuses on gender equality metrics in Liberia, detailing indicators like the proportion of firms with female top managers, female ownership participation, and youth literacy rates (specifically for females aged 15-24). It also includes the gender parity index for youth literacy, highlighting disparities in literacy rates between genders. This dataset is sourced from the Humanitarian Data Exchange (HDX), an open platform for sharing data across various crises and organizations. HDX aims to simplify the discovery and usage of humanitarian data for analysis https://data.humdata.org/faq.

Load data into R

gender_lbr <- read.csv("gender_lbr.csv")
head(gender_lbr)
Country.Name Country.ISO3 Year Indicator.Name Indicator.Code Value
#country+name #country+code #date+year #indicator+name #indicator+code #indicator+value+num
Liberia LBR 2017 Firms with female top manager (% of firms) IC.FRM.FEMM.ZS 20.4
Liberia LBR 2009 Firms with female top manager (% of firms) IC.FRM.FEMM.ZS 29.9
Liberia LBR 2017 Firms with female participation in ownership (% of firms) IC.FRM.FEMO.ZS 37.4
Liberia LBR 2009 Firms with female participation in ownership (% of firms) IC.FRM.FEMO.ZS 53
Liberia LBR 2019 Literacy rate, youth female (% of females ages 15-24) SE.ADT.1524.LT.FE.ZS 71.8499984741211

Variables

names(gender_lbr)
## [1] "Country.Name"   "Country.ISO3"   "Year"           "Indicator.Name"
## [5] "Indicator.Code" "Value"

The variables I used in my infographic design are:

  1. Year
  2. Indicator.Name
  3. Value

Data Analysis

Summary Statistics

# Inspect the data
summary(gender_lbr)
##  Country.Name       Country.ISO3           Year           Indicator.Name    
##  Length:5644        Length:5644        Length:5644        Length:5644       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##  Indicator.Code        Value          
##  Length:5644        Length:5644       
##  Class :character   Class :character  
##  Mode  :character   Mode  :character
# Filter the data for literacy rates and gender parity index
literacy_data <- subset(gender_lbr, Indicator.Name == "Literacy rate, youth female (% of females ages 15-24)")
gender_parity_data <- subset(gender_lbr, Indicator.Name == "Literacy rate, youth (ages 15-24), gender parity index (GPI)")

#convert to numeric
literacy_data$Year <- as.numeric(literacy_data$Year)
literacy_data$Value <- as.numeric(gsub(",", "", literacy_data$Value)) 

gender_parity_data$Year <- as.numeric(gender_parity_data$Year)
gender_parity_data$Value <- as.numeric(gsub(",", "", gender_parity_data$Value)) 

#Checked for NA values to ensure data integrity.
sum(is.na(literacy_data$Year))
## [1] 0
sum(is.na(literacy_data$Value))
## [1] 0
sum(is.na(gender_parity_data$Year))
## [1] 0
sum(is.na(gender_parity_data$Value))
## [1] 0

Summary Statistics *Using the favstats() function

statistics1 <- favstats(Value ~ Year, data = literacy_data )
statistics2 <- favstats(Value ~ Year, data = literacy_data )
head(statistics1)
Year min Q1 median Q3 max mean sd n missing
1984 33.72456 33.72456 33.72456 33.72456 33.72456 33.72456 NA 1 0
2007 37.17031 37.17031 37.17031 37.17031 37.17031 37.17031 NA 1 0
2013 63.20000 63.20000 63.20000 63.20000 63.20000 63.20000 NA 1 0
2017 45.63871 45.63871 45.63871 45.63871 45.63871 45.63871 NA 1 0
2019 71.85000 71.85000 71.85000 71.85000 71.85000 71.85000 NA 1 0
head(statistics2)
Year min Q1 median Q3 max mean sd n missing
1984 33.72456 33.72456 33.72456 33.72456 33.72456 33.72456 NA 1 0
2007 37.17031 37.17031 37.17031 37.17031 37.17031 37.17031 NA 1 0
2013 63.20000 63.20000 63.20000 63.20000 63.20000 63.20000 NA 1 0
2017 45.63871 45.63871 45.63871 45.63871 45.63871 45.63871 NA 1 0
2019 71.85000 71.85000 71.85000 71.85000 71.85000 71.85000 NA 1 0
ggplot(data = literacy_data, aes(x = Year, y = Value)) +
    geom_line(color = "red") + 
    theme_minimal() +
    labs(title = "Trend of Female Literacy Rates in Liberia (Ages 15-24)", x = "Year", y = "Literacy Rate (%)")

ggplot(data = gender_parity_data, aes(x = Year, y = Value)) +
    geom_line(color = "blue") + 
    theme_minimal() +
    labs(title = "Trend of Gender Parity Index in Liberia (Ages 15-24)", x = "Year", y = "Gender Parity Index(%)")

The red line graph illustrates an overall positive trend in the literacy rates of young women in Liberia, despite some fluctuations. Initially, the literacy rates show modest growth, followed by a significant rise and a period of decline, before a strong recovery to the highest rates observed towards the end of the period. This pattern reflects the ongoing efforts and varying success in enhancing educational access and quality for young women.

The blue line graph tracks the gender parity index, serving as a measure of equality in educational access and achievement between genders. The trend generally moves towards greater parity, indicating strides towards equal educational opportunities for both genders. However, the journey shows gradual progress with some setbacks, highlighting the intricate challenges involved in consistently advancing gender parity in education in Liberia.

Infographic

I input the data for the year and values for both female literacy rates and gender parity index into a Google Sheet and downloaded it as a CSV file. I found a line graph template in Canva and uploaded the CSV file, and the numbers were directly integrated into the line graph. I then added all of the necessary text distributions such as the title, the legends, and a brief explanation of the findings. I also included visuals that represent a girl walking to school, which I colored pink for the female literacy graph, and a boy and a girl standing equally to represent gender parity in the gender parity graph.

Blue Modern Line Chart Graph by Etta Brooks

(c)

Provide a brief description of your data visualization process.

Data Preparation:

Sourced and loaded data from the Humanitarian Data Exchange into R, focusing on gender equality metrics specific to Liberia. Data Processing in R:

Conducted data cleaning, transformation, and statistical analysis using R packages like tidyverse and mosaic. Visualization:

Utilized ggplot in R for initial data visualization and then exported key data for enhanced visual representation using Canva. Infographic Enhancement:

Integrated the data into a Canva line graph template, enriching the infographic with meaningful visuals and textual annotations to ensure clarity and impact. Narrative and Presentation:

Carefully embedded the final infographic in the R Markdown document, ensuring a cohesive narrative and visual flow.


References

The creation of the infographic involved the use of various sources for data, graphics, and analysis techniques. Below are the references used in this project:

  1. Data Source: Humanitarian Data Exchange (HDX). Specific details about the gender equality metrics in Liberia. Available at data.humdata.org.

  2. R Packages:

    • tidyverse for data manipulation and visualization.
    • mosaic for statistical analysis.
  3. Visualization Tool:

    • Canva for enhancing data visualizations and creating infographics. Canva.
  4. AI Assistance:

    • OpenAI’s ChatGPT was consulted for guidance on visualization techniques, as well as for proofreading and grammar suggestions.

LS0tCnRpdGxlOiAiTW9kdWxlIFByb2plY3QgMTogSW5mb2dyYXBoaWMgQXNzaWdubWVudCIKc3VidGl0bGU6ICJJTlNIIDUzMDIgLSAgSW5mb3JtYXRpb24gRGVzaWduICYgVmlzdWFsIEFuYWx5dGljcyIKYXV0aG9yOiAiRXR0YSBCcm9va3MiCmRhdGU6ICJKYW51YXJ5IDIxLCAyMDI0IgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGZpZ19jYXB0aW9uOiB5ZXMKICAgIHRoZW1lOiBsdW1lbgogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogMgogICAgZGZfcHJpbnQ6IGthYmxlCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogbm8KLS0tCgpgYGB7ciwgbWVzc2FnZT1GQUxTRX0KIyBSZXF1aXJlZCBwYWNrYWdlcyBmb3Igb3VyIGNvdXJzZS4gRG8gbm90IGRlbGV0ZS4KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkobW9zYWljKQpgYGAKCgoKIyMgUmVzZWFyY2ggUXVlc3Rpb24KCj4gIEhvdyBoYXZlIGxpdGVyYWN5IHJhdGVzIGFtb25nIHlvdW5nIHdvbWVuIGluIExpYmVyaWEgZXZvbHZlZCBvdmVyIHRpbWUsIGFuZCB3aGF0IHRyZW5kcyBjYW4gYmUgb2JzZXJ2ZWQgaW4gZ2VuZGVyIHBhcml0eSBpbiBlZHVjYXRpb24gZHVyaW5nIHRoZSBzYW1lIHBlcmlvZD8KCiogKiAqCgojIERhdGEKCiMjIERlc2NyaXB0aW9uIG9mIGRhdGEKCj4gVGhlIGRhdGFzZXQgZm9jdXNlcyBvbiBnZW5kZXIgZXF1YWxpdHkgbWV0cmljcyBpbiBMaWJlcmlhLCBkZXRhaWxpbmcgaW5kaWNhdG9ycyBsaWtlIHRoZSBwcm9wb3J0aW9uIG9mIGZpcm1zIHdpdGggZmVtYWxlIHRvcCBtYW5hZ2VycywgZmVtYWxlIG93bmVyc2hpcCBwYXJ0aWNpcGF0aW9uLCBhbmQgeW91dGggbGl0ZXJhY3kgcmF0ZXMgKHNwZWNpZmljYWxseSBmb3IgZmVtYWxlcyBhZ2VkIDE1LTI0KS4gSXQgYWxzbyBpbmNsdWRlcyB0aGUgZ2VuZGVyIHBhcml0eSBpbmRleCBmb3IgeW91dGggbGl0ZXJhY3ksIGhpZ2hsaWdodGluZyBkaXNwYXJpdGllcyBpbiBsaXRlcmFjeSByYXRlcyBiZXR3ZWVuIGdlbmRlcnMuIFRoaXMgZGF0YXNldCBpcyBzb3VyY2VkIGZyb20gdGhlIEh1bWFuaXRhcmlhbiBEYXRhIEV4Y2hhbmdlIChIRFgpLCBhbiBvcGVuIHBsYXRmb3JtIGZvciBzaGFyaW5nIGRhdGEgYWNyb3NzIHZhcmlvdXMgY3Jpc2VzIGFuZCBvcmdhbml6YXRpb25zLiBIRFggYWltcyB0byBzaW1wbGlmeSB0aGUgZGlzY292ZXJ5IGFuZCB1c2FnZSBvZiBodW1hbml0YXJpYW4gZGF0YSBmb3IgYW5hbHlzaXMgaHR0cHM6Ly9kYXRhLmh1bWRhdGEub3JnL2ZhcS4KCgojIyBMb2FkIGRhdGEgaW50byBSCgpgYGB7ciwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9CmdlbmRlcl9sYnIgPC0gcmVhZC5jc3YoImdlbmRlcl9sYnIuY3N2IikKaGVhZChnZW5kZXJfbGJyKQpgYGAKCiogKiAqCgojIFZhcmlhYmxlcwoKYGBge3IsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFfQpuYW1lcyhnZW5kZXJfbGJyKQpgYGAKClRoZSB2YXJpYWJsZXMgSSB1c2VkIGluIG15IGluZm9ncmFwaGljIGRlc2lnbiBhcmU6CgoxLiBZZWFyIAoyLiBJbmRpY2F0b3IuTmFtZQozLiBWYWx1ZQoKKiAqICoKCiMgRGF0YSBBbmFseXNpcwoKIyMgU3VtbWFyeSBTdGF0aXN0aWNzCgpgYGB7ciwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9CiMgSW5zcGVjdCB0aGUgZGF0YQpzdW1tYXJ5KGdlbmRlcl9sYnIpCmBgYAoKYGBge3J9CiMgRmlsdGVyIHRoZSBkYXRhIGZvciBsaXRlcmFjeSByYXRlcyBhbmQgZ2VuZGVyIHBhcml0eSBpbmRleApsaXRlcmFjeV9kYXRhIDwtIHN1YnNldChnZW5kZXJfbGJyLCBJbmRpY2F0b3IuTmFtZSA9PSAiTGl0ZXJhY3kgcmF0ZSwgeW91dGggZmVtYWxlICglIG9mIGZlbWFsZXMgYWdlcyAxNS0yNCkiKQpnZW5kZXJfcGFyaXR5X2RhdGEgPC0gc3Vic2V0KGdlbmRlcl9sYnIsIEluZGljYXRvci5OYW1lID09ICJMaXRlcmFjeSByYXRlLCB5b3V0aCAoYWdlcyAxNS0yNCksIGdlbmRlciBwYXJpdHkgaW5kZXggKEdQSSkiKQoKI2NvbnZlcnQgdG8gbnVtZXJpYwpsaXRlcmFjeV9kYXRhJFllYXIgPC0gYXMubnVtZXJpYyhsaXRlcmFjeV9kYXRhJFllYXIpCmxpdGVyYWN5X2RhdGEkVmFsdWUgPC0gYXMubnVtZXJpYyhnc3ViKCIsIiwgIiIsIGxpdGVyYWN5X2RhdGEkVmFsdWUpKSAKCmdlbmRlcl9wYXJpdHlfZGF0YSRZZWFyIDwtIGFzLm51bWVyaWMoZ2VuZGVyX3Bhcml0eV9kYXRhJFllYXIpCmdlbmRlcl9wYXJpdHlfZGF0YSRWYWx1ZSA8LSBhcy5udW1lcmljKGdzdWIoIiwiLCAiIiwgZ2VuZGVyX3Bhcml0eV9kYXRhJFZhbHVlKSkgCgojQ2hlY2tlZCBmb3IgTkEgdmFsdWVzIHRvIGVuc3VyZSBkYXRhIGludGVncml0eS4Kc3VtKGlzLm5hKGxpdGVyYWN5X2RhdGEkWWVhcikpCnN1bShpcy5uYShsaXRlcmFjeV9kYXRhJFZhbHVlKSkKc3VtKGlzLm5hKGdlbmRlcl9wYXJpdHlfZGF0YSRZZWFyKSkKc3VtKGlzLm5hKGdlbmRlcl9wYXJpdHlfZGF0YSRWYWx1ZSkpCmBgYAoKU3VtbWFyeSBTdGF0aXN0aWNzCipVc2luZyB0aGUgZmF2c3RhdHMoKSBmdW5jdGlvbgoKYGBge3J9CnN0YXRpc3RpY3MxIDwtIGZhdnN0YXRzKFZhbHVlIH4gWWVhciwgZGF0YSA9IGxpdGVyYWN5X2RhdGEgKQpzdGF0aXN0aWNzMiA8LSBmYXZzdGF0cyhWYWx1ZSB+IFllYXIsIGRhdGEgPSBsaXRlcmFjeV9kYXRhICkKaGVhZChzdGF0aXN0aWNzMSkKaGVhZChzdGF0aXN0aWNzMikKCmBgYAoKCmBgYHtyfQpnZ3Bsb3QoZGF0YSA9IGxpdGVyYWN5X2RhdGEsIGFlcyh4ID0gWWVhciwgeSA9IFZhbHVlKSkgKwogICAgZ2VvbV9saW5lKGNvbG9yID0gInJlZCIpICsgCiAgICB0aGVtZV9taW5pbWFsKCkgKwogICAgbGFicyh0aXRsZSA9ICJUcmVuZCBvZiBGZW1hbGUgTGl0ZXJhY3kgUmF0ZXMgaW4gTGliZXJpYSAoQWdlcyAxNS0yNCkiLCB4ID0gIlllYXIiLCB5ID0gIkxpdGVyYWN5IFJhdGUgKCUpIikKCmdncGxvdChkYXRhID0gZ2VuZGVyX3Bhcml0eV9kYXRhLCBhZXMoeCA9IFllYXIsIHkgPSBWYWx1ZSkpICsKICAgIGdlb21fbGluZShjb2xvciA9ICJibHVlIikgKyAKICAgIHRoZW1lX21pbmltYWwoKSArCiAgICBsYWJzKHRpdGxlID0gIlRyZW5kIG9mIEdlbmRlciBQYXJpdHkgSW5kZXggaW4gTGliZXJpYSAoQWdlcyAxNS0yNCkiLCB4ID0gIlllYXIiLCB5ID0gIkdlbmRlciBQYXJpdHkgSW5kZXgoJSkiKQpgYGAKClRoZSByZWQgbGluZSBncmFwaCBpbGx1c3RyYXRlcyBhbiBvdmVyYWxsIHBvc2l0aXZlIHRyZW5kIGluIHRoZSBsaXRlcmFjeSByYXRlcyBvZiB5b3VuZyB3b21lbiBpbiBMaWJlcmlhLCBkZXNwaXRlIHNvbWUgZmx1Y3R1YXRpb25zLiBJbml0aWFsbHksIHRoZSBsaXRlcmFjeSByYXRlcyBzaG93IG1vZGVzdCBncm93dGgsIGZvbGxvd2VkIGJ5IGEgc2lnbmlmaWNhbnQgcmlzZSBhbmQgYSBwZXJpb2Qgb2YgZGVjbGluZSwgYmVmb3JlIGEgc3Ryb25nIHJlY292ZXJ5IHRvIHRoZSBoaWdoZXN0IHJhdGVzIG9ic2VydmVkIHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgcGVyaW9kLiBUaGlzIHBhdHRlcm4gcmVmbGVjdHMgdGhlIG9uZ29pbmcgZWZmb3J0cyBhbmQgdmFyeWluZyBzdWNjZXNzIGluIGVuaGFuY2luZyBlZHVjYXRpb25hbCBhY2Nlc3MgYW5kIHF1YWxpdHkgZm9yIHlvdW5nIHdvbWVuLgoKVGhlIGJsdWUgbGluZSBncmFwaCB0cmFja3MgdGhlIGdlbmRlciBwYXJpdHkgaW5kZXgsIHNlcnZpbmcgYXMgYSBtZWFzdXJlIG9mIGVxdWFsaXR5IGluIGVkdWNhdGlvbmFsIGFjY2VzcyBhbmQgYWNoaWV2ZW1lbnQgYmV0d2VlbiBnZW5kZXJzLiBUaGUgdHJlbmQgZ2VuZXJhbGx5IG1vdmVzIHRvd2FyZHMgZ3JlYXRlciBwYXJpdHksIGluZGljYXRpbmcgc3RyaWRlcyB0b3dhcmRzIGVxdWFsIGVkdWNhdGlvbmFsIG9wcG9ydHVuaXRpZXMgZm9yIGJvdGggZ2VuZGVycy4gSG93ZXZlciwgdGhlIGpvdXJuZXkgc2hvd3MgZ3JhZHVhbCBwcm9ncmVzcyB3aXRoIHNvbWUgc2V0YmFja3MsIGhpZ2hsaWdodGluZyB0aGUgaW50cmljYXRlIGNoYWxsZW5nZXMgaW52b2x2ZWQgaW4gY29uc2lzdGVudGx5IGFkdmFuY2luZyBnZW5kZXIgcGFyaXR5IGluIGVkdWNhdGlvbiBpbiBMaWJlcmlhLgoKCiMgSW5mb2dyYXBoaWMKCj4gSSBpbnB1dCB0aGUgZGF0YSBmb3IgdGhlIHllYXIgYW5kIHZhbHVlcyBmb3IgYm90aCBmZW1hbGUgbGl0ZXJhY3kgcmF0ZXMgYW5kIGdlbmRlciBwYXJpdHkgaW5kZXggaW50byBhIEdvb2dsZSBTaGVldCBhbmQgZG93bmxvYWRlZCBpdCBhcyBhIENTViBmaWxlLiBJIGZvdW5kIGEgbGluZSBncmFwaCB0ZW1wbGF0ZSBpbiBDYW52YSBhbmQgdXBsb2FkZWQgdGhlIENTViBmaWxlLCBhbmQgdGhlIG51bWJlcnMgd2VyZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGxpbmUgZ3JhcGguIEkgdGhlbiBhZGRlZCBhbGwgb2YgdGhlIG5lY2Vzc2FyeSB0ZXh0IGRpc3RyaWJ1dGlvbnMgc3VjaCBhcyB0aGUgdGl0bGUsIHRoZSBsZWdlbmRzLCBhbmQgYSBicmllZiBleHBsYW5hdGlvbiBvZiB0aGUgZmluZGluZ3MuIEkgYWxzbyBpbmNsdWRlZCB2aXN1YWxzIHRoYXQgcmVwcmVzZW50IGEgZ2lybCB3YWxraW5nIHRvIHNjaG9vbCwgd2hpY2ggSSBjb2xvcmVkIHBpbmsgZm9yIHRoZSBmZW1hbGUgbGl0ZXJhY3kgZ3JhcGgsIGFuZCBhIGJveSBhbmQgYSBnaXJsIHN0YW5kaW5nIGVxdWFsbHkgdG8gcmVwcmVzZW50IGdlbmRlciBwYXJpdHkgaW4gdGhlIGdlbmRlciBwYXJpdHkgZ3JhcGguCgoKPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAwOyBwYWRkaW5nLXRvcDogNzUuMDAwMCU7CiBwYWRkaW5nLWJvdHRvbTogMDsgYm94LXNoYWRvdzogMCAycHggOHB4IDAgcmdiYSg2Myw2OSw4MSwwLjE2KTsgbWFyZ2luLXRvcDogMS42ZW07IG1hcmdpbi1ib3R0b206IDAuOWVtOyBvdmVyZmxvdzogaGlkZGVuOwogYm9yZGVyLXJhZGl1czogOHB4OyB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOyI+CiAgPGlmcmFtZSBsb2FkaW5nPSJsYXp5IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IGxlZnQ6IDA7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMDttYXJnaW46IDA7IgogICAgc3JjPSJodHRwczovL3d3dy5jYW52YS5jb20vZGVzaWduL0RBRjc4RmJtckhjL3ZpZXc/ZW1iZWQiIGFsbG93ZnVsbHNjcmVlbj0iYWxsb3dmdWxsc2NyZWVuIiBhbGxvdz0iZnVsbHNjcmVlbiIgZGF0YS1leHRlcm5hbD0iMSI+CiAgPC9pZnJhbWU+CjwvZGl2Pgo8YSBocmVmPSJodHRwczovL3d3dy5jYW52YS5jb20vZGVzaWduL0RBRjc4RmJtckhjL3ZpZXc/dXRtX2NvbnRlbnQ9REFGNzhGYm1ySGMmdXRtX2NhbXBhaWduPWRlc2lnbnNoYXJlJnV0bV9tZWRpdW09ZW1iZWRzJnV0bV9zb3VyY2U9bGluayIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkJsdWUgTW9kZXJuIExpbmUgQ2hhcnQgR3JhcGg8L2E+IGJ5IEV0dGEgQnJvb2tzCgoKCiMjIyAoYykKUHJvdmlkZSBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHlvdXIgZGF0YSB2aXN1YWxpemF0aW9uIHByb2Nlc3MuCgo+IERhdGEgUHJlcGFyYXRpb246CgpTb3VyY2VkIGFuZCBsb2FkZWQgZGF0YSBmcm9tIHRoZSBIdW1hbml0YXJpYW4gRGF0YSBFeGNoYW5nZSBpbnRvIFIsIGZvY3VzaW5nIG9uIGdlbmRlciBlcXVhbGl0eSBtZXRyaWNzIHNwZWNpZmljIHRvIExpYmVyaWEuCkRhdGEgUHJvY2Vzc2luZyBpbiBSOgoKQ29uZHVjdGVkIGRhdGEgY2xlYW5pbmcsIHRyYW5zZm9ybWF0aW9uLCBhbmQgc3RhdGlzdGljYWwgYW5hbHlzaXMgdXNpbmcgUiBwYWNrYWdlcyBsaWtlIHRpZHl2ZXJzZSBhbmQgbW9zYWljLgpWaXN1YWxpemF0aW9uOgoKVXRpbGl6ZWQgZ2dwbG90IGluIFIgZm9yIGluaXRpYWwgZGF0YSB2aXN1YWxpemF0aW9uIGFuZCB0aGVuIGV4cG9ydGVkIGtleSBkYXRhIGZvciBlbmhhbmNlZCB2aXN1YWwgcmVwcmVzZW50YXRpb24gdXNpbmcgQ2FudmEuCkluZm9ncmFwaGljIEVuaGFuY2VtZW50OgoKSW50ZWdyYXRlZCB0aGUgZGF0YSBpbnRvIGEgQ2FudmEgbGluZSBncmFwaCB0ZW1wbGF0ZSwgZW5yaWNoaW5nIHRoZSBpbmZvZ3JhcGhpYyB3aXRoIG1lYW5pbmdmdWwgdmlzdWFscyBhbmQgdGV4dHVhbCBhbm5vdGF0aW9ucyB0byBlbnN1cmUgY2xhcml0eSBhbmQgaW1wYWN0LgpOYXJyYXRpdmUgYW5kIFByZXNlbnRhdGlvbjoKCkNhcmVmdWxseSBlbWJlZGRlZCB0aGUgZmluYWwgaW5mb2dyYXBoaWMgaW4gdGhlIFIgTWFya2Rvd24gZG9jdW1lbnQsIGVuc3VyaW5nIGEgY29oZXNpdmUgbmFycmF0aXZlIGFuZCB2aXN1YWwgZmxvdy4KCiogKiAqCgojIFJlZmVyZW5jZXMKClRoZSBjcmVhdGlvbiBvZiB0aGUgaW5mb2dyYXBoaWMgaW52b2x2ZWQgdGhlIHVzZSBvZiB2YXJpb3VzIHNvdXJjZXMgZm9yIGRhdGEsIGdyYXBoaWNzLCBhbmQgYW5hbHlzaXMgdGVjaG5pcXVlcy4gQmVsb3cgYXJlIHRoZSByZWZlcmVuY2VzIHVzZWQgaW4gdGhpcyBwcm9qZWN0OgoKMS4gKipEYXRhIFNvdXJjZSoqOiBIdW1hbml0YXJpYW4gRGF0YSBFeGNoYW5nZSAoSERYKS4gU3BlY2lmaWMgZGV0YWlscyBhYm91dCB0aGUgZ2VuZGVyIGVxdWFsaXR5IG1ldHJpY3MgaW4gTGliZXJpYS4gQXZhaWxhYmxlIGF0IFtkYXRhLmh1bWRhdGEub3JnXShodHRwczovL2RhdGEuaHVtZGF0YS5vcmcvZmFxKS4KCjIuICoqUiBQYWNrYWdlcyoqOiAKICAgLSBgdGlkeXZlcnNlYCBmb3IgZGF0YSBtYW5pcHVsYXRpb24gYW5kIHZpc3VhbGl6YXRpb24uIAogICAtIGBtb3NhaWNgIGZvciBzdGF0aXN0aWNhbCBhbmFseXNpcy4KICAgCjMuICoqVmlzdWFsaXphdGlvbiBUb29sKio6IAogICAtIENhbnZhIGZvciBlbmhhbmNpbmcgZGF0YSB2aXN1YWxpemF0aW9ucyBhbmQgY3JlYXRpbmcgaW5mb2dyYXBoaWNzLiBDYW52YS4gCgo2LiAqKkFJIEFzc2lzdGFuY2UqKjoKICAgLSBPcGVuQUkncyBDaGF0R1BUIHdhcyBjb25zdWx0ZWQgZm9yIGd1aWRhbmNlIG9uIHZpc3VhbGl6YXRpb24gdGVjaG5pcXVlcywgYXMgd2VsbCBhcyBmb3IgcHJvb2ZyZWFkaW5nIGFuZCBncmFtbWFyIHN1Z2dlc3Rpb25zLgogICAKCgoKCiogKiAqCgo=