Noriega-Gallardo V, Uribe SE

Paquetes

library("irr") #kappa2
Loading required package: lpSolve

Dataset

acuerdo <- read.csv("cansancio uss.csv", header = T, sep = "\t", encoding = "UTF-8")
acuerdo <- acuerdo %>% 
        filter(etapa == "acuerdo")

acuerdo$Aciertos <- NULL
acuerdo$Errores <- NULL

Estadística descriptiva

Observadores

13 observadores

table(acuerdo$nombre, acuerdo$horario)

Clasifico como cansados o alertas

Divido en dos, Alerta = 1+2+3 y Cansado = 4+5+6+7 Esto debido al gráfico anterior


acuerdo$estado2[acuerdo$estado_cansancio=="1. Completamente alerta. Muy despierto y atento."] <- "alerta"
acuerdo$estado2[acuerdo$estado_cansancio=="2. Alerta. Receptivo pero no al peak."] <- "alerta"
acuerdo$estado2[acuerdo$estado_cansancio=="3. Bien. fresco"] <- "alerta"
acuerdo$estado2[acuerdo$estado_cansancio=="4. Un poco cansado. Menos que fresco."] <- "cansado"
acuerdo$estado2[acuerdo$estado_cansancio=="5. Cansancio moderado. Poco alerta"] <- "cansado"
acuerdo$estado2[acuerdo$estado_cansancio=="6. Cansado. Dificil concentracion."] <- "cansado"
acuerdo$estado2[acuerdo$estado_cansancio=="7. Exhausto. Imposible funcionar eficientemente."] <- "cansado"

acuerdo$estado2 <- as.factor(acuerdo$estado2)

¿Cómo estaban en cada sesión?

Edad

Sexo y edad

Sexo y especialidad

table(acuerdo$sexo, acuerdo$tipo.segun.animal)/4
        
         alondra  buho colibri
  Hombre        1    1       3
  Mujer         4    0       4
chisq.test(table(acuerdo$sexo, acuerdo$tipo.segun.animal)/4)
Chi-squared approximation may be incorrect

    Pearson's Chi-squared test

data:  table(acuerdo$sexo, acuerdo$tipo.segun.animal)/4
X-squared = 2.3771, df = 2, p-value = 0.3047

No hay diferencias significativas en la distribución por sexo y tipo circadiano

Acuerdo diagnóstico

hay NA?

sum(is.na(acuerdo$estado2))
[1] 0

¿Cómo estaban por sesión?

acuerdo %>% 
        group_by(estado_cansancio) %>% 
        summarise( AM =sum(horario == "AM"), PM = sum(horario == "PM") ) %>% 
        ungroup()

En general, ¿afecta el estado de cansancio el acuerdo diagnóstico?

Preparo los datos, tengo que rotar el df

str(acuerdo)
acuerdot <-  setNames(data.frame(t(acuerdo[,-1])), acuerdo[,1])
write.csv(acuerdot, "acuerdot.csv")
str(acuerdot)

Para kappa

Aplico LO, convierto acuerdot en parakappa

str(parakappa)
'data.frame':   25 obs. of  54 variables:
 $ X                                                                   : Factor w/ 25 levels "Radiografia.n.1",..: 1 12 19 20 21 22 23 24 25 2 ...
 $ Carla.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado   : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 2 1 1 1 3 3 3 3 ...
 $ VG.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta        : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 2 1 1 3 3 3 3 3 ...
 $ XV.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta        : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 2 1 2 3 3 3 3 ...
 $ XS.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 2 1 3 2 3 3 3 2 ...
 $ CP.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 1 1 1 3 2 3 3 ...
 $ MF.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 2 1 1 2 2 2 3 ...
 $ XV.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta        : Factor w/ 3 levels "1. No presenta Caries",..: 2 2 2 3 2 3 2 3 3 3 ...
 $ Carla.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado   : Factor w/ 3 levels "1. No presenta Caries",..: 2 2 1 3 1 1 1 3 3 3 ...
 $ CP.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 2 2 1 3 2 1 2 3 3 3 ...
 $ VG.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_cansado       : Factor w/ 3 levels "1. No presenta Caries",..: 2 2 1 3 3 1 1 3 3 3 ...
 $ XS.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 3 3 2 3 2 1 2 3 3 3 ...
 $ MF.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 2 2 1 3 1 1 1 3 3 3 ...
 $ Carla.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta    : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 1 1 1 3 3 3 2 ...
 $ VG.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta        : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 2 1 1 3 3 2 2 ...
 $ CP.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 1 1 2 3 3 3 2 ...
 $ XS.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 1 2 2 3 2 3 2 ...
 $ XV.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta        : Factor w/ 3 levels "1. No presenta Caries",..: 3 3 2 1 2 2 3 3 3 2 ...
 $ MF.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 1 1 2 3 3 3 2 ...
 $ Carla.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado   : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 2 1 1 2 3 2 3 1 ...
 $ CP.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 1 1 2 2 1 3 2 2 3 1 ...
 $ XS.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 2 3 2 3 3 3 3 1 ...
 $ VG.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado       : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 2 2 1 3 3 2 3 1 ...
 $ XV.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado       : Factor w/ 3 levels "1. No presenta Caries",..: 1 1 2 2 1 2 3 2 3 2 ...
 $ MF.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 2 2 1 3 3 2 3 1 ...
 $ IG..Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_alerta      : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 1 1 1 3 3 3 2 ...
 $ MZ.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta        : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 2 1 2 2 2 2 2 ...
 $ Paulina.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta  : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 1 2 2 3 2 3 2 ...
 $ Ricardo..Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_alondra..Estado_alerta: Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 1 1 1 2 2 2 2 ...
 $ AO.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 1 1 1 2 2 2 3 ...
 $ CSF.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_buho.Estado_alerta         : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 2 1 2 3 2 2 3 ...
 $ Daniela.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado  : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 2 1 1 2 2 3 2 ...
 $ IG..Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado     : Factor w/ 3 levels "1. No presenta Caries",..: 2 1 1 2 1 1 1 3 3 3 ...
 $ Ricardo..Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_alondra..Estado_alerta: Factor w/ 2 levels "1. No presenta Caries",..: 1 1 1 2 1 1 1 1 2 2 ...
 $ AO.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 1 1 1 3 1 1 1 2 3 3 ...
 $ MZ.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_cansado       : Factor w/ 3 levels "1. No presenta Caries",..: 2 1 1 2 1 2 1 1 2 3 ...
 $ Paulina.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado : Factor w/ 3 levels "1. No presenta Caries",..: 2 2 1 2 1 1 2 2 3 3 ...
 $ CSF.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_buho.Estado_cansado        : Factor w/ 3 levels "1. No presenta Caries",..: 1 1 1 3 1 1 2 3 3 3 ...
 $ Daniela.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta   : Factor w/ 3 levels "1. No presenta Caries",..: 2 2 1 3 2 1 1 2 3 3 ...
 $ IG..Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta      : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 1 1 1 3 2 2 1 ...
 $ CSF.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_buho.Estado_alerta         : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 2 2 2 3 3 3 1 ...
 $ Paulina.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado : Factor w/ 3 levels "1. No presenta Caries",..: 3 2 1 2 1 1 3 2 1 1 ...
 $ Daniela.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta   : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 1 2 2 1 3 2 2 2 ...
 $ AO.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta       : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 1 1 1 3 2 1 1 ...
 $ Ricardo..Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_alondra..Estado_alerta: Factor w/ 3 levels "1. No presenta Caries",..: 2 2 1 2 1 1 3 2 2 1 ...
 $ MZ.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta        : Factor w/ 3 levels "1. No presenta Caries",..: 3 1 1 1 1 1 3 2 2 1 ...
 $ IG..Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado     : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 1 1 1 3 3 2 3 1 ...
 $ Daniela.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta   : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 1 1 1 2 2 2 2 1 ...
 $ Paulina.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado : Factor w/ 3 levels "1. No presenta Caries",..: 1 1 2 1 2 3 3 3 2 2 ...
 $ AO.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado      : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 1 1 1 1 2 1 2 1 ...
 $ Ricardo..Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_alondra..Estado_alerta: Factor w/ 3 levels "1. No presenta Caries",..: 1 1 2 2 3 2 2 2 2 2 ...
 $ CSF.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_buho.Estado_alerta         : Factor w/ 3 levels "1. No presenta Caries",..: 1 2 2 1 1 3 3 2 2 1 ...
 $ MZ.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado       : Factor w/ 3 levels "1. No presenta Caries",..: 1 1 1 1 1 2 2 1 2 1 ...
 $ Momento_.GrupoRx_.Sexo_.Tipo_.Estado_                               : logi  NA NA NA NA NA NA ...
colnames(parakappa) #veo los nombres de las columnas. Se deben comparar iguales nombres, iguales RX, distintos momentos, distintos estado2
 [1] "X"                                                                   
 [2] "Carla.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado"   
 [3] "VG.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta"        
 [4] "XV.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta"        
 [5] "XS.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta"       
 [6] "CP.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta"       
 [7] "MF.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_alerta"       
 [8] "XV.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta"        
 [9] "Carla.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado"   
[10] "CP.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado"      
[11] "VG.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_cansado"       
[12] "XS.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado"      
[13] "MF.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado"      
[14] "Carla.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta"    
[15] "VG.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta"        
[16] "CP.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta"       
[17] "XS.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta"       
[18] "XV.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta"        
[19] "MF.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta"       
[20] "Carla.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado"   
[21] "CP.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta"       
[22] "XS.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado"      
[23] "VG.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado"       
[24] "XV.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado"       
[25] "MF.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado"      
[26] "IG..Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_alerta"      
[27] "MZ.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta"        
[28] "Paulina.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta"  
[29] "Ricardo..Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_alondra..Estado_alerta"
[30] "AO.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado"      
[31] "CSF.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_buho.Estado_alerta"         
[32] "Daniela.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado"  
[33] "IG..Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado"     
[34] "Ricardo..Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_alondra..Estado_alerta"
[35] "AO.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado"      
[36] "MZ.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_cansado"       
[37] "Paulina.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado" 
[38] "CSF.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_buho.Estado_cansado"        
[39] "Daniela.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta"   
[40] "IG..Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta"      
[41] "CSF.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_buho.Estado_alerta"         
[42] "Paulina.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado" 
[43] "Daniela.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta"   
[44] "AO.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta"       
[45] "Ricardo..Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_alondra..Estado_alerta"
[46] "MZ.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta"        
[47] "IG..Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado"     
[48] "Daniela.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta"   
[49] "Paulina.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado" 
[50] "AO.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado"      
[51] "Ricardo..Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_alondra..Estado_alerta"
[52] "CSF.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_buho.Estado_alerta"         
[53] "MZ.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado"       
[54] "Momento_.GrupoRx_.Sexo_.Tipo_.Estado_"                               

Kappas

Con cambio alerta-cansado

AO

kappa2(AO, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.173 

        z = -1 
  p-value = 0.316 
kappam.fleiss(AO,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = -0.0516 

        z = -0.341 
  p-value = 0.733 

                       Kappa      z p.value
1. No presenta Caries -0.143 -0.717   0.473
2. Caries de Esmalte   0.242  1.212   0.225
3. Caries en Dentina  -0.163 -0.814   0.416

Carla

kappam.fleiss(Carla,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = 0.232 

        z = 1.61 
  p-value = 0.108 

                      Kappa     z p.value
1. No presenta Caries 0.280 1.400   0.162
2. Caries de Esmalte  0.342 1.711   0.087
3. Caries en Dentina  0.064 0.322   0.747

CP

kappa2(CP, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = 0.125 

        z = 0.637 
  p-value = 0.524 
kappam.fleiss(CP,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = 0.16 

        z = 1.13 
  p-value = 0.259 

                      Kappa     z p.value
1. No presenta Caries 0.198 0.989   0.323
2. Caries de Esmalte  0.198 0.989   0.323
3. Caries en Dentina  0.081 0.404   0.686

CSF

CSF <- parakappa %>% 
        select(CSF.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_buho.Estado_cansado, 
               CSF.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_buho.Estado_alerta)
kappa2(CP, "squared")
kappam.fleiss(CSF,  detail  = T)

Daniela

Daniela <- parakappa %>% 
        select(Daniela.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado, 
               Daniela.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta)
kappa2(Daniela, "squared")
kappam.fleiss(Daniela,  detail  = T)

IG 1

IG1 <- parakappa %>% 
        select(IG..Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_alerta, 
               IG..Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado)
kappa2(IG1, "squared")
kappam.fleiss(IG1,  detail  = T)

IG 2

IG2 <- parakappa %>% 
        select(IG..Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado, 
               IG..Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta)
kappa2(IG2, "squared")
kappam.fleiss(IG2,  detail  = T)

MF1

MF1 <- parakappa %>% 
        select(MF.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_alerta,
               MF.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado)
kappa2(MF1, "squared")
kappam.fleiss(MF1,  detail  = T)

MF2

MF2 <- parakappa %>% 
        select(MF.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado, 
               MF.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta)
kappa2(MF2, "squared")
kappam.fleiss(MF2,  detail  = T)

MZ1

MZ1 <- parakappa %>% 
        select(MZ.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta, 
               MZ.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado)
kappa2(MZ1, "squared")
kappam.fleiss(MZ1,  detail  = T)

MZ2

MZ2 <- parakappa %>% 
        select(MZ.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_cansado, 
               MZ.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta)
kappa2(MZ2, "squared")
kappam.fleiss(MZ2,  detail  = T)

Paulina

Paulina <- parakappa %>% 
        select(Paulina.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta, 
               Paulina.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado)
kappa2(Paulina, "squared")
kappam.fleiss(Paulina,  detail  = T)

VG1

VG1 <- parakappa %>% 
        select(VG.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta, 
               VG.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado)
kappa2(VG1, "squared")
kappam.fleiss(VG1,  detail  = T)

VG2

VG2 <- parakappa %>% 
        select(VG.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_cansado, 
               VG.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta)
kappa2(VG2, "squared")
kappam.fleiss(VG2,  detail  = T)

XS1

XS1 <- parakappa %>% 
        select(XS.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta, 
               XS.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado)
kappa2(XS1, "squared")
kappam.fleiss(XS1,  detail  = T)

XS2

XS2 <- parakappa %>% 
        select(XS.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado, 
               XS.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta)
kappa2(XS2, "squared")
kappam.fleiss(XS2,  detail  = T)

XV

kappa2(XV, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = 0.217 

        z = 1.09 
  p-value = 0.276 
kappam.fleiss(XV,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = 0.188 

        z = 1.29 
  p-value = 0.198 

                      Kappa     z p.value
1. No presenta Caries 0.000 0.000   1.000
2. Caries de Esmalte  0.167 0.833   0.405
3. Caries en Dentina  0.333 1.667   0.096

Cansados

AO Cansado

kappa2(AO_cansado, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.241 

        z = -1.22 
  p-value = 0.223 
kappam.fleiss(AO_cansado,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = 0.0137 

        z = 0.0864 
  p-value = 0.931 

                       Kappa      z p.value
1. No presenta Caries -0.104 -0.518   0.605
2. Caries de Esmalte   0.206  1.032   0.302
3. Caries en Dentina  -0.111 -0.556   0.579

Carla Cansado

kappa2(Carla_cansado, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.0375 

        z = -0.195 
  p-value = 0.846 
kappam.fleiss(Carla_cansado,  detail  = T)

Paulina Cansado

Paulina_cansado <- parakappa %>% 
        select(Paulina.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado, 
               Paulina.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado)
kappa2(Paulina_cansado, "squared")
kappam.fleiss(Paulina_cansado,  detail  = T)

Alertas

CP Alerta

kappa2(CP_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.162 

        z = -0.819 
  p-value = 0.413 
kappam.fleiss(CP_alerta,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = -0.11 

        z = -0.768 
  p-value = 0.443 

                       Kappa      z p.value
1. No presenta Caries -0.299 -1.494   0.135
2. Caries de Esmalte  -0.048 -0.238   0.812
3. Caries en Dentina   0.064  0.322   0.747

CSF Alerta

kappa2(CSF_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.243 

        z = -1.23 
  p-value = 0.22 
kappam.fleiss(CSF_alerta,  detail  = T)

Daniela Alerta

kappa2(Daniela_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.111 

        z = -0.58 
  p-value = 0.562 
kappam.fleiss(Daniela_alerta,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = -0.0512 

        z = -0.336 
  p-value = 0.737 

                       Kappa      z p.value
1. No presenta Caries -0.047 -0.233   0.815
2. Caries de Esmalte   0.000  0.000   1.000
3. Caries en Dentina  -0.163 -0.814   0.416

Ricardo Alerta 1

Ricardo_alerta1 <- parakappa %>% 
        select(Ricardo..Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_alondra..Estado_alerta, 
               Ricardo..Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_alondra..Estado_alerta)
kappa2(Ricardo_alerta1, "squared")
kappam.fleiss(Ricardo_alerta1,  detail  = T)

Ricardo Alerta 2

kappa2(Ricardo_alerta2, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.181 

        z = -0.907 
  p-value = 0.364 
kappam.fleiss(Ricardo_alerta2,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = -0.122 

        z = -0.686 
  p-value = 0.493 

                        Kappa      z p.value
1. No presenta Caries  -0.104 -0.518   0.605
1. No presenta Caries. -0.020 -0.102   0.919
2. Caries de Esmalte   -0.159 -0.793   0.428
3. Caries en Dentina   -0.020 -0.102   0.919

XV Alerta

kappa2(XV_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 25 
   Raters = 2 
    Kappa = -0.0703 

        z = -0.354 
  p-value = 0.723 
kappam.fleiss(XV_alerta,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 25 
   Raters = 2 
    Kappa = -0.0309 

        z = -0.206 
  p-value = 0.837 

                       Kappa      z p.value
1. No presenta Caries  0.107  0.536   0.592
2. Caries de Esmalte   0.000  0.000   1.000
3. Caries en Dentina  -0.136 -0.682   0.495

Cita paquetes

citation(package = "dplyr", lib.loc = NULL)

To cite package ‘dplyr’ in publications use:

  Hadley Wickham and Romain Francois (2015). dplyr: A Grammar of Data Manipulation. R package version 0.4.3.
  https://CRAN.R-project.org/package=dplyr

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {dplyr: A Grammar of Data Manipulation},
    author = {Hadley Wickham and Romain Francois},
    year = {2015},
    note = {R package version 0.4.3},
    url = {https://CRAN.R-project.org/package=dplyr},
  }
citation(package = "tidyr", lib.loc = NULL)

To cite package ‘tidyr’ in publications use:

  Hadley Wickham (2016). tidyr: Easily Tidy Data with `spread()` and `gather()` Functions. R package version 0.6.0.
  https://CRAN.R-project.org/package=tidyr

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {tidyr: Easily Tidy Data with `spread()` and `gather()` Functions},
    author = {Hadley Wickham},
    year = {2016},
    note = {R package version 0.6.0},
    url = {https://CRAN.R-project.org/package=tidyr},
  }
citation(package = "irr", lib.loc = NULL)

To cite package ‘irr’ in publications use:

  Matthias Gamer, Jim Lemon and Ian Fellows Puspendra Singh <puspendra.pusp22@gmail.com> (2012). irr: Various
  Coefficients of Interrater Reliability and Agreement. R package version 0.84.
  https://CRAN.R-project.org/package=irr

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {irr: Various Coefficients of Interrater Reliability and Agreement},
    author = {Matthias Gamer and Jim Lemon and Ian Fellows Puspendra Singh <puspendra.pusp22@gmail.com>},
    year = {2012},
    note = {R package version 0.84},
    url = {https://CRAN.R-project.org/package=irr},
  }

ATTENTION: This citation information has been auto-generated from the package DESCRIPTION file and may need manual
editing, see ‘help("citation")’.
LS0tCnRpdGxlOiBFZmVjdG8gZGVsIGNhbnNhbmNpbyBlbiBlbCBhY3VlcmRvIGRpYWduw7NzdGljbyBkZSBvYnNlcnZhZG9yZXMgZXZhbHVhbmRvIHJhZGlvZ3JhZsOtYXMKICBiaXRld2luZyBwcm94aW1hbGVzCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0Ci0tLQoKTm9yaWVnYS1HYWxsYXJkbyBWLCBVcmliZSBTRQoKCiMgUGFxdWV0ZXMKYGBge3IgUGFxdWV0ZXN9CmxpYnJhcnkoImRwbHlyIikKbGlicmFyeSgidGlkeXIiKQpsaWJyYXJ5KCJpcnIiKSAja2FwcGEyCgoKYGBgCgoKIyBEYXRhc2V0CmBgYHtyIE1haW4gZGF0YXNldH0KYWN1ZXJkbyA8LSByZWFkLmNzdigiY2Fuc2FuY2lvIHVzcy5jc3YiLCBoZWFkZXIgPSBULCBzZXAgPSAiXHQiLCBlbmNvZGluZyA9ICJVVEYtOCIpCmFjdWVyZG8gPC0gYWN1ZXJkbyAlPiUgCiAgICAgICAgZmlsdGVyKGV0YXBhID09ICJhY3VlcmRvIikKCmFjdWVyZG8kQWNpZXJ0b3MgPC0gTlVMTAphY3VlcmRvJEVycm9yZXMgPC0gTlVMTAoKYGBgCgojIEVzdGFkw61zdGljYSBkZXNjcmlwdGl2YQojIyBPYnNlcnZhZG9yZXMKMTMgb2JzZXJ2YWRvcmVzCmBgYHtyIMK/Q3XDoW50YXMgdmVjZXMgdmnDsyBjYWRhIG9ic2VydmFkb3IgbGFzIHJ4cz99CnRhYmxlKGFjdWVyZG8kbm9tYnJlLCBhY3VlcmRvJGhvcmFyaW8pCmBgYAoKIyMgQ2xhc2lmaWNvIGNvbW8gY2Fuc2Fkb3MgbyBhbGVydGFzCgpgYGB7ciBNb3NhaWNvIGRlIGNhbnNhbmNpb30KbW9zYWljcGxvdChhY3VlcmRvJGVzdGFkb19jYW5zYW5jaW9+YWN1ZXJkbyRob3JhcmlvLCBzaGFkZT1ULCAKICAgICAgICAgICBtYWluID0gIkVzdGFkbyBkZSBhbGVydGEgc2Vnw7puIGhvcmFyaW8iLCB5bGFiID0gIkhvcmFyaW8iLCB4bGFiID0gIkVzdGFkbyBkZSBhbGVydGEiKQpgYGAKCgpEaXZpZG8gZW4gZG9zLCBBbGVydGEgPSAxKzIrMyB5IENhbnNhZG8gPSA0KzUrNis3CkVzdG8gZGViaWRvIGFsIGdyw6FmaWNvIGFudGVyaW9yCgpgYGB7ciByZWNvZGlmaWNvIHRvZG8gYSBhbGVydGEgbyBjYW5zYWRvfQoKYWN1ZXJkbyRlc3RhZG8yW2FjdWVyZG8kZXN0YWRvX2NhbnNhbmNpbz09IjEuIENvbXBsZXRhbWVudGUgYWxlcnRhLiBNdXkgZGVzcGllcnRvIHkgYXRlbnRvLiJdIDwtICJhbGVydGEiCmFjdWVyZG8kZXN0YWRvMlthY3VlcmRvJGVzdGFkb19jYW5zYW5jaW89PSIyLiBBbGVydGEuIFJlY2VwdGl2byBwZXJvIG5vIGFsIHBlYWsuIl0gPC0gImFsZXJ0YSIKYWN1ZXJkbyRlc3RhZG8yW2FjdWVyZG8kZXN0YWRvX2NhbnNhbmNpbz09IjMuIEJpZW4uIGZyZXNjbyJdIDwtICJhbGVydGEiCmFjdWVyZG8kZXN0YWRvMlthY3VlcmRvJGVzdGFkb19jYW5zYW5jaW89PSI0LiBVbiBwb2NvIGNhbnNhZG8uIE1lbm9zIHF1ZSBmcmVzY28uIl0gPC0gImNhbnNhZG8iCmFjdWVyZG8kZXN0YWRvMlthY3VlcmRvJGVzdGFkb19jYW5zYW5jaW89PSI1LiBDYW5zYW5jaW8gbW9kZXJhZG8uIFBvY28gYWxlcnRhIl0gPC0gImNhbnNhZG8iCmFjdWVyZG8kZXN0YWRvMlthY3VlcmRvJGVzdGFkb19jYW5zYW5jaW89PSI2LiBDYW5zYWRvLiBEaWZpY2lsIGNvbmNlbnRyYWNpb24uIl0gPC0gImNhbnNhZG8iCmFjdWVyZG8kZXN0YWRvMlthY3VlcmRvJGVzdGFkb19jYW5zYW5jaW89PSI3LiBFeGhhdXN0by4gSW1wb3NpYmxlIGZ1bmNpb25hciBlZmljaWVudGVtZW50ZS4iXSA8LSAiY2Fuc2FkbyIKCmFjdWVyZG8kZXN0YWRvMiA8LSBhcy5mYWN0b3IoYWN1ZXJkbyRlc3RhZG8yKQoKYGBgCgojIyDCv0PDs21vIGVzdGFiYW4gZW4gY2FkYSBzZXNpw7NuPwpgYGB7ciBlc3RhZG8gQU19CmFjdWVyZG8gJT4lIAogICAgICAgIGdyb3VwX2J5KG5vbWJyZSwgZ3J1cG9yeCkgJT4lIAogICAgICAgIGZpbHRlcihob3JhcmlvPT0iQU0iKSAlPiUgCiAgICAgICAgc3VtbWFyaXNlKCJFc3RhZG8gQU0gYWxlcnRhIiA9IHN1bShlc3RhZG8yID09ICJhbGVydGEiKSwgIkVzdGFkbyBBTSBjYW5zYWRvIiA9IHN1bShlc3RhZG8yID09ICJjYW5zYWRvIikpICU+JSAKICAgICAgICB1bmdyb3VwKCkKYGBgCgpgYGB7ciBlc3RhZG8gUE19CmFjdWVyZG8gJT4lIAogICAgICAgIGdyb3VwX2J5KG5vbWJyZSwgZ3J1cG9yeCkgJT4lIAogICAgICAgIGZpbHRlcihob3JhcmlvPT0iUE0iKSAlPiUgCiAgICAgICAgc3VtbWFyaXNlKCJFc3RhZG8gUE0gYWxlcnRhIiA9IHN1bShlc3RhZG8yID09ICJhbGVydGEiKSwgIkVzdGFkbyBQTSBjYW5zYWRvIiA9IHN1bShlc3RhZG8yID09ICJjYW5zYWRvIikpICU+JSAKICAgICAgICB1bmdyb3VwKCkKYGBgCgojIyBFZGFkCgojIyBTZXhvIHkgZWRhZAoKYGBge3IgUmVzdW1lbiBwb3Igc2V4byB5IGVkYWR9CmFjdWVyZG8gJT4lIAogICAgICAgIGZpbHRlcihtb21lbnRvID09IDEpICU+JSAKICAgICAgICBncm91cF9ieShzZXhvKSAlPiUgCiAgICAgICAgc3VtbWFyaXNlX2VhY2goZnVucygiUHJvbWVkaW8gZWRhZCIgPSBtZWFuLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXN2aWFjacOzbiBlc3TDoW5kYXIgZWRhZCIgPSBzZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG49IG4oKSksCiAgICAgICAgICAgICAgICAgICAgICAgZWRhZCkgJT4lIAogICAgICAgIHVuZ3JvdXAoKQpgYGAKCiMjIFNleG8geSBlc3BlY2lhbGlkYWQKCmBgYHtyIFRhYmxhIHJlc3VtZW4gZGVzY3JpcHRpdmEgcG9yIGVzcGVjaWFsaWRhZH0KYWN1ZXJkbyAlPiUgCiAgICAgICAgZmlsdGVyKG1vbWVudG8gPT0gMSkgJT4lIAogICAgICAgIGdyb3VwX2J5KGVzcGVjaWFsaWRhZCkgJT4lIAogICAgICAgIHN1bW1hcmlzZSggbj1uKCksIAogICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAiU2V4byBtYXNjdWxpbm8iID0gc3VtKHNleG89PSJIb21icmUiKSwgCiAgICAgICAgICAgICAgICAgICAiU2V4byBmZW1lbmlubyIgPSBzdW0oc2V4bz09Ik11amVyIiksCiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICJFZGFkIHByb21lZGlvIiAgICAgICAgPSBtZWFuKGVkYWQpLCAKICAgICAgICAgICAgICAgICAgICJEZXN2aWFjacOzbiBlc3TDoW5kYXIiICA9IHNkKGVkYWQpLCAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICJBbG9uZHJhcyIgPSBzdW0odGlwby5zZWd1bi5hbmltYWw9PSJhbG9uZHJhICIpLCAKICAgICAgICAgICAgICAgICAgICJDb2xpYnJpZXMiID0gc3VtKHRpcG8uc2VndW4uYW5pbWFsID09ICJjb2xpYnJpIiksIAogICAgICAgICAgICAgICAgICAgIkJ1aG9zIiA9IHN1bSh0aXBvLnNlZ3VuLmFuaW1hbCA9PSAiYnVobyIpKSAlPiUgCiAgICAgICAgdW5ncm91cCgpCmBgYAoKYGBge3IgZGlmZXJlbmNpYSBwb3Igc2V4byB5IHRpcG8gYW5pbWFsIHRhYmxhfQp0YWJsZShhY3VlcmRvJHNleG8sIGFjdWVyZG8kdGlwby5zZWd1bi5hbmltYWwpLzQKYGBgCgoKYGBge3IgZGlmZXJlbmNpYSBwb3Igc2V4byB5IHRpcG8gYW5pbWFsIHRlc3R9CmNoaXNxLnRlc3QodGFibGUoYWN1ZXJkbyRzZXhvLCBhY3VlcmRvJHRpcG8uc2VndW4uYW5pbWFsKS80KQpgYGAKCk5vIGhheSBkaWZlcmVuY2lhcyBzaWduaWZpY2F0aXZhcyBlbiBsYSBkaXN0cmlidWNpw7NuIHBvciBzZXhvIHkgdGlwbyBjaXJjYWRpYW5vCgpgYGB7ciBkZXNjcmlwY2nDs24gc2Vnw7puIHRpcG8gY2lyY2FkaWFub30KYWN1ZXJkbyAlPiUgCiAgICAgICAgZmlsdGVyKG1vbWVudG89PTEpICU+JSAKICAgICAgICBncm91cF9ieSh0aXBvLnNlZ3VuLmFuaW1hbCkgJT4lIAogICAgICAgIHN1bW1hcmlzZShUb3RhbCA9IG4oKSwgCiAgICAgICAgICAgICAgICAgIEhvbWJyZXMgPSBzdW0oc2V4bz09IkhvbWJyZSIpLCAKICAgICAgICAgICAgICAgICAgTXVqZXJlcyA9IHN1bShzZXhvPT0iTXVqZXIiKSwgCiAgICAgICAgICAgICAgICAgICJFZGFkIHByb21lZGlvIChhw7FvcykiID0gbWVhbihlZGFkKSwgCiAgICAgICAgICAgICAgICAgICJEZXN2aWFjacOzbiBlc3TDoW5kYXIgKGHDsW9zKSIgPSBzZChlZGFkKSkgJT4lIAogICAgICAgIAogICAgICAgIHVuZ3JvdXAoKQpgYGAKCiMgQWN1ZXJkbyBkaWFnbsOzc3RpY28KCmhheSBOQT8KCmBgYHtyIHZlcmlmaWNvIE5BfQpzdW0oaXMubmEoYWN1ZXJkbyRlc3RhZG8yKSkKYGBgCgojIMK/Q8OzbW8gZXN0YWJhbiBwb3Igc2VzacOzbj8KYGBge3Igwr9Dw7NtbyBlc3RhYmFuIGVuIGNhZGEgc2VzacOzbj99CmFjdWVyZG8gJT4lIAogICAgICAgIGdyb3VwX2J5KGVzdGFkb19jYW5zYW5jaW8pICU+JSAKICAgICAgICBzdW1tYXJpc2UoIEFNID1zdW0oaG9yYXJpbyA9PSAiQU0iKSwgUE0gPSBzdW0oaG9yYXJpbyA9PSAiUE0iKSApICU+JSAKICAgICAgICB1bmdyb3VwKCkKYGBgCgpgYGB7ciDCv0PDs21vIGVzdGFiYW4gZW4gY2FkYSBzZXNpw7NuPyBBTX0KYWN1ZXJkbyAlPiUgCiAgICAgICAgZ3JvdXBfYnkobm9tYnJlKSAlPiUKICAgICAgICBmaWx0ZXIoaG9yYXJpbyA9PSAiQU0iKSAlPiUgCiAgICAgICAgc3VtbWFyaXNlKCAiQWxlcnRhIEFNIiA9IHN1bShlc3RhZG8yID09ICJhbGVydGEiKSwgIkNhbnNhZG8gQU0iID0gc3VtKGVzdGFkbzIgPT0gImNhbnNhZG8iKSApICU+JSAKICAgICAgICB1bmdyb3VwKCkKICAgICAgICAKYGBgCmBgYHtyIMK/Q8OzbW8gZXN0YWJhbiBlbiBjYWRhIHNlc2nDs24/IFBNfQphY3VlcmRvICU+JSAKICAgICAgICBncm91cF9ieShub21icmUpICU+JQogICAgICAgIGZpbHRlcihob3JhcmlvID09ICJQTSIpICU+JSAKICAgICAgICBzdW1tYXJpc2UoICJBbGVydGEgUE0iID0gc3VtKGVzdGFkbzIgPT0gImFsZXJ0YSIpLCAiQ2Fuc2FkbyBQTSIgPSBzdW0oZXN0YWRvMiA9PSAiY2Fuc2FkbyIpICkgJT4lIAogICAgICAgIHVuZ3JvdXAoKQogICAgICAgIApgYGAKCiMjIEVuIGdlbmVyYWwsIMK/YWZlY3RhIGVsIGVzdGFkbyBkZSBjYW5zYW5jaW8gZWwgYWN1ZXJkbyBkaWFnbsOzc3RpY28/CgpQcmVwYXJvIGxvcyBkYXRvcywgdGVuZ28gcXVlIHJvdGFyIGVsIGRmCmBgYHtyfQpzdHIoYWN1ZXJkbykKYWN1ZXJkb3QgPC0gIHNldE5hbWVzKGRhdGEuZnJhbWUodChhY3VlcmRvWywtMV0pKSwgYWN1ZXJkb1ssMV0pCndyaXRlLmNzdihhY3VlcmRvdCwgImFjdWVyZG90LmNzdiIpCnN0cihhY3VlcmRvdCkKCmBgYAoKIyMgUGFyYSBrYXBwYQoKQXBsaWNvIExPLCBjb252aWVydG8gYWN1ZXJkb3QgZW4gcGFyYWthcHBhCgpgYGB7cn0KcGFyYWthcHBhIDwtIHJlYWQuY3N2KCJ0ZXN0X2thcHBhX3Bvcl92YWxlbnRpbmEuY3N2IiwgaGVhZGVyID0gVCwgc2VwID0gIiwiKSAjYWdyZWdvIGVsIHF1ZSBzZSBzdXBvbmUgZXN0w6EgT0sKc3RyKHBhcmFrYXBwYSkKYGBgCgoKYGBge3IgQ2FsY3VsbyBsb3Mga2FwcGEgcG9yIGV4YW1pbmFkb3IgYWxlcnRhIHZzIGNhbnNhZG99CmNvbG5hbWVzKHBhcmFrYXBwYSkgI3ZlbyBsb3Mgbm9tYnJlcyBkZSBsYXMgY29sdW1uYXMuIFNlIGRlYmVuIGNvbXBhcmFyIGlndWFsZXMgbm9tYnJlcywgaWd1YWxlcyBSWCwgZGlzdGludG9zIG1vbWVudG9zLCBkaXN0aW50b3MgZXN0YWRvMgpgYGAKCgojIEthcHBhcwojIyBDb24gY2FtYmlvIGFsZXJ0YS1jYW5zYWRvCiMjIyBBTwpgYGB7ciBBT30KQU8gPC0gcGFyYWthcHBhICU+JSAKICAgICAgICBzZWxlY3QoQU8uTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX0hvbWJyZS5UaXBvX2NvbGlicmkuRXN0YWRvX2NhbnNhZG8sIAogICAgICAgICAgICAgICBBTy5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhKQpgYGAKCgpgYGB7ciBBTyBrYXBwYX0Ka2FwcGEyKEFPLCAic3F1YXJlZCIpCmBgYAoKYGBge3IgQU8gY2F0ZWdvcmlhc30Ka2FwcGFtLmZsZWlzcyhBTywgIGRldGFpbCAgPSBUKQpgYGAKCgojIyMgQ2FybGEKCmBgYHtyIENhcmxhfQpDYXJsYSA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChDYXJsYS5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIENhcmxhLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19hbGVydGEpCmthcHBhMihDYXJsYSwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBDYXJsYX0Ka2FwcGFtLmZsZWlzcyhDYXJsYSwgIGRldGFpbCAgPSBUKQpgYGAKCiMjIyBDUAoKYGBge3IgQ1B9CkNQIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KENQLk1vbWVudG9fMi5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19jYW5zYWRvLCAKICAgICAgICAgICAgICAgQ1AuTW9tZW50b18zLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSkKa2FwcGEyKENQLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIENQfQprYXBwYW0uZmxlaXNzKENQLCAgZGV0YWlsICA9IFQpCmBgYAoKCiMjIyBDU0YKCmBgYHtyIENTRn0KQ1NGIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KENTRi5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fYnVoby5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIENTRi5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fYnVoby5Fc3RhZG9fYWxlcnRhKQprYXBwYTIoQ1AsICJzcXVhcmVkIikKYGBgCmBgYHtyIENhdGVnb3JpYXMgQ1NGfQprYXBwYW0uZmxlaXNzKENTRiwgIGRldGFpbCAgPSBUKQpgYGAKCiMjIyBEYW5pZWxhCgpgYGB7ciBEYW5pZWxhfQpEYW5pZWxhIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KERhbmllbGEuTW9tZW50b18xLkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIERhbmllbGEuTW9tZW50b180LkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhKQprYXBwYTIoRGFuaWVsYSwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBEYW5pZWxhfQprYXBwYW0uZmxlaXNzKERhbmllbGEsICBkZXRhaWwgID0gVCkKYGBgCgojIyMgSUcgMQoKYGBge3IgSUcgMX0KSUcxIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KElHLi5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhLCAKICAgICAgICAgICAgICAgSUcuLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19Ib21icmUuVGlwb19jb2xpYnJpLkVzdGFkb19jYW5zYWRvKQprYXBwYTIoSUcxLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIElHMX0Ka2FwcGFtLmZsZWlzcyhJRzEsICBkZXRhaWwgID0gVCkKYGBgCgojIyMgSUcgMgoKYGBge3IgSUcgMn0KSUcyIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KElHLi5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIElHLi5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhKQprYXBwYTIoSUcyLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIElHMn0Ka2FwcGFtLmZsZWlzcyhJRzIsICBkZXRhaWwgID0gVCkKYGBgCgojIyMgTUYxCgpgYGB7ciBNRjF9Ck1GMSA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChNRi5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhLAogICAgICAgICAgICAgICBNRi5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbykKa2FwcGEyKE1GMSwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBNRjF9CmthcHBhbS5mbGVpc3MoTUYxLCAgZGV0YWlsICA9IFQpCmBgYAojIyMgTUYyCgpgYGB7ciBNRjJ9Ck1GMiA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChNRi5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIE1GLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19Ib21icmUuVGlwb19jb2xpYnJpLkVzdGFkb19hbGVydGEpCmthcHBhMihNRjIsICJzcXVhcmVkIikKYGBgCmBgYHtyIENhdGVnb3JpYXMgTUYyfQprYXBwYW0uZmxlaXNzKE1GMiwgIGRldGFpbCAgPSBUKQpgYGAKCgoKCgoKCgoKCgojIyMgTVoxCmBgYHtyIE1aMX0KTVoxIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KE1aLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwgCiAgICAgICAgICAgICAgIE1aLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2NhbnNhZG8pCmthcHBhMihNWjEsICJzcXVhcmVkIikKYGBgCmBgYHtyIENhdGVnb3JpYXMgTVoxfQprYXBwYW0uZmxlaXNzKE1aMSwgIGRldGFpbCAgPSBUKQpgYGAKCiMjIyBNWjIKYGBge3IgTVoyfQpNWjIgPC0gcGFyYWthcHBhICU+JSAKICAgICAgICBzZWxlY3QoTVouTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIE1aLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSkKa2FwcGEyKE1aMiwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBNWjJ9CmthcHBhbS5mbGVpc3MoTVoyLCAgZGV0YWlsICA9IFQpCmBgYAoKIyMjIFBhdWxpbmEKCmBgYHtyIFBhdWxpbmF9ClBhdWxpbmEgPC0gcGFyYWthcHBhICU+JSAKICAgICAgICBzZWxlY3QoUGF1bGluYS5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fYWxlcnRhLCAKICAgICAgICAgICAgICAgUGF1bGluYS5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbykKa2FwcGEyKFBhdWxpbmEsICJzcXVhcmVkIikKYGBgCmBgYHtyIENhdGVnb3JpYXMgUGF1bGluYX0Ka2FwcGFtLmZsZWlzcyhQYXVsaW5hLCAgZGV0YWlsICA9IFQpCmBgYAojIyMgVkcxCmBgYHtyIFZHMX0KVkcxIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KFZHLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwgCiAgICAgICAgICAgICAgIFZHLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2NhbnNhZG8pCmthcHBhMihWRzEsICJzcXVhcmVkIikKYGBgCmBgYHtyIENhdGVnb3JpYXMgVkcxfQprYXBwYW0uZmxlaXNzKFZHMSwgIGRldGFpbCAgPSBUKQpgYGAKIyMjIFZHMgpgYGB7ciBWRzJ9ClZHMiA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChWRy5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19jb2xpYnJpLkVzdGFkb19jYW5zYWRvLCAKICAgICAgICAgICAgICAgVkcuTW9tZW50b18zLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhKQprYXBwYTIoVkcyLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIFZHMn0Ka2FwcGFtLmZsZWlzcyhWRzIsICBkZXRhaWwgID0gVCkKYGBgCiMjIyBYUzEKYGBge3IgWFMxfQpYUzEgPC0gcGFyYWthcHBhICU+JSAKICAgICAgICBzZWxlY3QoWFMuTW9tZW50b18xLkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSwgCiAgICAgICAgICAgICAgIFhTLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19jYW5zYWRvKQprYXBwYTIoWFMxLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIFhTMX0Ka2FwcGFtLmZsZWlzcyhYUzEsICBkZXRhaWwgID0gVCkKYGBgCgoKCgojIyMgWFMyCmBgYHtyIFhTMn0KWFMyIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KFhTLk1vbWVudG9fMi5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19jYW5zYWRvLCAKICAgICAgICAgICAgICAgWFMuTW9tZW50b18zLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSkKa2FwcGEyKFhTMiwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBYUzJ9CmthcHBhbS5mbGVpc3MoWFMyLCAgZGV0YWlsICA9IFQpCmBgYAoKCgoKCiMjIyBYVgpgYGB7ciBYVn0KWFYgPC0gcGFyYWthcHBhICU+JSAKICAgICAgICBzZWxlY3QoWFYuTW9tZW50b18xLkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhLCAKICAgICAgICAgICAgICAgWFYuTW9tZW50b180LkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbykKa2FwcGEyKFhWLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIFhWfQprYXBwYW0uZmxlaXNzKFhWLCAgZGV0YWlsICA9IFQpCmBgYAoKCgoKCgoKCgoKCgoKIyMgQ2Fuc2Fkb3MKIyMjIEFPIENhbnNhZG8KYGBge3IgQU9fY2Fuc2Fkb30KQU9fY2Fuc2FkbyA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChBTy5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIEFPLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19Ib21icmUuVGlwb19jb2xpYnJpLkVzdGFkb19jYW5zYWRvKQprYXBwYTIoQU9fY2Fuc2FkbywgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBBT19jYW5zYWRvfQprYXBwYW0uZmxlaXNzKEFPX2NhbnNhZG8sICBkZXRhaWwgID0gVCkKYGBgCgoKIyMjIENhcmxhIENhbnNhZG8KYGBge3IgQ2FybGFfY2Fuc2Fkb30KQ2FybGFfY2Fuc2FkbyA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChDYXJsYS5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbywgCiAgICAgICAgICAgICAgIENhcmxhLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19jYW5zYWRvKQprYXBwYTIoQ2FybGFfY2Fuc2FkbywgInNxdWFyZWQiKQoKd3JpdGUuY3N2KENhcmxhX2NhbnNhZG8sICJjYXJsYV9jYW5zYWRvLmNzdiIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIENhcmxhX2NhbnNhZG99CmthcHBhbS5mbGVpc3MoQ2FybGFfY2Fuc2FkbywgIGRldGFpbCAgPSBUKQpgYGAKCgojIyMgUGF1bGluYSBDYW5zYWRvCmBgYHtyIFBhdWxpbmFfY2Fuc2Fkb30KUGF1bGluYV9jYW5zYWRvIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KFBhdWxpbmEuTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2NhbnNhZG8sIAogICAgICAgICAgICAgICBQYXVsaW5hLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19jYW5zYWRvKQprYXBwYTIoUGF1bGluYV9jYW5zYWRvLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIFBhdWxpbmFfY2Fuc2Fkb30Ka2FwcGFtLmZsZWlzcyhQYXVsaW5hX2NhbnNhZG8sICBkZXRhaWwgID0gVCkKYGBgCgoKCgoKIyMgQWxlcnRhcwoKIyMjIENQIEFsZXJ0YQpgYGB7ciBDUF9hbGVydGF9CkNQX2FsZXJ0YSA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChDUC5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fYWxlcnRhLCAKICAgICAgICAgICAgICAgQ1AuTW9tZW50b180LkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSkKa2FwcGEyKENQX2FsZXJ0YSwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBDUF9hbGVydGF9CmthcHBhbS5mbGVpc3MoQ1BfYWxlcnRhLCAgZGV0YWlsICA9IFQpCmBgYAoKIyMjIENTRiBBbGVydGEKYGBge3IgQ1NGX2FsZXJ0YX0KQ1NGX2FsZXJ0YSA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChDU0YuTW9tZW50b18xLkdydXBvUnhfQS5TZXhvX0hvbWJyZS5UaXBvX2J1aG8uRXN0YWRvX2FsZXJ0YSwgCiAgICAgICAgICAgICAgIENTRi5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fYnVoby5Fc3RhZG9fYWxlcnRhKQprYXBwYTIoQ1NGX2FsZXJ0YSwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBDUF9hbGVydGEgMX0Ka2FwcGFtLmZsZWlzcyhDU0ZfYWxlcnRhLCAgZGV0YWlsICA9IFQpCmBgYAoKIyMjIERhbmllbGEgQWxlcnRhCmBgYHtyIERhbmllbGFfYWxlcnRhfQpEYW5pZWxhX2FsZXJ0YSA8LSBwYXJha2FwcGEgJT4lIAogICAgICAgIHNlbGVjdChEYW5pZWxhLk1vbWVudG9fMi5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwgCiAgICAgICAgICAgICAgIERhbmllbGEuTW9tZW50b18zLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhKQprYXBwYTIoRGFuaWVsYV9hbGVydGEsICJzcXVhcmVkIikKYGBgCmBgYHtyIENhdGVnb3JpYXMgRGFuaWVsYV9hbGVydGF9CmthcHBhbS5mbGVpc3MoRGFuaWVsYV9hbGVydGEsICBkZXRhaWwgID0gVCkKYGBgCgojIyMgUmljYXJkbyBBbGVydGEgMQpgYGB7ciBSaWNhcmRvX2FsZXJ0YSAxfQpSaWNhcmRvX2FsZXJ0YTEgPC0gcGFyYWthcHBhICU+JSAKICAgICAgICBzZWxlY3QoUmljYXJkby4uTW9tZW50b18xLkdydXBvUnhfQS5TZXhvX0hvbWJyZS5UaXBvX2Fsb25kcmEuLkVzdGFkb19hbGVydGEsIAogICAgICAgICAgICAgICBSaWNhcmRvLi5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSkKa2FwcGEyKFJpY2FyZG9fYWxlcnRhMSwgInNxdWFyZWQiKQpgYGAKYGBge3IgQ2F0ZWdvcmlhcyBSaWNhcmRvX2FsZXJ0YTF9CmthcHBhbS5mbGVpc3MoUmljYXJkb19hbGVydGExLCAgZGV0YWlsICA9IFQpCmBgYAoKIyMjIFJpY2FyZG8gQWxlcnRhIDIKYGBge3IgUmljYXJkb19hbGVydGEgMn0KUmljYXJkb19hbGVydGEyIDwtIHBhcmFrYXBwYSAlPiUgCiAgICAgICAgc2VsZWN0KFJpY2FyZG8uLk1vbWVudG9fMi5HcnVwb1J4X0IuU2V4b19Ib21icmUuVGlwb19hbG9uZHJhLi5Fc3RhZG9fYWxlcnRhLCAKICAgICAgICAgICAgICAgUmljYXJkby4uTW9tZW50b18zLkdydXBvUnhfQi5TZXhvX0hvbWJyZS5UaXBvX2Fsb25kcmEuLkVzdGFkb19hbGVydGEpCmthcHBhMihSaWNhcmRvX2FsZXJ0YTIsICJzcXVhcmVkIikKYGBgCmBgYHtyIENhdGVnb3JpYXMgUmljYXJkb19hbGVydGEyfQprYXBwYW0uZmxlaXNzKFJpY2FyZG9fYWxlcnRhMiwgIGRldGFpbCAgPSBUKQpgYGAKCiMjIyBYViBBbGVydGEKYGBge3IgWFZfYWxlcnRhfQpYVl9hbGVydGEgPC0gcGFyYWthcHBhICU+JSAKICAgICAgICBzZWxlY3QoWFYuTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhLCAKICAgICAgICAgICAgICAgWFYuTW9tZW50b18zLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhKQprYXBwYTIoWFZfYWxlcnRhLCAic3F1YXJlZCIpCmBgYApgYGB7ciBDYXRlZ29yaWFzIFhWX2FsZXJ0YX0Ka2FwcGFtLmZsZWlzcyhYVl9hbGVydGEsICBkZXRhaWwgID0gVCkKYGBgCgoKCgoKCiMgQ2l0YSBwYXF1ZXRlcwpgYGB7cn0KY2l0YXRpb24ocGFja2FnZSA9ICJkcGx5ciIsIGxpYi5sb2MgPSBOVUxMKQpgYGAKYGBge3J9CmNpdGF0aW9uKHBhY2thZ2UgPSAidGlkeXIiLCBsaWIubG9jID0gTlVMTCkKYGBgCmBgYHtyfQpjaXRhdGlvbihwYWNrYWdlID0gImlyciIsIGxpYi5sb2MgPSBOVUxMKQpgYGAKCg==