EXTRA 3: Educación y niveles escolares de la población.

Está tabla contiene información sobre las personas guatemaltecas en los distintos departamento, áreas y los estados de pobreza, la extrema, no extrema y no pobreza; la cual nos indica que porcentaje de la población sabe leer o escribir, quienes leen o escriben en un idioma indígena y que niveles de escolaridad tiene la población. Estos niveles de educación se basan en el nivel educactivo aprobado ya sea preprimaria, primaria, básicos y así sucesivamente.

REPRODUCCIÓN DE RESULTADOS

Para la reproducción de resultados se cargaron las librerias necesarias, se cargo el data a analizar y se tomaron las variables que se necesitan y se modifico la tabla para obtener los datos que se solicitaban.

library(dplyr)
library(ggplot2)
library(tidyverse)
library(haven)
encovi_edu <- read_sav("~/Data Science/Proyecto 2/personas.sav")
encovi_edu1 <- encovi_edu %>% select(DEPTO, AREA, POBREZA, P06B01, P06B02A, P06B25A)
colnames(encovi_edu1)<- c("DEPTO", "AREA" ,"POBREZA", "P06B01","P06B02A","Nivel_de_educacion")
encovi_edu1$Sabe.escribir.leer <- ifelse(encovi_edu1$P06B01 == 1, TRUE, FALSE)
encovi_edu1$Sabe.escribir.leer.idioma.indigena <- ifelse(encovi_edu1$P06B02A == 1, TRUE, FALSE)
encovi_edu1$Ninguno <- ifelse(encovi_edu1$Nivel_de_educacion == 0, TRUE, FALSE)
encovi_edu1$Preprimaria <- ifelse(encovi_edu1$Nivel_de_educacion == 1, TRUE, FALSE)
encovi_edu1$Primaria <- ifelse(encovi_edu1$Nivel_de_educacion == 2, TRUE, FALSE)
encovi_edu1$Basicos <- ifelse(encovi_edu1$Nivel_de_educacion== 3, TRUE, FALSE)
encovi_edu1$Diversificado <- ifelse(encovi_edu1$Nivel_de_educacion == 4, TRUE, FALSE)
encovi_edu1$Universitario <- ifelse(encovi_edu1$Nivel_de_educacion == 5, TRUE, FALSE)
encovi_edu1$Maestria <- ifelse(encovi_edu1$Nivel_de_educacion == 6, TRUE, FALSE)
encovi_edu1$Doctorado<- ifelse(encovi_edu1$Nivel_de_educacion == 7, TRUE, FALSE)
encovi_edu1 %>% summarise(Sabe.escribir.leer_total = sum(Sabe.escribir.leer, na.rm = TRUE)/n(), Sabe.escribir.leer.idioma.indigena_total = sum(Sabe.escribir.leer.idioma.indigena, na.rm = TRUE)/n(), Ninguno_total = sum(Ninguno, na.rm = TRUE)/n(), Preprimaria_total = sum(Preprimaria, na.rm = TRUE)/n(), Primaria_total = sum(Primaria, na.rm = TRUE)/n(), Basicos_total = sum(Basicos, na.rm = TRUE)/n(), Diversificado_total = sum(Diversificado, na.rm = TRUE)/n(), Universitario_total = sum(Universitario, na.rm = TRUE)/n(), Maestria_total = sum(Maestria, na.rm = TRUE)/n(), Doctorado_total = sum(Doctorado, na.rm = TRUE)/n())

Luego se obtienen las tablas por área, con los dstintos aspectos a analizar.

AREA <- encovi_edu1%>% group_by(as_factor(AREA)) %>% summarise(Sabe.escribir.leer_total = sum(Sabe.escribir.leer, na.rm = TRUE)*100/n(), Sabe.escribir.leer.idioma.indigena_total = sum(Sabe.escribir.leer.idioma.indigena, na.rm = TRUE)*100/n(), Ninguno_total = sum(Ninguno, na.rm = TRUE)*100/n(), Preprimaria_total = sum(Preprimaria, na.rm = TRUE)*100/n(), Primaria_total = sum(Primaria, na.rm = TRUE)*100/n(), Basicos_total = sum(Basicos, na.rm = TRUE)*100/n(), Diversificado_total = sum(Diversificado, na.rm = TRUE)*100/n(), Universitario_total = sum(Universitario, na.rm = TRUE)*100/n(), Maestria_total = sum(Maestria, na.rm = TRUE)*100/n(), Doctorado_total = sum(Doctorado, na.rm = TRUE)*100/n())
colnames(AREA)<- c("Area", "Sabe leer y escribir", "Sabe leer y escribir en un idioma indigena", "No ha aprobado ningun nivel", "Aprobado nivel Preprimario", "Aprobado nivel Primario", "Aprobado nivel Basico", "Aprobado nivel Diversificado", "Aprobado nivel Universitario", "Aprobado nivel Maestria", "Aprovado nivel Doctorado ")
AREA

Se crea una tabla con un enfoque de nuestras a variables a la pobreza en el país.

POBREZA <- encovi_edu1%>% group_by(as_factor(POBREZA)) %>% summarise(Sabe.escribir.leer_total = sum(Sabe.escribir.leer, na.rm = TRUE)*100/n(), Sabe.escribir.leer.idioma.indigena_total = sum(Sabe.escribir.leer.idioma.indigena, na.rm = TRUE)*100/n(), Ninguno_total = sum(Ninguno, na.rm = TRUE)*100/n(), Preprimaria_total = sum(Preprimaria, na.rm = TRUE)*100/n(), Primaria_total = sum(Primaria, na.rm = TRUE)*100/n(), Basicos_total = sum(Basicos, na.rm = TRUE)*100/n(), Diversificado_total = sum(Diversificado, na.rm = TRUE)*100/n(), Universitario_total = sum(Universitario, na.rm = TRUE)*100/n(), Maestria_total = sum(Maestria, na.rm = TRUE)*100/n(), Doctorado_total = sum(Doctorado, na.rm = TRUE)*100/n())
colnames(POBREZA)<- c("Pobreza", "Sabe leer y escribir", "Sabe leer y escribir en un idioma indigena", "No ha aprobado ningun nivel", "Aprobado nivel Preprimario", "Aprobado nivel Primario", "Aprobado nivel Basico", "Aprobado nivel Diversificado", "Aprobado nivel Universitario", "Aprobado nivel Maestria", "Aprovado nivel Doctorado")
POBREZA

Por último se crea una tabla para analizar los niveles de educación y sabe leer y escribir con respecto a los departamentos.

DEPARTAMENTO <- encovi_edu1%>% group_by(as_factor(DEPTO)) %>% summarise(Sabe.escribir.leer_total = sum(Sabe.escribir.leer, na.rm = TRUE)*100/n(), Sabe.escribir.leer.idioma.indigena_total = sum(Sabe.escribir.leer.idioma.indigena, na.rm = TRUE)*100/n(), Ninguno_total = sum(Ninguno, na.rm = TRUE)*100/n(), Preprimaria_total = sum(Preprimaria, na.rm = TRUE)*100/n(), Primaria_total = sum(Primaria, na.rm = TRUE)*100/n(), Basicos_total = sum(Basicos, na.rm = TRUE)*100/n(), Diversificado_total = sum(Diversificado, na.rm = TRUE)*100/n(), Universitario_total = sum(Universitario, na.rm = TRUE)*100/n(), Maestria_total = sum(Maestria, na.rm = TRUE)*100/n(), Doctorado_total = sum(Doctorado, na.rm = TRUE)*100/n())
colnames(DEPARTAMENTO)<- c("Departamento", "Sabe leer y escribir", "Sabe leer y escribir en un idioma indigena","No ha aprobado ningun nivel", "Aprobado nivel Preprimario", "Aprobado nivel Primario", "Aprobado nivel Basico", "Aprobado nivel Diversificado", "Aprobado nivel Universitario", "Aprobado nivel Maestria", "Aprovado nivel Doctorado ")
DEPARTAMENTO

ÁNALISIS

Se analizan la estructura y el resumen de las siguientes tablas: Tabla de áreas del país:

str(AREA)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   2 obs. of  11 variables:
 $ Area                                      : Factor w/ 2 levels "Urbana","Rural": 1 2
  ..- attr(*, "label")= chr "Área"
 $ Sabe leer y escribir                      : num  74 63.2
 $ Sabe leer y escribir en un idioma indigena: num  2.11 4.62
 $ No ha aprobado ningun nivel               : num  11.7 19.4
 $ Aprobado nivel Preprimario                : num  1.84 1.83
 $ Aprobado nivel Primario                   : num  38.3 46.1
 $ Aprobado nivel Basico                     : num  13.55 8.72
 $ Aprobado nivel Diversificado              : num  15.34 5.54
 $ Aprobado nivel Universitario              : num  4.55 0.73
 $ Aprobado nivel Maestria                   : num  0.1791 0.0251
 $ Aprovado nivel Doctorado                  : num  0.03058 0.00626
summary(AREA)
     Area   Sabe leer y escribir Sabe leer y escribir en un idioma indigena No ha aprobado ningun nivel
 Urbana:1   Min.   :63.21        Min.   :2.105                              Min.   :11.70              
 Rural :1   1st Qu.:65.91        1st Qu.:2.735                              1st Qu.:13.62              
            Median :68.61        Median :3.364                              Median :15.55              
            Mean   :68.61        Mean   :3.364                              Mean   :15.55              
            3rd Qu.:71.31        3rd Qu.:3.993                              3rd Qu.:17.47              
            Max.   :74.01        Max.   :4.623                              Max.   :19.40              
 Aprobado nivel Preprimario Aprobado nivel Primario Aprobado nivel Basico Aprobado nivel Diversificado
 Min.   :1.826              Min.   :38.28           Min.   : 8.722        Min.   : 5.544              
 1st Qu.:1.829              1st Qu.:40.24           1st Qu.: 9.928        1st Qu.: 7.993              
 Median :1.832              Median :42.20           Median :11.134        Median :10.442              
 Mean   :1.832              Mean   :42.20           Mean   :11.134        Mean   :10.442              
 3rd Qu.:1.836              3rd Qu.:44.15           3rd Qu.:12.340        3rd Qu.:12.892              
 Max.   :1.839              Max.   :46.11           Max.   :13.546        Max.   :15.341              
 Aprobado nivel Universitario Aprobado nivel Maestria Aprovado nivel Doctorado 
 Min.   :0.7297               Min.   :0.02506         Min.   :0.006264         
 1st Qu.:1.6841               1st Qu.:0.06357         1st Qu.:0.012342         
 Median :2.6385               Median :0.10207         Median :0.018420         
 Mean   :2.6385               Mean   :0.10207         Mean   :0.018420         
 3rd Qu.:3.5929               3rd Qu.:0.14058         3rd Qu.:0.024499         
 Max.   :4.5472               Max.   :0.17909         Max.   :0.030577         

Tabla de pobreza del país:

str(POBREZA)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   3 obs. of  11 variables:
 $ Pobreza                                   : Factor w/ 3 levels "Pobre ext.","Pobre no extr.",..: 1 2 3
  ..- attr(*, "label")= chr "Clasificación de hogar (Pobreza)"
 $ Sabe leer y escribir                      : num  54.7 65 78.6
 $ Sabe leer y escribir en un idioma indigena: num  5.11 3.7 2.48
 $ No ha aprobado ningun nivel               : num  23.1 17.4 10.7
 $ Aprobado nivel Preprimario                : num  2.03 2.14 1.4
 $ Aprobado nivel Primario                   : num  45.2 46.3 37.9
 $ Aprobado nivel Basico                     : num  5.98 10.29 14.16
 $ Aprobado nivel Diversificado              : num  1.74 5.82 18.38
 $ Aprobado nivel Universitario              : num  0.0917 0.259 5.7821
 $ Aprobado nivel Maestria                   : num  0.00764 0.0048 0.22497
 $ Aprovado nivel Doctorado                  : num  0 0 0.0431
summary(POBREZA)
           Pobreza  Sabe leer y escribir Sabe leer y escribir en un idioma indigena
 Pobre ext.    :1   Min.   :54.72        Min.   :2.484                             
 Pobre no extr.:1   1st Qu.:59.86        1st Qu.:3.091                             
 No pobre      :1   Median :64.99        Median :3.698                             
                    Mean   :66.10        Mean   :3.763                             
                    3rd Qu.:71.78        3rd Qu.:4.402                             
                    Max.   :78.58        Max.   :5.106                             
 No ha aprobado ningun nivel Aprobado nivel Preprimario Aprobado nivel Primario Aprobado nivel Basico
 Min.   :10.69               Min.   :1.398              Min.   :37.92           Min.   : 5.978       
 1st Qu.:14.02               1st Qu.:1.712              1st Qu.:41.57           1st Qu.: 8.136       
 Median :17.36               Median :2.026              Median :45.21           Median :10.294       
 Mean   :17.04               Mean   :1.856              Mean   :43.14           Mean   :10.143       
 3rd Qu.:20.22               3rd Qu.:2.085              3rd Qu.:45.75           3rd Qu.:12.226       
 Max.   :23.08               Max.   :2.144              Max.   :46.28           Max.   :14.159       
 Aprobado nivel Diversificado Aprobado nivel Universitario Aprobado nivel Maestria
 Min.   : 1.743               Min.   :0.09173              Min.   :0.004797       
 1st Qu.: 3.783               1st Qu.:0.17537              1st Qu.:0.006220       
 Median : 5.823               Median :0.25902              Median :0.007644       
 Mean   : 8.649               Mean   :2.04429              Mean   :0.079136       
 3rd Qu.:12.102               3rd Qu.:3.02057              3rd Qu.:0.116305       
 Max.   :18.380               Max.   :5.78212              Max.   :0.224966       
 Aprovado nivel Doctorado
 Min.   :0.00000         
 1st Qu.:0.00000         
 Median :0.00000         
 Mean   :0.01436         
 3rd Qu.:0.02154         
 Max.   :0.04308         

Tabla por departamentos del país:

str(DEPARTAMENTO)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   22 obs. of  11 variables:
 $ Departamento                              : Factor w/ 22 levels "Guatemala","El Progreso",..: 1 2 3 4 5 6 7 8 9 10 ...
  ..- attr(*, "label")= chr "Departamento"
 $ Sabe leer y escribir                      : num  79.5 73.6 78.2 69.5 70.2 ...
 $ Sabe leer y escribir en un idioma indigena: num  1.142 0.15 1.034 2.588 0.223 ...
 $ No ha aprobado ningun nivel               : num  8.32 12.37 9.2 12.39 14.31 ...
 $ Aprobado nivel Preprimario                : num  2.05 1.7 1.35 1.8 1.59 ...
 $ Aprobado nivel Primario                   : num  36 45.7 42.7 46.4 42 ...
 $ Aprobado nivel Basico                     : num  15.7 12.77 15.24 9.88 13.9 ...
 $ Aprobado nivel Diversificado              : num  17.8 11.7 13.9 10.2 10.9 ...
 $ Aprobado nivel Universitario              : num  6.85 1.6 4.24 1.76 1.78 ...
 $ Aprobado nivel Maestria                   : num  0.5592 0.0501 0.1325 0.0392 0 ...
 $ Aprovado nivel Doctorado                  : num  0.0699 0 0.0265 0 0 ...
summary(DEPARTAMENTO)
        Departamento Sabe leer y escribir Sabe leer y escribir en un idioma indigena

GRÁFICAS

Acontinuación se muestra una gráfica de los niveles de escolariadad en los distintos departamentos y áreas del país:

DEPARTAMENTO1 <- encovi_edu1%>% group_by(as_factor(DEPTO)) %>% summarise(Ninguno_total = sum(Ninguno, na.rm = TRUE)*100/n(), Preprimaria_total = sum(Preprimaria, na.rm = TRUE)*100/n(), Primaria_total = sum(Primaria, na.rm = TRUE)*100/n(), Basicos_total = sum(Basicos, na.rm = TRUE)*100/n(), Diversificado_total = sum(Diversificado, na.rm = TRUE)*100/n(), Universitario_total = sum(Universitario, na.rm = TRUE)*100/n(), Maestria_total = sum(Maestria, na.rm = TRUE)*100/n(), Doctorado_total = sum(Doctorado, na.rm = TRUE)*100/n())
colnames(DEPARTAMENTO1)<- c("Departamento","No ha aprobado ningun nivel", "Aprobado nivel Preprimario", "Aprobado nivel Primario", "Aprobado nivel Basico", "Aprobado nivel Diversificado", "Aprobado nivel Universitario", "Aprobado nivel Maestria", "Aprovado nivel Doctorado ")
DEPARTAMENTO1 <- DEPARTAMENTO1 %>% gather(Nivel, penetracion, -Departamento)
DEPARTAMENTO1 %>% ggplot(aes(as_factor(Departamento), penetracion)) +
    geom_col(aes(fill = Nivel, group = Nivel), position = "stack") +
    theme(axis.text.x = element_text(angle = 90))

AREA1 <- encovi_edu1%>% group_by(as_factor(AREA)) %>% summarise(Ninguno_total = sum(Ninguno, na.rm = TRUE)*100/n(), Preprimaria_total = sum(Preprimaria, na.rm = TRUE)*100/n(), Primaria_total = sum(Primaria, na.rm = TRUE)*100/n(), Basicos_total = sum(Basicos, na.rm = TRUE)*100/n(), Diversificado_total = sum(Diversificado, na.rm = TRUE)*100/n(), Universitario_total = sum(Universitario, na.rm = TRUE)*100/n(), Maestria_total = sum(Maestria, na.rm = TRUE)*100/n(), Doctorado_total = sum(Doctorado, na.rm = TRUE)*100/n())
colnames(AREA1)<- c("Area", "No ha aprobado ningun nivel", "Aprobado nivel Preprimario", "Aprobado nivel Primario", "Aprobado nivel Basico", "Aprobado nivel Diversificado", "Aprobado nivel Universitario", "Aprobado nivel Maestria", "Aprovado nivel Doctorado ")
AREA1 <- AREA1 %>% gather(Nivel, penetracion, -Area)
AREA1 %>%
  ggplot(aes(as_factor(Area), penetracion))+
  geom_point(aes(color = Nivel, group = Nivel))  +
  theme(axis.text.x = element_text(angle = 90))

CONCLUSIONES

  1. La población guatemlateca en terminos de educación ya sea enfocado en el área del país, los departamentos o la pobreza, la mayor parte de los ciudadanos al menos ha aprobado el nivel primario.

  2. La población que es universitaria hasta que ha sacado maestría va desde un rango de 6% a 0%. Esto nos muestra que el país no cuenta con muchos profesionales universitarios eso puede influir en quienes son pobres y no. Este hecho se evidencia en la tabla de pobreza ya que la mayoría de los que ha sacado una maestría o doctorado es la clase no pobre.

  3. Un resultado muy valioso que cabe resaltar es que tanto en el área rural y urbana y en los distintos niveles de pobreza la mayoría de las personas saber leer y escribir, más de un 50% de la población sabe leer y escribir aunque los idiomas indigenas solo Alta Verapaz muestra un indice alto de un 19% de la población que sabe leer y escribir un idioma indígena. Al decir esto podemos ver que la población cada vez va dejando parte de la cultura pasada y empieza a hablar el idioma oficial del país que es el español.

LS0tDQp0aXRsZTogIlJlc3VsdGFkb3MgRW5jb3ZpIDIwMTQiDQphdXRob3I6ICJTaGFyaXMgQmFycmlvcywgU2l1IExpbmcgQ2hhbmcsIFJvZG9sZm8gUm9qYXMsIEppbWVuYSBT4W5jaGV6LCBTdWNlbHkgVGV5dWwiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyBFWFRSQSAzOiBFZHVjYWNp824geSBuaXZlbGVzIGVzY29sYXJlcyBkZSBsYSBwb2JsYWNp824uIA0KDQpFc3ThIHRhYmxhIGNvbnRpZW5lIGluZm9ybWFjafNuIHNvYnJlIGxhcyBwZXJzb25hcyBndWF0ZW1hbHRlY2FzIGVuIGxvcyBkaXN0aW50b3MgZGVwYXJ0YW1lbnRvLCDhcmVhcyB5IGxvcyBlc3RhZG9zIGRlIHBvYnJlemEsIGxhIGV4dHJlbWEsIG5vIGV4dHJlbWEgeSBubyBwb2JyZXphOyBsYSBjdWFsIG5vcyBpbmRpY2EgcXVlIHBvcmNlbnRhamUgZGUgbGEgcG9ibGFjafNuIHNhYmUgbGVlciBvIGVzY3JpYmlyLCBxdWllbmVzIGxlZW4gbyBlc2NyaWJlbiBlbiB1biBpZGlvbWEgaW5k7WdlbmEgeSBxdWUgbml2ZWxlcyBkZSBlc2NvbGFyaWRhZCB0aWVuZSBsYSBwb2JsYWNp824uIEVzdG9zIG5pdmVsZXMgZGUgZWR1Y2FjafNuIHNlIGJhc2FuIGVuIGVsIG5pdmVsIGVkdWNhY3Rpdm8gYXByb2JhZG8geWEgc2VhIHByZXByaW1hcmlhLCBwcmltYXJpYSwgYuFzaWNvcyB5IGFz7SBzdWNlc2l2YW1lbnRlLiANCg0KIyMjIFJFUFJPRFVDQ0nTTiBERSBSRVNVTFRBRE9TDQpQYXJhIGxhIHJlcHJvZHVjY2nzbiBkZSByZXN1bHRhZG9zIHNlIGNhcmdhcm9uIGxhcyBsaWJyZXJpYXMgbmVjZXNhcmlhcywgc2UgY2FyZ28gZWwgZGF0YSBhIGFuYWxpemFyIHkgc2UgdG9tYXJvbiBsYXMgdmFyaWFibGVzIHF1ZSBzZSBuZWNlc2l0YW4geSBzZSBtb2RpZmljbyBsYSB0YWJsYSBwYXJhIG9idGVuZXIgbG9zIGRhdG9zIHF1ZSBzZSBzb2xpY2l0YWJhbi4gDQpgYGB7cn0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoaGF2ZW4pDQoNCmVuY292aV9lZHUgPC0gcmVhZF9zYXYoIn4vRGF0YSBTY2llbmNlL1Byb3llY3RvIDIvcGVyc29uYXMuc2F2IikNCmBgYA0KYGBge3J9DQplbmNvdmlfZWR1MSA8LSBlbmNvdmlfZWR1ICU+JSBzZWxlY3QoREVQVE8sIEFSRUEsIFBPQlJFWkEsIFAwNkIwMSwgUDA2QjAyQSwgUDA2QjI1QSkNCmNvbG5hbWVzKGVuY292aV9lZHUxKTwtIGMoIkRFUFRPIiwgIkFSRUEiICwiUE9CUkVaQSIsICJQMDZCMDEiLCJQMDZCMDJBIiwiTml2ZWxfZGVfZWR1Y2FjaW9uIikNCmBgYA0KYGBge3J9DQplbmNvdmlfZWR1MSRTYWJlLmVzY3JpYmlyLmxlZXIgPC0gaWZlbHNlKGVuY292aV9lZHUxJFAwNkIwMSA9PSAxLCBUUlVFLCBGQUxTRSkNCmVuY292aV9lZHUxJFNhYmUuZXNjcmliaXIubGVlci5pZGlvbWEuaW5kaWdlbmEgPC0gaWZlbHNlKGVuY292aV9lZHUxJFAwNkIwMkEgPT0gMSwgVFJVRSwgRkFMU0UpDQplbmNvdmlfZWR1MSROaW5ndW5vIDwtIGlmZWxzZShlbmNvdmlfZWR1MSROaXZlbF9kZV9lZHVjYWNpb24gPT0gMCwgVFJVRSwgRkFMU0UpDQplbmNvdmlfZWR1MSRQcmVwcmltYXJpYSA8LSBpZmVsc2UoZW5jb3ZpX2VkdTEkTml2ZWxfZGVfZWR1Y2FjaW9uID09IDEsIFRSVUUsIEZBTFNFKQ0KZW5jb3ZpX2VkdTEkUHJpbWFyaWEgPC0gaWZlbHNlKGVuY292aV9lZHUxJE5pdmVsX2RlX2VkdWNhY2lvbiA9PSAyLCBUUlVFLCBGQUxTRSkNCmVuY292aV9lZHUxJEJhc2ljb3MgPC0gaWZlbHNlKGVuY292aV9lZHUxJE5pdmVsX2RlX2VkdWNhY2lvbj09IDMsIFRSVUUsIEZBTFNFKQ0KZW5jb3ZpX2VkdTEkRGl2ZXJzaWZpY2FkbyA8LSBpZmVsc2UoZW5jb3ZpX2VkdTEkTml2ZWxfZGVfZWR1Y2FjaW9uID09IDQsIFRSVUUsIEZBTFNFKQ0KZW5jb3ZpX2VkdTEkVW5pdmVyc2l0YXJpbyA8LSBpZmVsc2UoZW5jb3ZpX2VkdTEkTml2ZWxfZGVfZWR1Y2FjaW9uID09IDUsIFRSVUUsIEZBTFNFKQ0KZW5jb3ZpX2VkdTEkTWFlc3RyaWEgPC0gaWZlbHNlKGVuY292aV9lZHUxJE5pdmVsX2RlX2VkdWNhY2lvbiA9PSA2LCBUUlVFLCBGQUxTRSkNCmVuY292aV9lZHUxJERvY3RvcmFkbzwtIGlmZWxzZShlbmNvdmlfZWR1MSROaXZlbF9kZV9lZHVjYWNpb24gPT0gNywgVFJVRSwgRkFMU0UpDQpgYGANCmBgYHtyfQ0KZW5jb3ZpX2VkdTEgJT4lIHN1bW1hcmlzZShTYWJlLmVzY3JpYmlyLmxlZXJfdG90YWwgPSBzdW0oU2FiZS5lc2NyaWJpci5sZWVyLCBuYS5ybSA9IFRSVUUpL24oKSwgU2FiZS5lc2NyaWJpci5sZWVyLmlkaW9tYS5pbmRpZ2VuYV90b3RhbCA9IHN1bShTYWJlLmVzY3JpYmlyLmxlZXIuaWRpb21hLmluZGlnZW5hLCBuYS5ybSA9IFRSVUUpL24oKSwgTmluZ3Vub190b3RhbCA9IHN1bShOaW5ndW5vLCBuYS5ybSA9IFRSVUUpL24oKSwgUHJlcHJpbWFyaWFfdG90YWwgPSBzdW0oUHJlcHJpbWFyaWEsIG5hLnJtID0gVFJVRSkvbigpLCBQcmltYXJpYV90b3RhbCA9IHN1bShQcmltYXJpYSwgbmEucm0gPSBUUlVFKS9uKCksIEJhc2ljb3NfdG90YWwgPSBzdW0oQmFzaWNvcywgbmEucm0gPSBUUlVFKS9uKCksIERpdmVyc2lmaWNhZG9fdG90YWwgPSBzdW0oRGl2ZXJzaWZpY2FkbywgbmEucm0gPSBUUlVFKS9uKCksIFVuaXZlcnNpdGFyaW9fdG90YWwgPSBzdW0oVW5pdmVyc2l0YXJpbywgbmEucm0gPSBUUlVFKS9uKCksIE1hZXN0cmlhX3RvdGFsID0gc3VtKE1hZXN0cmlhLCBuYS5ybSA9IFRSVUUpL24oKSwgRG9jdG9yYWRvX3RvdGFsID0gc3VtKERvY3RvcmFkbywgbmEucm0gPSBUUlVFKS9uKCkpDQpgYGANCg0KTHVlZ28gc2Ugb2J0aWVuZW4gbGFzIHRhYmxhcyBwb3Ig4XJlYSwgY29uIGxvcyBkc3RpbnRvcyBhc3BlY3RvcyBhIGFuYWxpemFyLiANCmBgYHtyfQ0KQVJFQSA8LSBlbmNvdmlfZWR1MSU+JSBncm91cF9ieShhc19mYWN0b3IoQVJFQSkpICU+JSBzdW1tYXJpc2UoU2FiZS5lc2NyaWJpci5sZWVyX3RvdGFsID0gc3VtKFNhYmUuZXNjcmliaXIubGVlciwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBTYWJlLmVzY3JpYmlyLmxlZXIuaWRpb21hLmluZGlnZW5hX3RvdGFsID0gc3VtKFNhYmUuZXNjcmliaXIubGVlci5pZGlvbWEuaW5kaWdlbmEsIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgTmluZ3Vub190b3RhbCA9IHN1bShOaW5ndW5vLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIFByZXByaW1hcmlhX3RvdGFsID0gc3VtKFByZXByaW1hcmlhLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIFByaW1hcmlhX3RvdGFsID0gc3VtKFByaW1hcmlhLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIEJhc2ljb3NfdG90YWwgPSBzdW0oQmFzaWNvcywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBEaXZlcnNpZmljYWRvX3RvdGFsID0gc3VtKERpdmVyc2lmaWNhZG8sIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgVW5pdmVyc2l0YXJpb190b3RhbCA9IHN1bShVbml2ZXJzaXRhcmlvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIE1hZXN0cmlhX3RvdGFsID0gc3VtKE1hZXN0cmlhLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIERvY3RvcmFkb190b3RhbCA9IHN1bShEb2N0b3JhZG8sIG5hLnJtID0gVFJVRSkqMTAwL24oKSkNCg0KDQpjb2xuYW1lcyhBUkVBKTwtIGMoIkFyZWEiLCAiU2FiZSBsZWVyIHkgZXNjcmliaXIiLCAiU2FiZSBsZWVyIHkgZXNjcmliaXIgZW4gdW4gaWRpb21hIGluZGlnZW5hIiwgIk5vIGhhIGFwcm9iYWRvIG5pbmd1biBuaXZlbCIsICJBcHJvYmFkbyBuaXZlbCBQcmVwcmltYXJpbyIsICJBcHJvYmFkbyBuaXZlbCBQcmltYXJpbyIsICJBcHJvYmFkbyBuaXZlbCBCYXNpY28iLCAiQXByb2JhZG8gbml2ZWwgRGl2ZXJzaWZpY2FkbyIsICJBcHJvYmFkbyBuaXZlbCBVbml2ZXJzaXRhcmlvIiwgIkFwcm9iYWRvIG5pdmVsIE1hZXN0cmlhIiwgIkFwcm92YWRvIG5pdmVsIERvY3RvcmFkbyAiKQ0KDQpBUkVBDQpgYGANCg0KU2UgY3JlYSB1bmEgdGFibGEgY29uIHVuIGVuZm9xdWUgZGUgbnVlc3RyYXMgYSB2YXJpYWJsZXMgYSBsYSBwb2JyZXphIGVuIGVsIHBh7XMuIA0KYGBge3IsIGVjaG89VFJVRX0NClBPQlJFWkEgPC0gZW5jb3ZpX2VkdTElPiUgZ3JvdXBfYnkoYXNfZmFjdG9yKFBPQlJFWkEpKSAlPiUgc3VtbWFyaXNlKFNhYmUuZXNjcmliaXIubGVlcl90b3RhbCA9IHN1bShTYWJlLmVzY3JpYmlyLmxlZXIsIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgU2FiZS5lc2NyaWJpci5sZWVyLmlkaW9tYS5pbmRpZ2VuYV90b3RhbCA9IHN1bShTYWJlLmVzY3JpYmlyLmxlZXIuaWRpb21hLmluZGlnZW5hLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIE5pbmd1bm9fdG90YWwgPSBzdW0oTmluZ3VubywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBQcmVwcmltYXJpYV90b3RhbCA9IHN1bShQcmVwcmltYXJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBQcmltYXJpYV90b3RhbCA9IHN1bShQcmltYXJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBCYXNpY29zX3RvdGFsID0gc3VtKEJhc2ljb3MsIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgRGl2ZXJzaWZpY2Fkb190b3RhbCA9IHN1bShEaXZlcnNpZmljYWRvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIFVuaXZlcnNpdGFyaW9fdG90YWwgPSBzdW0oVW5pdmVyc2l0YXJpbywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBNYWVzdHJpYV90b3RhbCA9IHN1bShNYWVzdHJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBEb2N0b3JhZG9fdG90YWwgPSBzdW0oRG9jdG9yYWRvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCkpDQoNCg0KY29sbmFtZXMoUE9CUkVaQSk8LSBjKCJQb2JyZXphIiwgIlNhYmUgbGVlciB5IGVzY3JpYmlyIiwgIlNhYmUgbGVlciB5IGVzY3JpYmlyIGVuIHVuIGlkaW9tYSBpbmRpZ2VuYSIsICJObyBoYSBhcHJvYmFkbyBuaW5ndW4gbml2ZWwiLCAiQXByb2JhZG8gbml2ZWwgUHJlcHJpbWFyaW8iLCAiQXByb2JhZG8gbml2ZWwgUHJpbWFyaW8iLCAiQXByb2JhZG8gbml2ZWwgQmFzaWNvIiwgIkFwcm9iYWRvIG5pdmVsIERpdmVyc2lmaWNhZG8iLCAiQXByb2JhZG8gbml2ZWwgVW5pdmVyc2l0YXJpbyIsICJBcHJvYmFkbyBuaXZlbCBNYWVzdHJpYSIsICJBcHJvdmFkbyBuaXZlbCBEb2N0b3JhZG8iKQ0KDQpQT0JSRVpBDQpgYGANCg0KUG9yIPpsdGltbyBzZSBjcmVhIHVuYSB0YWJsYSBwYXJhIGFuYWxpemFyIGxvcyBuaXZlbGVzIGRlIGVkdWNhY2nzbiB5IHNhYmUgbGVlciB5IGVzY3JpYmlyIGNvbiByZXNwZWN0byBhIGxvcyBkZXBhcnRhbWVudG9zLiANCmBgYHtyfQ0KREVQQVJUQU1FTlRPIDwtIGVuY292aV9lZHUxJT4lIGdyb3VwX2J5KGFzX2ZhY3RvcihERVBUTykpICU+JSBzdW1tYXJpc2UoU2FiZS5lc2NyaWJpci5sZWVyX3RvdGFsID0gc3VtKFNhYmUuZXNjcmliaXIubGVlciwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBTYWJlLmVzY3JpYmlyLmxlZXIuaWRpb21hLmluZGlnZW5hX3RvdGFsID0gc3VtKFNhYmUuZXNjcmliaXIubGVlci5pZGlvbWEuaW5kaWdlbmEsIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgTmluZ3Vub190b3RhbCA9IHN1bShOaW5ndW5vLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIFByZXByaW1hcmlhX3RvdGFsID0gc3VtKFByZXByaW1hcmlhLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIFByaW1hcmlhX3RvdGFsID0gc3VtKFByaW1hcmlhLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIEJhc2ljb3NfdG90YWwgPSBzdW0oQmFzaWNvcywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBEaXZlcnNpZmljYWRvX3RvdGFsID0gc3VtKERpdmVyc2lmaWNhZG8sIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgVW5pdmVyc2l0YXJpb190b3RhbCA9IHN1bShVbml2ZXJzaXRhcmlvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIE1hZXN0cmlhX3RvdGFsID0gc3VtKE1hZXN0cmlhLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIERvY3RvcmFkb190b3RhbCA9IHN1bShEb2N0b3JhZG8sIG5hLnJtID0gVFJVRSkqMTAwL24oKSkNCg0KDQpjb2xuYW1lcyhERVBBUlRBTUVOVE8pPC0gYygiRGVwYXJ0YW1lbnRvIiwgIlNhYmUgbGVlciB5IGVzY3JpYmlyIiwgIlNhYmUgbGVlciB5IGVzY3JpYmlyIGVuIHVuIGlkaW9tYSBpbmRpZ2VuYSIsIk5vIGhhIGFwcm9iYWRvIG5pbmd1biBuaXZlbCIsICJBcHJvYmFkbyBuaXZlbCBQcmVwcmltYXJpbyIsICJBcHJvYmFkbyBuaXZlbCBQcmltYXJpbyIsICJBcHJvYmFkbyBuaXZlbCBCYXNpY28iLCAiQXByb2JhZG8gbml2ZWwgRGl2ZXJzaWZpY2FkbyIsICJBcHJvYmFkbyBuaXZlbCBVbml2ZXJzaXRhcmlvIiwgIkFwcm9iYWRvIG5pdmVsIE1hZXN0cmlhIiwgIkFwcm92YWRvIG5pdmVsIERvY3RvcmFkbyAiKQ0KDQpERVBBUlRBTUVOVE8NCmBgYA0KDQoNCiMjI8FOQUxJU0lTDQpTZSBhbmFsaXphbiBsYSBlc3RydWN0dXJhIHkgZWwgcmVzdW1lbiBkZSBsYXMgc2lndWllbnRlcyB0YWJsYXM6DQpUYWJsYSBkZSDhcmVhcyBkZWwgcGHtczoNCmBgYHtyfQ0Kc3RyKEFSRUEpDQpzdW1tYXJ5KEFSRUEpDQpgYGANClRhYmxhIGRlIHBvYnJlemEgZGVsIHBh7XM6DQoNCmBgYHtyfQ0Kc3RyKFBPQlJFWkEpDQpzdW1tYXJ5KFBPQlJFWkEpDQpgYGANCg0KVGFibGEgcG9yIGRlcGFydGFtZW50b3MgZGVsIHBh7XM6DQpgYGB7cn0NCnN0cihERVBBUlRBTUVOVE8pDQpzdW1tYXJ5KERFUEFSVEFNRU5UTykNCmBgYA0KDQojIyMgR1LBRklDQVMgDQpBY29udGludWFjafNuIHNlIG11ZXN0cmEgdW5hIGdy4WZpY2EgZGUgbG9zIG5pdmVsZXMgZGUgZXNjb2xhcmlhZGFkIGVuIGxvcyBkaXN0aW50b3MgZGVwYXJ0YW1lbnRvcyB5IOFyZWFzIGRlbCBwYe1zOiANCmBgYHtyfQ0KREVQQVJUQU1FTlRPMSA8LSBlbmNvdmlfZWR1MSU+JSBncm91cF9ieShhc19mYWN0b3IoREVQVE8pKSAlPiUgc3VtbWFyaXNlKE5pbmd1bm9fdG90YWwgPSBzdW0oTmluZ3VubywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBQcmVwcmltYXJpYV90b3RhbCA9IHN1bShQcmVwcmltYXJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBQcmltYXJpYV90b3RhbCA9IHN1bShQcmltYXJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBCYXNpY29zX3RvdGFsID0gc3VtKEJhc2ljb3MsIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgRGl2ZXJzaWZpY2Fkb190b3RhbCA9IHN1bShEaXZlcnNpZmljYWRvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIFVuaXZlcnNpdGFyaW9fdG90YWwgPSBzdW0oVW5pdmVyc2l0YXJpbywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBNYWVzdHJpYV90b3RhbCA9IHN1bShNYWVzdHJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBEb2N0b3JhZG9fdG90YWwgPSBzdW0oRG9jdG9yYWRvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCkpDQoNCmNvbG5hbWVzKERFUEFSVEFNRU5UTzEpPC0gYygiRGVwYXJ0YW1lbnRvIiwiTm8gaGEgYXByb2JhZG8gbmluZ3VuIG5pdmVsIiwgIkFwcm9iYWRvIG5pdmVsIFByZXByaW1hcmlvIiwgIkFwcm9iYWRvIG5pdmVsIFByaW1hcmlvIiwgIkFwcm9iYWRvIG5pdmVsIEJhc2ljbyIsICJBcHJvYmFkbyBuaXZlbCBEaXZlcnNpZmljYWRvIiwgIkFwcm9iYWRvIG5pdmVsIFVuaXZlcnNpdGFyaW8iLCAiQXByb2JhZG8gbml2ZWwgTWFlc3RyaWEiLCAiQXByb3ZhZG8gbml2ZWwgRG9jdG9yYWRvICIpDQpERVBBUlRBTUVOVE8xIDwtIERFUEFSVEFNRU5UTzEgJT4lIGdhdGhlcihOaXZlbCwgcGVuZXRyYWNpb24sIC1EZXBhcnRhbWVudG8pDQpgYGANCmBgYHtyfQ0KREVQQVJUQU1FTlRPMSAlPiUgZ2dwbG90KGFlcyhhc19mYWN0b3IoRGVwYXJ0YW1lbnRvKSwgcGVuZXRyYWNpb24pKSArDQogICAgZ2VvbV9jb2woYWVzKGZpbGwgPSBOaXZlbCwgZ3JvdXAgPSBOaXZlbCksIHBvc2l0aW9uID0gInN0YWNrIikgKw0KICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQ0KYGBgDQoNCmBgYHtyfQ0KQVJFQTEgPC0gZW5jb3ZpX2VkdTElPiUgZ3JvdXBfYnkoYXNfZmFjdG9yKEFSRUEpKSAlPiUgc3VtbWFyaXNlKE5pbmd1bm9fdG90YWwgPSBzdW0oTmluZ3VubywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBQcmVwcmltYXJpYV90b3RhbCA9IHN1bShQcmVwcmltYXJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBQcmltYXJpYV90b3RhbCA9IHN1bShQcmltYXJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBCYXNpY29zX3RvdGFsID0gc3VtKEJhc2ljb3MsIG5hLnJtID0gVFJVRSkqMTAwL24oKSwgRGl2ZXJzaWZpY2Fkb190b3RhbCA9IHN1bShEaXZlcnNpZmljYWRvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCksIFVuaXZlcnNpdGFyaW9fdG90YWwgPSBzdW0oVW5pdmVyc2l0YXJpbywgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBNYWVzdHJpYV90b3RhbCA9IHN1bShNYWVzdHJpYSwgbmEucm0gPSBUUlVFKSoxMDAvbigpLCBEb2N0b3JhZG9fdG90YWwgPSBzdW0oRG9jdG9yYWRvLCBuYS5ybSA9IFRSVUUpKjEwMC9uKCkpDQoNCmNvbG5hbWVzKEFSRUExKTwtIGMoIkFyZWEiLCAiTm8gaGEgYXByb2JhZG8gbmluZ3VuIG5pdmVsIiwgIkFwcm9iYWRvIG5pdmVsIFByZXByaW1hcmlvIiwgIkFwcm9iYWRvIG5pdmVsIFByaW1hcmlvIiwgIkFwcm9iYWRvIG5pdmVsIEJhc2ljbyIsICJBcHJvYmFkbyBuaXZlbCBEaXZlcnNpZmljYWRvIiwgIkFwcm9iYWRvIG5pdmVsIFVuaXZlcnNpdGFyaW8iLCAiQXByb2JhZG8gbml2ZWwgTWFlc3RyaWEiLCAiQXByb3ZhZG8gbml2ZWwgRG9jdG9yYWRvICIpDQpBUkVBMSA8LSBBUkVBMSAlPiUgZ2F0aGVyKE5pdmVsLCBwZW5ldHJhY2lvbiwgLUFyZWEpDQpgYGANCmBgYHtyfQ0KQVJFQTEgJT4lDQogIGdncGxvdChhZXMoYXNfZmFjdG9yKEFyZWEpLCBwZW5ldHJhY2lvbikpKw0KICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IE5pdmVsLCBncm91cCA9IE5pdmVsKSkgICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpDQpgYGANCg0KDQoNCiMjIyBDT05DTFVTSU9ORVMNCjEpIExhIHBvYmxhY2nzbiBndWF0ZW1sYXRlY2EgZW4gdGVybWlub3MgZGUgZWR1Y2FjafNuIHlhIHNlYSBlbmZvY2FkbyBlbiBlbCDhcmVhIGRlbCBwYe1zLCBsb3MgZGVwYXJ0YW1lbnRvcyBvIGxhIHBvYnJlemEsIGxhIG1heW9yIHBhcnRlIGRlIGxvcyBjaXVkYWRhbm9zIGFsIG1lbm9zIGhhIGFwcm9iYWRvIGVsIG5pdmVsIHByaW1hcmlvLiANCg0KMikgTGEgcG9ibGFjafNuIHF1ZSBlcyB1bml2ZXJzaXRhcmlhIGhhc3RhIHF1ZSBoYSBzYWNhZG8gbWFlc3Ry7WEgdmEgZGVzZGUgdW4gcmFuZ28gZGUgNiUgYSAwJS4gRXN0byBub3MgbXVlc3RyYSBxdWUgZWwgcGHtcyBubyBjdWVudGEgY29uIG11Y2hvcyBwcm9mZXNpb25hbGVzIHVuaXZlcnNpdGFyaW9zIGVzbyBwdWVkZSBpbmZsdWlyIGVuIHF1aWVuZXMgc29uIHBvYnJlcyB5IG5vLiBFc3RlIGhlY2hvIHNlIGV2aWRlbmNpYSBlbiBsYSB0YWJsYSBkZSBwb2JyZXphIHlhIHF1ZSBsYSBtYXlvcu1hIGRlIGxvcyBxdWUgaGEgc2FjYWRvIHVuYSBtYWVzdHLtYSBvIGRvY3RvcmFkbyBlcyBsYSBjbGFzZSBubyBwb2JyZS4gDQoNCjMpIFVuIHJlc3VsdGFkbyBtdXkgdmFsaW9zbyBxdWUgY2FiZSByZXNhbHRhciBlcyBxdWUgdGFudG8gZW4gZWwg4XJlYSBydXJhbCB5IHVyYmFuYSB5IGVuIGxvcyBkaXN0aW50b3Mgbml2ZWxlcyBkZSBwb2JyZXphIGxhIG1heW9y7WEgZGUgbGFzIHBlcnNvbmFzIHNhYmVyIGxlZXIgeSBlc2NyaWJpciwgbeFzIGRlIHVuIDUwJSBkZSBsYSBwb2JsYWNp824gc2FiZSBsZWVyIHkgZXNjcmliaXIgYXVucXVlIGxvcyBpZGlvbWFzIGluZGlnZW5hcyBzb2xvIEFsdGEgVmVyYXBheiBtdWVzdHJhIHVuIGluZGljZSBhbHRvIGRlIHVuIDE5JSBkZSBsYSBwb2JsYWNp824gcXVlIHNhYmUgbGVlciB5IGVzY3JpYmlyIHVuIGlkaW9tYSBpbmTtZ2VuYS4gQWwgZGVjaXIgZXN0byBwb2RlbW9zIHZlciBxdWUgbGEgcG9ibGFjafNuIGNhZGEgdmV6IHZhIGRlamFuZG8gcGFydGUgZGUgbGEgY3VsdHVyYSBwYXNhZGEgeSBlbXBpZXphIGEgaGFibGFyIGVsIGlkaW9tYSBvZmljaWFsIGRlbCBwYe1zIHF1ZSBlcyBlbCBlc3Bh8W9sLiAgDQoNCg0KDQo=