Uso de seguro escolar por trauma dental

Paquetes

Dataset

Data anonimization

Data cleaning & transformation

Primero identifico traumas en la zona bucal:

BOCA CARA DIENTES GOLPE CARA LENGUA MANDIBULA MENTON PALADAR

Creo una nueva variable traumaOral

Eliminar y cambiar todos los “no registra” y “NO REGISTRA”

Save current dataset clean, just in case

Preguntas

Planilla: formularios accidentes escolares (accidentes escolares en colegios)

1. Tasa de uso del seguro escolar

table(df$UsoSeguroSiNo)

  NO   SI 
2107  357 

2. Número de accidentes odontológicos año 2015 y 2016 por colegio (se puede?)

table(df$anno, df$TraumaOral)
      
         NO   SI
  2015  319   16
  2016 2061   68

3. Proporción de accidentes “odontológicos” comparado con los no odontológicos

table(df$TraumaOral)

  NO   SI 
2380   84 

4. Proporción de accidentes “odontológicos” que registran atención en hospital Carlos Van Buren

table(df$TraumaOral, df$`LUGAR DE ATENCION`)
    
     HCVB PARTICULAR SAPU GOMEZ CARREÑO
  NO  438          1                  1
  SI   19          0                  0

5. Determinar distribución por edad y género de los accidentes totales

table(df$TraumaOral, df$SEXO)
    
     FEMENINO MASCULINO
  NO     1140      1233
  SI       32        52
table(df$Edad, df$TraumaOral)
    
      NO  SI
  6  173  15
  7  173  15
  8  239  16
  9  274   7
  10 287   2
  11 239   4
  12 140   3
  13 114   1
  14 115   3
  15 103   0
  16  72   1
  17  57   1
  18  33   0
  20 361  16

6. Determinar distribución por edad y género de los accidentes “odontológicos”

df %>% 
  filter(TraumaOral == "SI") %>% 
  select(Edad, SEXO, TraumaOral) %>% 
  group_by(SEXO, Edad) %>% 
  summarise(n = n()) %>% 
  spread(key = SEXO, value = n)

7. Determinar distribución por colegios de los accidentes totales

table(df$Colegio, df$TraumaOral)
                                                      
                                                        NO  SI
  COLEGIO BORDEMAR                                     118   3
  COLEGIO GUARDIA MARINA RIQUELME                       91   4
  COLEGIO INMACULADA CONCEPCION NUESTRA SRA DE LOURDES 160   9
  COLEGIO LAS ACACIAS                                  212   7
  COLEGIO LEONARDO MURIALDO                            622  23
  COLEGIO LUTERANO CONCORDIA                           107   5
  COLEGIO MAR ABIERTO                                  258  12
  COLEGIO PATRICIO LYNCH                                43   4
  ESCUELA JOAQUIN EDWARDS BELLO                        256   6
  LICEO BARON B-28                                      14   0
  LICEO COEDUC. LA IGUALDAD                            348   8
  LICEO PEDRO MONTT                                     91   0
  LICEO SANTA TERESA                                    42   3
  LICEO TECNICO DE VALPARAISO                           18   0

Planilla: accidentes escolares 2015-2016 (atenciones en hospital carlos van buren)

hcvb <- read_csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vRGrgk1-whe_2u_G78sdijDJK-8ID9W2hrkpuJ0_iS0MmwR-dpgeY5kH8ENdLVedg1Nn2lO6WADGzOa/pub?gid=786802658&single=true&output=csv")
Parsed with column specification:
cols(
  n = col_integer(),
  `Fecha Atención` = col_character(),
  `Dato Atención Urgencia` = col_integer(),
  Diagnóstico = col_character(),
  `TRAUMA DENTARIO` = col_character(),
  COLEGIOS = col_character(),
  Edad = col_integer(),
  Previsión = col_character(),
  Prestación = col_character()
)
glimpse(hcvb)
Observations: 19,415
Variables: 9
$ n                        <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ `Fecha Atención`         <chr> "09/04/2015", "09/04/2015", "09/04/2015", "30/03/2016", "30/03/2016", "30/03/2016", "30/03/2016", "10/03/2015...
$ `Dato Atención Urgencia` <int> 3762, 3762, 3762, 2660, 2660, 2660, 2660, 3902, 3902, 5252, 5252, 5252, 5252, 5252, 3551, 671, 671, 671, 666,...
$ Diagnóstico              <chr> "CONTUSION Y EROSION 3º DEDO MANO DER.", "CONTUSION Y EROSION 3º DEDO MANO DER.", "CONTUSION Y EROSION 3º DED...
$ `TRAUMA DENTARIO`        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "SI", "SI", "SI", "SI", "SI", "NO", "NO", "NO", "NO", "...
$ COLEGIOS                 <chr> "COLEGIO MIGUEL DE UNAMUNO VALPARAISO", "COLEGIO MIGUEL DE UNAMUNO VALPARAISO", "COLEGIO MIGUEL DE UNAMUNO VA...
$ Edad                     <int> 10, 10, 10, 12, 12, 12, 12, 10, 10, 6, 6, 6, 6, 6, 11, 14, 14, 14, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 12...
$ Previsión                <chr> "D", "D", "D", "D", "D", "D", "D", "A", "A", "B", "B", "B", "B", "B", "A", "A", "A", "A", "C", "C", "C", "C",...
$ Prestación               <chr> "CONS. MEDICA", "RX. MANO", "YESO ANTEBRAQUIAL", "CONS MED", "CONS. INTEGRAL", "RX. RODILLA", "RX. ROTULA", "...

1. Proporción de atenciones por accidentes “odontológicos” comparado con los no odontológicos en el HCVB

table(hcvb$`TRAUMA DENTARIO`)

   NO    SI 
18520   895 

2. Número de atenciones por accidentes odontológicos año 2015 y 2016 comparado por colegio (se puede?)

hcvb <- hcvb %>% 
  mutate( `Fecha Atención` = dmy(`Fecha Atención`) ) #cambio fecha
hcvb <- hcvb %>% 
  mutate(anno = substr(`Fecha Atención`, start = 1, stop = 4)) #agrego columna anno
table(hcvb$`TRAUMA DENTARIO`, hcvb$anno)
    
     2015 2016
  NO 9736 8784
  SI  403  492

3. Determinar distribución por edad y género de las atenciones por accidentes totales

no está variable sexo

4. Determinar distribución por edad y género de las atenciones por accidentes “odontológicos”

table(hcvb$Edad, hcvb$`TRAUMA DENTARIO`)
    
       NO   SI
  6  1314  131
  7  1523  133
  8  1853  178
  9  1886   93
  10 1990  100
  11 2253   76
  12 2258   39
  13 1892   54
  14 1684   14
  15  763   21
  16  420   25
  17  418   19
  18  266   12

5. Promedio de prestaciones recibidas por cada accidente escolar atendido en HCVB

glimpse(hcvb)
Observations: 19,415
Variables: 10
$ n                        <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
$ `Fecha Atención`         <date> 2015-04-09, 2015-04-09, 2015-04-09, 2016-03-30, 2016-03-30, 2016-03-30, 2016-03-30, 2015-03-10, 2015-03-10, ...
$ `Dato Atención Urgencia` <int> 3762, 3762, 3762, 2660, 2660, 2660, 2660, 3902, 3902, 5252, 5252, 5252, 5252, 5252, 3551, 671, 671, 671, 666,...
$ Diagnóstico              <chr> "CONTUSION Y EROSION 3º DEDO MANO DER.", "CONTUSION Y EROSION 3º DEDO MANO DER.", "CONTUSION Y EROSION 3º DED...
$ `TRAUMA DENTARIO`        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "SI", "SI", "SI", "SI", "SI", "NO", "NO", "NO", "NO", "...
$ COLEGIOS                 <chr> "COLEGIO MIGUEL DE UNAMUNO VALPARAISO", "COLEGIO MIGUEL DE UNAMUNO VALPARAISO", "COLEGIO MIGUEL DE UNAMUNO VA...
$ Edad                     <int> 10, 10, 10, 12, 12, 12, 12, 10, 10, 6, 6, 6, 6, 6, 11, 14, 14, 14, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 12...
$ Previsión                <chr> "D", "D", "D", "D", "D", "D", "D", "A", "A", "B", "B", "B", "B", "B", "A", "A", "A", "A", "C", "C", "C", "C",...
$ Prestación               <chr> "CONS. MEDICA", "RX. MANO", "YESO ANTEBRAQUIAL", "CONS MED", "CONS. INTEGRAL", "RX. RODILLA", "RX. ROTULA", "...
$ anno                     <chr> "2015", "2015", "2015", "2016", "2016", "2016", "2016", "2015", "2015", "2015", "2015", "2015", "2015", "2015...

Interesante ver distribución por previsión

table(hcvb$Previsión, hcvb$`TRAUMA DENTARIO`)
                         
                            NO   SI
  a                          1    0
  A                       6010  392
  ARMADA                   247   13
  B                       2731   95
  c                          3    0
  C                       3185  153
  CAPREDENA                 90    0
  D                       3838  154
  DIPRECA                  291    7
  EJERCITO                   6    0
  FAST BANCO ESTADOISAPRE    2    0
  FERROSALUD                 4    0
  I. AETNA                  21    0
  I. BANMEDICA             155   11
  I. COLMENA                70    0
  I. CONSALUD              362   20
  I. CRUZ BLANCA           128    9
  I. ING                     7    0
  I. MAS VIDA              421    4
  I. PROMEPART               4    0
  i. VIDA TRES               1    0
  I. VIDA TRES              93    0
  ISAPRE                    14    0
  ISAPRE BCO. ESTADO         0    4
  NO REGISTRA               44    4
  Particular                 5    0
  PARTICULAR               787   29
hcvb <- hcvb %>% 
  mutate(Prevision2 = case_when(
    Previsión == "a" ~ "A", 
    Previsión == "A" ~ "A", 
    Previsión == "b" ~ "B", 
    Previsión == "B" ~ "B", 
    Previsión == "c" ~ "C", 
    Previsión == "C" ~ "C", 
    Previsión == "d" ~ "D", 
    Previsión == "D" ~ "D", 
    
    Previsión == "ARMADA" ~ "FFAA", 
    Previsión == "CAPREDENA" ~ "FFAA", 
    Previsión == "DIPRECA" ~ "FFAA", 
    Previsión == "EJERCITO" ~ "FFAA", 
    
    Previsión == "I. AETNA" ~ "ISAPRE", 
    Previsión == "I. BANMEDICA" ~ "ISAPRE", 
    Previsión == "I. BANMEDICA" ~ "ISAPRE", 
    Previsión == "I. COLMENA" ~ "ISAPRE", 
    Previsión == "I. CRUZ BLANCA" ~ "ISAPRE", 
    Previsión == "I. ING" ~ "ISAPRE", 
    Previsión == "I. CONSALUD" ~ "ISAPRE", 
    Previsión == "I. MAS VIDA" ~ "ISAPRE", 
    Previsión == "I. PROMEPART" ~ "ISAPRE", 
    Previsión == "i. VIDA TRES" ~ "ISAPRE", 
    Previsión == "I. VIDA TRES" ~ "ISAPRE", 
    Previsión == "ISAPRE" ~ "ISAPRE", 
    
    Previsión == "FAST BANCO ESTADOISAPRE" ~ "PARTICULAR", 
    Previsión == "FERROSALUD" ~ "PARTICULAR", 
    Previsión == "ISAPRE BCO. ESTADO" ~ "PARTICULAR", 
    Previsión == "Particular" ~ "PARTICULAR", 
    Previsión == "PARTICULAR" ~ "PARTICULAR", 
   
    
    TRUE ~ "NO REGISTRA"
  ))
table(hcvb$Prevision2, hcvb$`TRAUMA DENTARIO`)
             
                NO   SI
  A           6011  392
  B           2731   95
  C           3188  153
  D           3838  154
  FFAA         634   20
  ISAPRE      1276   44
  NO REGISTRA   44    4
  PARTICULAR   798   33
mosaicplot(table(hcvb$Prevision2, hcvb$`TRAUMA DENTARIO`), shade = T)

Cruzar ambas bases de datos:

1. Comparar accidentes escolares “odontologicos” y atenciones por accidentes escolares (por colegio)

2. Comparar accidentes escolares “no odontologicos” y atenciones por accidentes escolares (por colegio)

LS0tCnRpdGxlOiAiMjAxOCBQZWRyZWdhbCBUcmF1bWEgQ29sZWdpb3MiCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazogCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBmaWdfY2FwdGlvbjogdHJ1ZQotLS0KVXNvIGRlIHNlZ3VybyBlc2NvbGFyIHBvciB0cmF1bWEgZGVudGFsCgojIFBhcXVldGVzCmBgYHtyIHBhY2thZ2UsIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKYGBgCgojIERhdGFzZXQKYGBge3IgZGF0YXNldCwgaW5jbHVkZT1GQUxTRX0KIyBkZiA8LSByZWFkX2NzdigiaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvZS8yUEFDWC0xdlRXUF96UHc0VDVRQXhLa2xMTXJBa2ZlSU5tLXRQc0xpWmw2empKd2hXYzh4c3lZTmhEczRyT3JIX1BYWFJSdkVZdHU2R3BSc0dEanBpSy9wdWI/Z2lkPTQ2NDk1NjYyNSZzaW5nbGU9dHJ1ZSZvdXRwdXQ9Y3N2IikKCiMgMjBkaWMyMDE3CmRmIDwtIHJlYWRfY3N2KCJodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC9lLzJQQUNYLTF2UkdyZ2sxLXdoZV8ydV9HNzhzZGlqREpLLThJRDlXMmhya3B1SjBfaVMwTW13Ui1kcGdlWTVrSDhFTmRMVmVkZzFObjJsTzZXQURHek9hL3B1Yj9naWQ9MTQxMDc3MTQ0NSZzaW5nbGU9dHJ1ZSZvdXRwdXQ9Y3N2IikKCgpgYGAKIyBEYXRhIGFub25pbWl6YXRpb24KYGBge3IgYW5vbnltaXplLCBpbmNsdWRlPUZBTFNFLCBlY2hvPVRSVUV9CmxpYnJhcnkoYW5vbnltaXplcikKc2V0LnNlZWQoNDYpCmRmJE5PTUJSRSA8LSBhbm9ueW1pemUoZGYkTk9NQlJFLCAuYWxnbyA9ICJjcmMzMiIpCmRmJGAxRVIgQVBFTExJRE9gIDwtIGFub255bWl6ZShkZiRgMUVSIEFQRUxMSURPYCwgLmFsZ28gPSAiY3JjMzIiKQpkZiRgMkRPIEFQRUxMSURPYCA8LSBhbm9ueW1pemUoZGYkYDJETyBBUEVMTElET2AsIC5hbGdvID0gImNyYzMyIikKZGYkUlVUIDwtIGFub255bWl6ZShkZiRSVVQsIC5hbGdvID0gImNyYzMyIikKYGBgCgojIERhdGEgY2xlYW5pbmcgJiB0cmFuc2Zvcm1hdGlvbgoKUHJpbWVybyBpZGVudGlmaWNvIHRyYXVtYXMgZW4gbGEgem9uYSBidWNhbDogCgpCT0NBCkNBUkEKRElFTlRFUwpHT0xQRSBDQVJBCkxFTkdVQQpNQU5ESUJVTEEKTUVOVE9OClBBTEFEQVIKCkNyZW8gdW5hIG51ZXZhIHZhcmlhYmxlIHRyYXVtYU9yYWwKYGBge3IgbmV3VmFyIHRyYXVtYU9yYWwsIGVjaG89VFJVRX0KZGYgPC0gZGYgJT4lIAogIG11dGF0ZShUcmF1bWFPcmFsID0gY2FzZV93aGVuKAogICAgZ3JlcGwoIkJPQ0F8RElFTlRFU3wgTEVOR1VBfE1BTkRJQlVMQXxNRU5UT058UEFMQURBUiIsIGBQQVJURSBERUwgQ1VFUlBPIEFGRUNUQURBYCkgfiAiU0kiLAogICAgVFJVRSB+ICJOTyIKICApKQoKYGBgCgpgYGB7ciBuZXdWYXIgdXNvIHNlZ3VybyBlc2NvbGFyLCBlY2hvPVRSVUV9CmRmIDwtIGRmICU+JSAKICBtdXRhdGUoVXNvU2VndXJvU2lObyA9IGNhc2Vfd2hlbigKICAgIGBVU08gREVMIFNFR1VSTyBFU0NPTEFSYCA9PSAiU0kiIH4gIlNJIiwgCiAgICBUUlVFIH4gIk5PIgogICkpCgpgYGAKCmBgYHtyIG5ld1ZhciBmZWNoYSwgZWNobz1UUlVFfQpkZiA8LSBkZiAlPiUgCiAgbXV0YXRlKCBmZWNoYSA9IGRteShgRkVDSEEgQUNDSURFTlRFYCkgKQpgYGAKCkVsaW1pbmFyIHkgY2FtYmlhciB0b2RvcyBsb3MgIm5vIHJlZ2lzdHJhIiB5ICJOTyBSRUdJU1RSQSIKCmBgYHtyIGNsZWFuIGRmLCBlY2hvPVRSVUV9CgpkZiA8LSBkcGx5cjo6bXV0YXRlX2lmKHRpYmJsZTo6YXNfdGliYmxlKGRmKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMuY2hhcmFjdGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdyOjpzdHJfcmVwbGFjZV9hbGwsIHBhdHRlcm4gPSAibm8gcmVnaXN0cmEiLCByZXBsYWNlbWVudCA9ICJOQSIpCgpkZiA8LSBkcGx5cjo6bXV0YXRlX2lmKHRpYmJsZTo6YXNfdGliYmxlKGRmKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMuY2hhcmFjdGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdyOjpzdHJfcmVwbGFjZV9hbGwsIHBhdHRlcm4gPSAiTk8gUkVHSVNUUkEiLCByZXBsYWNlbWVudCA9ICJOQSIpCgpkZiA8LSBkcGx5cjo6bXV0YXRlX2lmKHRpYmJsZTo6YXNfdGliYmxlKGRmKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMuY2hhcmFjdGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdyOjpzdHJfcmVwbGFjZV9hbGwsIHBhdHRlcm4gPSAiTk8gU0UgUkVHSVNUUkEiLCByZXBsYWNlbWVudCA9ICJOQSIpCgpgYGAKClNhdmUgY3VycmVudCBkYXRhc2V0IGNsZWFuLCBqdXN0IGluIGNhc2UKYGBge3Igc2F2ZSBkZn0Kd3JpdGUuY3N2KGRmLCBmaWxlID0gImRmLmNzdiIpCmBgYAoKCgoKIyBQcmVndW50YXMKClBsYW5pbGxhOiBmb3JtdWxhcmlvcyBhY2NpZGVudGVzIGVzY29sYXJlcyAoYWNjaWRlbnRlcyBlc2NvbGFyZXMgZW4gY29sZWdpb3MpCgojIyAgICAxLiBUYXNhIGRlIHVzbyBkZWwgc2VndXJvIGVzY29sYXIKCmBgYHtyIHVzbyBzZWd1cm99CnRhYmxlKGRmJFVzb1NlZ3Vyb1NpTm8pCmBgYAoKCiMjICAgIDIuIE7Dum1lcm8gZGUgYWNjaWRlbnRlcyBvZG9udG9sw7NnaWNvcyBhw7FvIDIwMTUgeSAyMDE2IHBvciBjb2xlZ2lvIChzZSBwdWVkZT8pCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpkZiA8LSBkZiAlPiUgCiAgbXV0YXRlKGFubm8gPSBzdWJzdHIoZmVjaGEsIHN0YXJ0ID0gMSwgc3RvcCA9IDQpKQpgYGAKCmBgYHtyfQp0YWJsZShkZiRhbm5vLCBkZiRUcmF1bWFPcmFsKQpgYGAKCgoKIyMgICAgMy4gUHJvcG9yY2nDs24gZGUgYWNjaWRlbnRlcyDigJxvZG9udG9sw7NnaWNvc+KAnSBjb21wYXJhZG8gY29uIGxvcyBubyBvZG9udG9sw7NnaWNvcwoKYGBge3J9CnRhYmxlKGRmJFRyYXVtYU9yYWwpCmBgYAoKIyMgICAgNC4gUHJvcG9yY2nDs24gZGUgYWNjaWRlbnRlcyDigJxvZG9udG9sw7NnaWNvc+KAnSBxdWUgcmVnaXN0cmFuIGF0ZW5jacOzbiBlbiBob3NwaXRhbCBDYXJsb3MgVmFuIEJ1cmVuCgpgYGB7cn0KdGFibGUoZGYkVHJhdW1hT3JhbCwgZGYkYExVR0FSIERFIEFURU5DSU9OYCkKYGBgCgojIyAgICA1LiBEZXRlcm1pbmFyIGRpc3RyaWJ1Y2nDs24gcG9yIGVkYWQgeSBnw6luZXJvIGRlIGxvcyBhY2NpZGVudGVzIHRvdGFsZXMKCmBgYHtyfQp0YWJsZShkZiRUcmF1bWFPcmFsLCBkZiRTRVhPKQpgYGAKCmBgYHtyfQp0YWJsZShkZiRFZGFkLCBkZiRUcmF1bWFPcmFsKQpgYGAKCgojIyAgICA2LiBEZXRlcm1pbmFyIGRpc3RyaWJ1Y2nDs24gcG9yIGVkYWQgeSBnw6luZXJvIGRlIGxvcyBhY2NpZGVudGVzIOKAnG9kb250b2zDs2dpY29z4oCdCgpgYGB7cn0KZGYgJT4lIAogIGZpbHRlcihUcmF1bWFPcmFsID09ICJTSSIpICU+JSAKICBzZWxlY3QoRWRhZCwgU0VYTywgVHJhdW1hT3JhbCkgJT4lIAogIGdyb3VwX2J5KFNFWE8sIEVkYWQpICU+JSAKICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIAogIHNwcmVhZChrZXkgPSBTRVhPLCB2YWx1ZSA9IG4pCmBgYAoKIyMgICAgNy4gRGV0ZXJtaW5hciBkaXN0cmlidWNpw7NuIHBvciBjb2xlZ2lvcyBkZSBsb3MgYWNjaWRlbnRlcyB0b3RhbGVzCgpgYGB7cn0KdGFibGUoZGYkQ29sZWdpbywgZGYkVHJhdW1hT3JhbCkKYGBgCgoKCiMgUGxhbmlsbGE6IGFjY2lkZW50ZXMgZXNjb2xhcmVzIDIwMTUtMjAxNiAoYXRlbmNpb25lcyBlbiBob3NwaXRhbCBjYXJsb3MgdmFuIGJ1cmVuKQoKYGBge3J9CmhjdmIgPC0gcmVhZF9jc3YoImh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kL2UvMlBBQ1gtMXZSR3JnazEtd2hlXzJ1X0c3OHNkaWpESkstOElEOVcyaHJrcHVKMF9pUzBNbXdSLWRwZ2VZNWtIOEVOZExWZWRnMU5uMmxPNldBREd6T2EvcHViP2dpZD03ODY4MDI2NTgmc2luZ2xlPXRydWUmb3V0cHV0PWNzdiIpCmBgYAoKYGBge3J9CmdsaW1wc2UoaGN2YikKYGBgCgoKIyMgICAgMS4gUHJvcG9yY2nDs24gZGUgYXRlbmNpb25lcyBwb3IgYWNjaWRlbnRlcyDigJxvZG9udG9sw7NnaWNvc+KAnSBjb21wYXJhZG8gY29uIGxvcyBubyBvZG9udG9sw7NnaWNvcyBlbiBlbCBIQ1ZCCmBgYHtyfQp0YWJsZShoY3ZiJGBUUkFVTUEgREVOVEFSSU9gKQpgYGAKCiMjICAgIDIuIE7Dum1lcm8gZGUgYXRlbmNpb25lcyBwb3IgYWNjaWRlbnRlcyBvZG9udG9sw7NnaWNvcyBhw7FvIDIwMTUgeSAyMDE2IGNvbXBhcmFkbyBwb3IgY29sZWdpbyAoc2UgcHVlZGU/KQoKYGBge3J9CmhjdmIgPC0gaGN2YiAlPiUgCiAgbXV0YXRlKCBgRmVjaGEgQXRlbmNpw7NuYCA9IGRteShgRmVjaGEgQXRlbmNpw7NuYCkgKSAjY2FtYmlvIGZlY2hhCgoKCmhjdmIgPC0gaGN2YiAlPiUgCiAgbXV0YXRlKGFubm8gPSBzdWJzdHIoYEZlY2hhIEF0ZW5jacOzbmAsIHN0YXJ0ID0gMSwgc3RvcCA9IDQpKSAjYWdyZWdvIGNvbHVtbmEgYW5ubwoKYGBgCgpgYGB7cn0KdGFibGUoaGN2YiRgVFJBVU1BIERFTlRBUklPYCwgaGN2YiRhbm5vKQpgYGAKCgojIyAgICAzLiBEZXRlcm1pbmFyIGRpc3RyaWJ1Y2nDs24gcG9yIGVkYWQgeSBnw6luZXJvIGRlIGxhcyBhdGVuY2lvbmVzIHBvciBhY2NpZGVudGVzIHRvdGFsZXMKCm5vIGVzdMOhIHZhcmlhYmxlIHNleG8KCiMjICAgIDQuIERldGVybWluYXIgZGlzdHJpYnVjacOzbiBwb3IgZWRhZCB5IGfDqW5lcm8gZGUgbGFzIGF0ZW5jaW9uZXMgcG9yIGFjY2lkZW50ZXMg4oCcb2RvbnRvbMOzZ2ljb3PigJ0KCmBgYHtyfQp0YWJsZShoY3ZiJEVkYWQsIGhjdmIkYFRSQVVNQSBERU5UQVJJT2ApCmBgYAoKIyMgICAgNS4gUHJvbWVkaW8gZGUgcHJlc3RhY2lvbmVzIHJlY2liaWRhcyBwb3IgY2FkYSBhY2NpZGVudGUgZXNjb2xhciBhdGVuZGlkbyBlbiBIQ1ZCCgpgYGB7cn0KZ2xpbXBzZShoY3ZiKQpgYGAKCiMjIEludGVyZXNhbnRlIHZlciBkaXN0cmlidWNpw7NuIHBvciBwcmV2aXNpw7NuCgpgYGB7cn0KdGFibGUoaGN2YiRQcmV2aXNpw7NuLCBoY3ZiJGBUUkFVTUEgREVOVEFSSU9gKQpgYGAKCgpgYGB7cn0KaGN2YiA8LSBoY3ZiICU+JSAKICBtdXRhdGUoUHJldmlzaW9uMiA9IGNhc2Vfd2hlbigKICAgIFByZXZpc2nDs24gPT0gImEiIH4gIkEiLCAKICAgIFByZXZpc2nDs24gPT0gIkEiIH4gIkEiLCAKICAgIFByZXZpc2nDs24gPT0gImIiIH4gIkIiLCAKICAgIFByZXZpc2nDs24gPT0gIkIiIH4gIkIiLCAKICAgIFByZXZpc2nDs24gPT0gImMiIH4gIkMiLCAKICAgIFByZXZpc2nDs24gPT0gIkMiIH4gIkMiLCAKICAgIFByZXZpc2nDs24gPT0gImQiIH4gIkQiLCAKICAgIFByZXZpc2nDs24gPT0gIkQiIH4gIkQiLCAKICAgIAogICAgUHJldmlzacOzbiA9PSAiQVJNQURBIiB+ICJGRkFBIiwgCiAgICBQcmV2aXNpw7NuID09ICJDQVBSRURFTkEiIH4gIkZGQUEiLCAKICAgIFByZXZpc2nDs24gPT0gIkRJUFJFQ0EiIH4gIkZGQUEiLCAKICAgIFByZXZpc2nDs24gPT0gIkVKRVJDSVRPIiB+ICJGRkFBIiwgCiAgICAKICAgIFByZXZpc2nDs24gPT0gIkkuIEFFVE5BIiB+ICJJU0FQUkUiLCAKICAgIFByZXZpc2nDs24gPT0gIkkuIEJBTk1FRElDQSIgfiAiSVNBUFJFIiwgCiAgICBQcmV2aXNpw7NuID09ICJJLiBCQU5NRURJQ0EiIH4gIklTQVBSRSIsIAogICAgUHJldmlzacOzbiA9PSAiSS4gQ09MTUVOQSIgfiAiSVNBUFJFIiwgCiAgICBQcmV2aXNpw7NuID09ICJJLiBDUlVaIEJMQU5DQSIgfiAiSVNBUFJFIiwgCiAgICBQcmV2aXNpw7NuID09ICJJLiBJTkciIH4gIklTQVBSRSIsIAogICAgUHJldmlzacOzbiA9PSAiSS4gQ09OU0FMVUQiIH4gIklTQVBSRSIsIAogICAgUHJldmlzacOzbiA9PSAiSS4gTUFTIFZJREEiIH4gIklTQVBSRSIsIAogICAgUHJldmlzacOzbiA9PSAiSS4gUFJPTUVQQVJUIiB+ICJJU0FQUkUiLCAKICAgIFByZXZpc2nDs24gPT0gImkuIFZJREEgVFJFUyIgfiAiSVNBUFJFIiwgCiAgICBQcmV2aXNpw7NuID09ICJJLiBWSURBIFRSRVMiIH4gIklTQVBSRSIsIAogICAgUHJldmlzacOzbiA9PSAiSVNBUFJFIiB+ICJJU0FQUkUiLCAKICAgIAogICAgUHJldmlzacOzbiA9PSAiRkFTVCBCQU5DTyBFU1RBRE9JU0FQUkUiIH4gIlBBUlRJQ1VMQVIiLCAKICAgIFByZXZpc2nDs24gPT0gIkZFUlJPU0FMVUQiIH4gIlBBUlRJQ1VMQVIiLCAKICAgIFByZXZpc2nDs24gPT0gIklTQVBSRSBCQ08uIEVTVEFETyIgfiAiUEFSVElDVUxBUiIsIAogICAgUHJldmlzacOzbiA9PSAiUGFydGljdWxhciIgfiAiUEFSVElDVUxBUiIsIAogICAgUHJldmlzacOzbiA9PSAiUEFSVElDVUxBUiIgfiAiUEFSVElDVUxBUiIsIAogICAKICAgIAogICAgVFJVRSB+ICJOTyBSRUdJU1RSQSIKICApKQpgYGAKCmBgYHtyfQp0YWJsZShoY3ZiJFByZXZpc2lvbjIsIGhjdmIkYFRSQVVNQSBERU5UQVJJT2ApCmBgYAoKYGBge3J9Cm1vc2FpY3Bsb3QodGFibGUoaGN2YiRQcmV2aXNpb24yLCBoY3ZiJGBUUkFVTUEgREVOVEFSSU9gKSwgc2hhZGUgPSBUKQpgYGAKCiMgQ3J1emFyIGFtYmFzIGJhc2VzIGRlIGRhdG9zOgojIyAgICAxLiBDb21wYXJhciBhY2NpZGVudGVzIGVzY29sYXJlcyDigJxvZG9udG9sb2dpY29z4oCdIHkgYXRlbmNpb25lcyBwb3IgYWNjaWRlbnRlcyBlc2NvbGFyZXMgKHBvciBjb2xlZ2lvKSAKIyMgICAgMi4gIENvbXBhcmFyIGFjY2lkZW50ZXMgZXNjb2xhcmVzIOKAnG5vIG9kb250b2xvZ2ljb3PigJ0geSBhdGVuY2lvbmVzIHBvciBhY2NpZGVudGVzIGVzY29sYXJlcyAocG9yIGNvbGVnaW8pIAogICAgCg==