Noriega-Gallardo V, Uribe SE

Paquetes

library("dplyr")
library("tidyr")
library("irr") #kappa2

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

mosaicplot(acuerdo$estado_cansancio~acuerdo$horario, shade=T, 
           main = "Estado de alerta según horario", ylab = "Horario", xlab = "Estado de alerta")

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)

hay NA?

sum(is.na(acuerdo$estado2))

¿Cómo estaban en cada sesión?

acuerdo %>% 
        group_by(nombre, gruporx) %>% 
        filter(horario=="AM") %>% 
        summarise("Estado AM alerta" = sum(estado2 == "alerta"), "Estado AM cansado" = sum(estado2 == "cansado")) %>% 
        ungroup()
acuerdo %>% 
        group_by(nombre, gruporx) %>% 
        filter(horario=="PM") %>% 
        summarise("Estado PM alerta" = sum(estado2 == "alerta"), "Estado PM cansado" = sum(estado2 == "cansado")) %>% 
        ungroup()

Edad

Sexo y edad

acuerdo %>% 
        filter(momento == 1) %>% 
        group_by(sexo) %>% 
        summarise_each(funs("Promedio edad" = mean, 
                            "Desviación estándar edad" = sd,
                            n= n()),
                       edad) %>% 
        ungroup()

Sexo y especialidad

acuerdo %>% 
        filter(momento == 1) %>% 
        group_by(especialidad) %>% 
        summarise( n=n(), 
                   
                   "Sexo masculino" = sum(sexo=="Hombre"), 
                   "Sexo femenino" = sum(sexo=="Mujer"),
                   
                   "Edad promedio"        = mean(edad), 
                   "Desviación estándar"  = sd(edad), 
                    
                   "Alondras" = sum(tipo.segun.animal=="alondra "), 
                   "Colibries" = sum(tipo.segun.animal == "colibri"), 
                   "Buhos" = sum(tipo.segun.animal == "buho")) %>% 
        ungroup()
table(acuerdo$sexo, acuerdo$tipo.segun.animal)/4
chisq.test(table(acuerdo$sexo, acuerdo$tipo.segun.animal)/4)

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

acuerdo %>% 
        filter(momento==1) %>% 
        group_by(tipo.segun.animal) %>% 
        summarise(Total = n(), 
                  Hombres = sum(sexo=="Hombre"), 
                  Mujeres = sum(sexo=="Mujer"), 
                  "Edad promedio (años)" = mean(edad), 
                  "Desviación estándar (años)" = sd(edad)) %>% 
        
        ungroup()

Acuerdo diagnóstico

¿Cómo estaban por sesión?

acuerdo %>% 
        group_by(estado_cansancio) %>% 
        summarise( AM =sum(horario == "AM"), PM = sum(horario == "PM") ) %>% 
        ungroup()
acuerdo %>% 
        group_by(nombre) %>%
        filter(horario == "AM") %>% 
        summarise( "Alerta AM" = sum(estado2 == "alerta"), "Cansado AM" = sum(estado2 == "cansado") ) %>% 
        ungroup()
        
acuerdo %>% 
        group_by(nombre) %>%
        filter(horario == "PM") %>% 
        summarise( "Alerta PM" = sum(estado2 == "alerta"), "Cansado PM" = sum(estado2 == "cansado") ) %>% 
        ungroup()
        

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

Preparo los datos, tengo que rotar el df

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

Para kappa

Aplico LO, convierto acuerdot en parakappa

parakappa <- read.csv("parakappa_final.csv", header = T, sep = ";") #agrego el que se supone está OK
colnames(parakappa) #veo los nombres de las columnas. Se deben comparar iguales nombres, iguales RX, distintos momentos, distintos estado2

Kappas

Con cambio alerta-cansado

AO

AO <- parakappa %>% 
        select(AO.Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_cansado, 
               AO.Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_colibri.Estado_alerta)
kappam.fleiss(AO,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.499 

        z = 3.68 
  p-value = 0.00023 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.532 2.710   0.007
2. Caries de Esmalte  0.246 1.256   0.209
3. Caries en Dentina  0.505 2.574   0.010

Carla

Carla <- parakappa %>% 
        select(Carla.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado, 
               Carla.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta)
kappa2(Carla, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.808 

        z = 4.26 
  p-value = 2.01e-05 
kappam.fleiss(Carla,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.705 

        z = 5.35 
  p-value = 8.73e-08 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.615 3.135   0.002
2. Caries de Esmalte  0.567 2.889   0.004
3. Caries en Dentina  0.897 4.576   0.000

CP

CP <- parakappa %>% 
        select(CP.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_cansado, 
               CP.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_alondra..Estado_alerta)
kappa2(CP, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.779 

        z = 4.01 
  p-value = 6.01e-05 
kappam.fleiss(CP,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.666 

        z = 5.14 
  p-value = 2.78e-07 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.563 2.871   0.004
2. Caries de Esmalte  0.563 2.871   0.004
3. Caries en Dentina  0.819 4.178   0.000

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.779 

        z = 4.01 
  p-value = 6.01e-05 
kappam.fleiss(CSF,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.38 

        z = 2.92 
  p-value = 0.00355 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.150 0.767   0.443
2. Caries de Esmalte  0.077 0.392   0.695
3. Caries en Dentina  0.751 3.830   0.000

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.784 

        z = 4.32 
  p-value = 1.58e-05 
kappam.fleiss(Daniela,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.585 

        z = 4.28 
  p-value = 1.83e-05 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.760 3.877   0.000
2. Caries de Esmalte  0.441 2.248   0.025
3. Caries en Dentina  0.409 2.086   0.037

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.841 

        z = 4.3 
  p-value = 1.75e-05 
kappam.fleiss(IG1,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.645 

        z = 4.88 
  p-value = 1.05e-06 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.923 4.706   0.000
2. Caries de Esmalte  0.414 2.109   0.035
3. Caries en Dentina  0.424 2.159   0.031

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.682 

        z = 3.48 
  p-value = 0.000495 
kappam.fleiss(IG2,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.516 

        z = 3.84 
  p-value = 0.000122 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.538 2.746   0.006
2. Caries de Esmalte  0.344 1.755   0.079
3. Caries en Dentina  0.597 3.044   0.002

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.668 

        z = 3.5 
  p-value = 0.000459 
kappam.fleiss(MF1,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.605 

        z = 4.64 
  p-value = 3.56e-06 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.675 3.442   0.001
2. Caries de Esmalte  0.563 2.871   0.004
3. Caries en Dentina  0.487 2.484   0.013

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.637 

        z = 3.33 
  p-value = 0.000877 
kappam.fleiss(MF2,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.666 

        z = 5.14 
  p-value = 2.78e-07 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.458 2.337   0.019
2. Caries de Esmalte  0.738 3.762   0.000
3. Caries en Dentina  0.738 3.762   0.000

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.752 

        z = 3.89 
  p-value = 9.98e-05 
kappam.fleiss(MZ1,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.677 

        z = 4.78 
  p-value = 1.78e-06 

                        Kappa      z p.value
                        1.000  5.099   0.000
1. No presenta Caries   0.690  3.521   0.000
1. No presenta Caries. -0.020 -0.100   0.920
2. Caries de Esmalte    0.563  2.871   0.004
3. Caries en Dentina    1.000  5.099   0.000

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.662 

        z = 3.42 
  p-value = 0.000632 
kappam.fleiss(MZ2,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.537 

        z = 4.16 
  p-value = 3.2e-05 

                        Kappa      z p.value
                        1.000  5.099   0.000
1. No presenta Caries   0.601  3.063   0.002
1. No presenta Caries. -0.020 -0.100   0.920
2. Caries de Esmalte    0.257  1.311   0.190
3. Caries en Dentina    0.705  3.592   0.000

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.408 

        z = 2.23 
  p-value = 0.026 
kappam.fleiss(Paulina,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.162 

        z = 1.25 
  p-value = 0.211 

                       Kappa      z p.value
                       1.000  5.099   0.000
1. No presenta Caries  0.213  1.088   0.276
2. Caries de Esmalte  -0.020 -0.100   0.920
3. Caries en Dentina   0.157  0.799   0.424

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.619 

        z = 3.21 
  p-value = 0.00133 
kappam.fleiss(VG1,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.443 

        z = 3.42 
  p-value = 0.000634 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.563 2.871   0.004
2. Caries de Esmalte  0.278 1.416   0.157
3. Caries en Dentina  0.388 1.980   0.048

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.577 

        z = 2.98 
  p-value = 0.00285 
kappam.fleiss(VG2,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.386 

        z = 2.97 
  p-value = 0.00295 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.150 0.767   0.443
2. Caries de Esmalte  0.213 1.088   0.276
3. Caries en Dentina  0.719 3.666   0.000

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.257 

        z = 1.31 
  p-value = 0.189 
kappam.fleiss(XS1,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.101 

        z = 0.773 
  p-value = 0.439 

                       Kappa      z p.value
                       1.000  5.099   0.000
1. No presenta Caries -0.031 -0.156   0.876
2. Caries de Esmalte   0.025  0.127   0.899
3. Caries en Dentina   0.157  0.799   0.424

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.759 

        z = 3.98 
  p-value = 7.04e-05 
kappam.fleiss(XS2,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.661 

        z = 5.07 
  p-value = 4e-07 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.609 3.105   0.002
2. Caries de Esmalte  0.601 3.063   0.002
3. Caries en Dentina  0.719 3.666   0.000

XV

XV <- parakappa %>% 
        select(XV.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_alerta, 
               XV.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_colibri.Estado_cansado)
kappa2(XV, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.305 

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

 Subjects = 26 
   Raters = 2 
    Kappa = 0.364 

        z = 2.74 
  p-value = 0.00619 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.010 0.049   0.961
2. Caries de Esmalte  0.512 2.613   0.009
3. Caries en Dentina  0.350 1.785   0.074

Cansados

AO Cansado

AO_cansado <- parakappa %>% 
        select(AO.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado, 
               AO.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_colibri.Estado_cansado)
kappa2(AO_cansado, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.743 

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

 Subjects = 26 
   Raters = 2 
    Kappa = 0.605 

        z = 4.43 
  p-value = 9.38e-06 

                        Kappa      z p.value
                        1.000  5.099   0.000
1. No presenta Caries   0.685  3.492   0.000
1. No presenta Caries. -0.020 -0.100   0.920
2. Caries de Esmalte    0.414  2.109   0.035
3. Caries en Dentina    0.779  3.971   0.000

Carla Cansado

Carla_cansado <- parakappa %>% 
        select(Carla.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado, 
               Carla.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_cansado)
kappa2(Carla_cansado, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.675 

        z = 3.59 
  p-value = 0.00033 
kappam.fleiss(Carla_cansado,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.484 

        z = 3.67 
  p-value = 0.000244 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.441 2.248   0.025
2. Caries de Esmalte  0.320 1.633   0.102
3. Caries en Dentina  0.654 3.335   0.001

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.554 

        z = 2.84 
  p-value = 0.00457 
kappam.fleiss(Paulina_cansado,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.412 

        z = 3.09 
  p-value = 0.00197 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.381 1.942   0.052
2. Caries de Esmalte  0.278 1.416   0.157
3. Caries en Dentina  0.505 2.574   0.010

Alertas

CP Alerta

CP_alerta <- parakappa %>% 
        select(CP.Momento_1.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta, 
               CP.Momento_4.GrupoRx_A.Sexo_Mujer.Tipo_alondra..Estado_alerta)
kappa2(CP_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.724 

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

 Subjects = 26 
   Raters = 2 
    Kappa = 0.543 

        z = 4.16 
  p-value = 3.23e-05 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.685 3.492   0.000
2. Caries de Esmalte  0.344 1.755   0.079
3. Caries en Dentina  0.487 2.484   0.013

CSF Alerta

CSF_alerta <- parakappa %>% 
        select(CSF.Momento_1.GrupoRx_A.Sexo_Hombre.Tipo_buho.Estado_alerta, 
               CSF.Momento_4.GrupoRx_A.Sexo_Hombre.Tipo_buho.Estado_alerta)
kappa2(CSF_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.697 

        z = 3.58 
  p-value = 0.000342 
kappam.fleiss(CSF_alerta,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.6 

        z = 4.59 
  p-value = 4.37e-06 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.685 3.492   0.000
2. Caries de Esmalte  0.487 2.484   0.013
3. Caries en Dentina  0.532 2.710   0.007

Daniela Alerta

Daniela_alerta <- parakappa %>% 
        select(Daniela.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta, 
               Daniela.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta)
kappa2(Daniela_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.804 

        z = 4.25 
  p-value = 2.19e-05 
kappam.fleiss(Daniela_alerta,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.638 

        z = 4.59 
  p-value = 4.37e-06 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.766 3.906   0.000
2. Caries de Esmalte  0.512 2.613   0.009
3. Caries en Dentina  0.505 2.574   0.010

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")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.359 

        z = 2.5 
  p-value = 0.0123 
kappam.fleiss(Ricardo_alerta1,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.0299 

        z = 0.2 
  p-value = 0.841 

                       Kappa      z p.value
                       1.000  5.099   0.000
1. No presenta Caries -0.138 -0.701   0.483
2. Caries de Esmalte  -0.077 -0.392   0.695
3. Caries en Dentina   0.458  2.337   0.019

Ricardo Alerta 2

Ricardo_alerta2 <- parakappa %>% 
        select(Ricardo..Momento_2.GrupoRx_B.Sexo_Hombre.Tipo_alondra..Estado_alerta, 
               Ricardo..Momento_3.GrupoRx_B.Sexo_Hombre.Tipo_alondra..Estado_alerta)
kappa2(Ricardo_alerta2, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.601 

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

 Subjects = 26 
   Raters = 2 
    Kappa = 0.497 

        z = 3.14 
  p-value = 0.00167 

                        Kappa      z p.value
                        1.000  5.099   0.000
1. No presenta Caries   0.601  3.063   0.002
1. No presenta Caries. -0.020 -0.100   0.920
2. Caries de Esmalte    0.388  1.980   0.048
3. Caries en Dentina   -0.020 -0.100   0.920

XV Alerta

XV_alerta <- parakappa %>% 
        select(XV.Momento_2.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta, 
               XV.Momento_3.GrupoRx_B.Sexo_Mujer.Tipo_colibri.Estado_alerta)
kappa2(XV_alerta, "squared")
 Cohen's Kappa for 2 Raters (Weights: squared)

 Subjects = 26 
   Raters = 2 
    Kappa = 0.779 

        z = 3.99 
  p-value = 6.61e-05 
kappam.fleiss(XV_alerta,  detail  = T)
 Fleiss' Kappa for m Raters

 Subjects = 26 
   Raters = 2 
    Kappa = 0.525 

        z = 3.85 
  p-value = 0.00012 

                      Kappa     z p.value
                      1.000 5.099   0.000
1. No presenta Caries 0.409 2.086   0.037
2. Caries de Esmalte  0.350 1.785   0.074
3. Caries en Dentina  0.685 3.492   0.000

Cita paquetes

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

To cite package 'dplyr' in publications use:

  Hadley Wickham and Romain Francois (2016). dplyr: A Grammar of Data Manipulation. R package version 0.5.0.
  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 = {2016},
    note = {R package version 0.5.0},
    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.5.1. 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.5.1},
    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")'.
LS0tDQp0aXRsZTogRWZlY3RvIGRlbCBjYW5zYW5jaW8gZW4gZWwgYWN1ZXJkbyBkaWFnbsOzc3RpY28gZGUgb2JzZXJ2YWRvcmVzIGV2YWx1YW5kbyByYWRpb2dyYWbDrWFzDQogIGJpdGV3aW5nIHByb3hpbWFsZXMNCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KDQpOb3JpZWdhLUdhbGxhcmRvIFYsIFVyaWJlIFNFDQoNCg0KIyBQYXF1ZXRlcw0KYGBge3IgUGFxdWV0ZXN9DQpsaWJyYXJ5KCJkcGx5ciIpDQpsaWJyYXJ5KCJ0aWR5ciIpDQpsaWJyYXJ5KCJpcnIiKSAja2FwcGEyDQoNCg0KYGBgDQoNCg0KIyBEYXRhc2V0DQpgYGB7ciBNYWluIGRhdGFzZXR9DQphY3VlcmRvIDwtIHJlYWQuY3N2KCJjYW5zYW5jaW8gdXNzLmNzdiIsIGhlYWRlciA9IFQsIHNlcCA9ICJcdCIsIGVuY29kaW5nID0gIlVURi04IikNCmFjdWVyZG8gPC0gYWN1ZXJkbyAlPiUgDQogICAgICAgIGZpbHRlcihldGFwYSA9PSAiYWN1ZXJkbyIpDQoNCmFjdWVyZG8kQWNpZXJ0b3MgPC0gTlVMTA0KYWN1ZXJkbyRFcnJvcmVzIDwtIE5VTEwNCg0KYGBgDQoNCiMgRXN0YWTDrXN0aWNhIGRlc2NyaXB0aXZhDQojIyBPYnNlcnZhZG9yZXMNCjEzIG9ic2VydmFkb3Jlcw0KYGBge3Igwr9DdcOhbnRhcyB2ZWNlcyB2acOzIGNhZGEgb2JzZXJ2YWRvciBsYXMgcnhzP30NCnRhYmxlKGFjdWVyZG8kbm9tYnJlLCBhY3VlcmRvJGhvcmFyaW8pDQpgYGANCg0KIyMgQ2xhc2lmaWNvIGNvbW8gY2Fuc2Fkb3MgbyBhbGVydGFzDQoNCmBgYHtyIE1vc2FpY28gZGUgY2Fuc2FuY2lvfQ0KbW9zYWljcGxvdChhY3VlcmRvJGVzdGFkb19jYW5zYW5jaW9+YWN1ZXJkbyRob3JhcmlvLCBzaGFkZT1ULCANCiAgICAgICAgICAgbWFpbiA9ICJFc3RhZG8gZGUgYWxlcnRhIHNlZ8O6biBob3JhcmlvIiwgeWxhYiA9ICJIb3JhcmlvIiwgeGxhYiA9ICJFc3RhZG8gZGUgYWxlcnRhIikNCmBgYA0KDQoNCkRpdmlkbyBlbiBkb3MsIEFsZXJ0YSA9IDErMiszIHkgQ2Fuc2FkbyA9IDQrNSs2KzcNCkVzdG8gZGViaWRvIGFsIGdyw6FmaWNvIGFudGVyaW9yDQoNCmBgYHtyIHJlY29kaWZpY28gdG9kbyBhIGFsZXJ0YSBvIGNhbnNhZG99DQoNCg0KYWN1ZXJkbyRlc3RhZG8yW2FjdWVyZG8kZXN0YWRvX2NhbnNhbmNpbz09IjEuIENvbXBsZXRhbWVudGUgYWxlcnRhLiBNdXkgZGVzcGllcnRvIHkgYXRlbnRvLiJdIDwtICJhbGVydGEiDQphY3VlcmRvJGVzdGFkbzJbYWN1ZXJkbyRlc3RhZG9fY2Fuc2FuY2lvPT0iMi4gQWxlcnRhLiBSZWNlcHRpdm8gcGVybyBubyBhbCBwZWFrLiJdIDwtICJhbGVydGEiDQphY3VlcmRvJGVzdGFkbzJbYWN1ZXJkbyRlc3RhZG9fY2Fuc2FuY2lvPT0iMy4gQmllbi4gZnJlc2NvIl0gPC0gImFsZXJ0YSINCmFjdWVyZG8kZXN0YWRvMlthY3VlcmRvJGVzdGFkb19jYW5zYW5jaW89PSI0LiBVbiBwb2NvIGNhbnNhZG8uIE1lbm9zIHF1ZSBmcmVzY28uIl0gPC0gImNhbnNhZG8iDQphY3VlcmRvJGVzdGFkbzJbYWN1ZXJkbyRlc3RhZG9fY2Fuc2FuY2lvPT0iNS4gQ2Fuc2FuY2lvIG1vZGVyYWRvLiBQb2NvIGFsZXJ0YSJdIDwtICJjYW5zYWRvIg0KYWN1ZXJkbyRlc3RhZG8yW2FjdWVyZG8kZXN0YWRvX2NhbnNhbmNpbz09IjYuIENhbnNhZG8uIERpZmljaWwgY29uY2VudHJhY2lvbi4iXSA8LSAiY2Fuc2FkbyINCmFjdWVyZG8kZXN0YWRvMlthY3VlcmRvJGVzdGFkb19jYW5zYW5jaW89PSI3LiBFeGhhdXN0by4gSW1wb3NpYmxlIGZ1bmNpb25hciBlZmljaWVudGVtZW50ZS4iXSA8LSAiY2Fuc2FkbyINCg0KYWN1ZXJkbyRlc3RhZG8yIDwtIGFzLmZhY3RvcihhY3VlcmRvJGVzdGFkbzIpDQoNCg0KYGBgDQoNCmhheSBOQT8NCg0KYGBge3IgdmVyaWZpY28gTkF9DQpzdW0oaXMubmEoYWN1ZXJkbyRlc3RhZG8yKSkNCmBgYA0KDQojIyDCv0PDs21vIGVzdGFiYW4gZW4gY2FkYSBzZXNpw7NuPw0KYGBge3IgZXN0YWRvIEFNfQ0KYWN1ZXJkbyAlPiUgDQogICAgICAgIGdyb3VwX2J5KG5vbWJyZSwgZ3J1cG9yeCkgJT4lIA0KICAgICAgICBmaWx0ZXIoaG9yYXJpbz09IkFNIikgJT4lIA0KICAgICAgICBzdW1tYXJpc2UoIkVzdGFkbyBBTSBhbGVydGEiID0gc3VtKGVzdGFkbzIgPT0gImFsZXJ0YSIpLCAiRXN0YWRvIEFNIGNhbnNhZG8iID0gc3VtKGVzdGFkbzIgPT0gImNhbnNhZG8iKSkgJT4lIA0KICAgICAgICB1bmdyb3VwKCkNCmBgYA0KDQpgYGB7ciBlc3RhZG8gUE19DQphY3VlcmRvICU+JSANCiAgICAgICAgZ3JvdXBfYnkobm9tYnJlLCBncnVwb3J4KSAlPiUgDQogICAgICAgIGZpbHRlcihob3JhcmlvPT0iUE0iKSAlPiUgDQogICAgICAgIHN1bW1hcmlzZSgiRXN0YWRvIFBNIGFsZXJ0YSIgPSBzdW0oZXN0YWRvMiA9PSAiYWxlcnRhIiksICJFc3RhZG8gUE0gY2Fuc2FkbyIgPSBzdW0oZXN0YWRvMiA9PSAiY2Fuc2FkbyIpKSAlPiUgDQogICAgICAgIHVuZ3JvdXAoKQ0KYGBgDQoNCiMjIEVkYWQNCg0KIyMgU2V4byB5IGVkYWQNCg0KYGBge3IgUmVzdW1lbiBwb3Igc2V4byB5IGVkYWR9DQphY3VlcmRvICU+JSANCiAgICAgICAgZmlsdGVyKG1vbWVudG8gPT0gMSkgJT4lIA0KICAgICAgICBncm91cF9ieShzZXhvKSAlPiUgDQogICAgICAgIHN1bW1hcmlzZV9lYWNoKGZ1bnMoIlByb21lZGlvIGVkYWQiID0gbWVhbiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlc3ZpYWNpw7NuIGVzdMOhbmRhciBlZGFkIiA9IHNkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG49IG4oKSksDQogICAgICAgICAgICAgICAgICAgICAgIGVkYWQpICU+JSANCiAgICAgICAgdW5ncm91cCgpDQpgYGANCg0KIyMgU2V4byB5IGVzcGVjaWFsaWRhZA0KDQpgYGB7ciBUYWJsYSByZXN1bWVuIGRlc2NyaXB0aXZhIHBvciBlc3BlY2lhbGlkYWR9DQphY3VlcmRvICU+JSANCiAgICAgICAgZmlsdGVyKG1vbWVudG8gPT0gMSkgJT4lIA0KICAgICAgICBncm91cF9ieShlc3BlY2lhbGlkYWQpICU+JSANCiAgICAgICAgc3VtbWFyaXNlKCBuPW4oKSwgDQogICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIlNleG8gbWFzY3VsaW5vIiA9IHN1bShzZXhvPT0iSG9tYnJlIiksIA0KICAgICAgICAgICAgICAgICAgICJTZXhvIGZlbWVuaW5vIiA9IHN1bShzZXhvPT0iTXVqZXIiKSwNCiAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAiRWRhZCBwcm9tZWRpbyIgICAgICAgID0gbWVhbihlZGFkKSwgDQogICAgICAgICAgICAgICAgICAgIkRlc3ZpYWNpw7NuIGVzdMOhbmRhciIgID0gc2QoZWRhZCksIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAiQWxvbmRyYXMiID0gc3VtKHRpcG8uc2VndW4uYW5pbWFsPT0iYWxvbmRyYSAiKSwgDQogICAgICAgICAgICAgICAgICAgIkNvbGlicmllcyIgPSBzdW0odGlwby5zZWd1bi5hbmltYWwgPT0gImNvbGlicmkiKSwgDQogICAgICAgICAgICAgICAgICAgIkJ1aG9zIiA9IHN1bSh0aXBvLnNlZ3VuLmFuaW1hbCA9PSAiYnVobyIpKSAlPiUgDQogICAgICAgIHVuZ3JvdXAoKQ0KYGBgDQoNCmBgYHtyIGRpZmVyZW5jaWEgcG9yIHNleG8geSB0aXBvIGFuaW1hbCB0YWJsYX0NCnRhYmxlKGFjdWVyZG8kc2V4bywgYWN1ZXJkbyR0aXBvLnNlZ3VuLmFuaW1hbCkvNA0KYGBgDQoNCg0KYGBge3IgZGlmZXJlbmNpYSBwb3Igc2V4byB5IHRpcG8gYW5pbWFsIHRlc3R9DQpjaGlzcS50ZXN0KHRhYmxlKGFjdWVyZG8kc2V4bywgYWN1ZXJkbyR0aXBvLnNlZ3VuLmFuaW1hbCkvNCkNCmBgYA0KDQpObyBoYXkgZGlmZXJlbmNpYXMgc2lnbmlmaWNhdGl2YXMgZW4gbGEgZGlzdHJpYnVjacOzbiBwb3Igc2V4byB5IHRpcG8gY2lyY2FkaWFubw0KDQpgYGB7ciBkZXNjcmlwY2nDs24gc2Vnw7puIHRpcG8gY2lyY2FkaWFub30NCmFjdWVyZG8gJT4lIA0KICAgICAgICBmaWx0ZXIobW9tZW50bz09MSkgJT4lIA0KICAgICAgICBncm91cF9ieSh0aXBvLnNlZ3VuLmFuaW1hbCkgJT4lIA0KICAgICAgICBzdW1tYXJpc2UoVG90YWwgPSBuKCksIA0KICAgICAgICAgICAgICAgICAgSG9tYnJlcyA9IHN1bShzZXhvPT0iSG9tYnJlIiksIA0KICAgICAgICAgICAgICAgICAgTXVqZXJlcyA9IHN1bShzZXhvPT0iTXVqZXIiKSwgDQogICAgICAgICAgICAgICAgICAiRWRhZCBwcm9tZWRpbyAoYcOxb3MpIiA9IG1lYW4oZWRhZCksIA0KICAgICAgICAgICAgICAgICAgIkRlc3ZpYWNpw7NuIGVzdMOhbmRhciAoYcOxb3MpIiA9IHNkKGVkYWQpKSAlPiUgDQogICAgICAgIA0KICAgICAgICB1bmdyb3VwKCkNCmBgYA0KDQojIEFjdWVyZG8gZGlhZ27Ds3N0aWNvDQoNCg0KIyMgwr9Dw7NtbyBlc3RhYmFuIHBvciBzZXNpw7NuPw0KYGBge3Igwr9Dw7NtbyBlc3RhYmFuIGVuIGNhZGEgc2VzacOzbj99DQphY3VlcmRvICU+JSANCiAgICAgICAgZ3JvdXBfYnkoZXN0YWRvX2NhbnNhbmNpbykgJT4lIA0KICAgICAgICBzdW1tYXJpc2UoIEFNID1zdW0oaG9yYXJpbyA9PSAiQU0iKSwgUE0gPSBzdW0oaG9yYXJpbyA9PSAiUE0iKSApICU+JSANCiAgICAgICAgdW5ncm91cCgpDQpgYGANCg0KYGBge3Igwr9Dw7NtbyBlc3RhYmFuIGVuIGNhZGEgc2VzacOzbj8gQU19DQphY3VlcmRvICU+JSANCiAgICAgICAgZ3JvdXBfYnkobm9tYnJlKSAlPiUNCiAgICAgICAgZmlsdGVyKGhvcmFyaW8gPT0gIkFNIikgJT4lIA0KICAgICAgICBzdW1tYXJpc2UoICJBbGVydGEgQU0iID0gc3VtKGVzdGFkbzIgPT0gImFsZXJ0YSIpLCAiQ2Fuc2FkbyBBTSIgPSBzdW0oZXN0YWRvMiA9PSAiY2Fuc2FkbyIpICkgJT4lIA0KICAgICAgICB1bmdyb3VwKCkNCiAgICAgICAgDQpgYGANCmBgYHtyIMK/Q8OzbW8gZXN0YWJhbiBlbiBjYWRhIHNlc2nDs24/IFBNfQ0KYWN1ZXJkbyAlPiUgDQogICAgICAgIGdyb3VwX2J5KG5vbWJyZSkgJT4lDQogICAgICAgIGZpbHRlcihob3JhcmlvID09ICJQTSIpICU+JSANCiAgICAgICAgc3VtbWFyaXNlKCAiQWxlcnRhIFBNIiA9IHN1bShlc3RhZG8yID09ICJhbGVydGEiKSwgIkNhbnNhZG8gUE0iID0gc3VtKGVzdGFkbzIgPT0gImNhbnNhZG8iKSApICU+JSANCiAgICAgICAgdW5ncm91cCgpDQogICAgICAgIA0KYGBgDQoNCiMjIEVuIGdlbmVyYWwsIMK/YWZlY3RhIGVsIGVzdGFkbyBkZSBjYW5zYW5jaW8gZWwgYWN1ZXJkbyBkaWFnbsOzc3RpY28/DQoNClByZXBhcm8gbG9zIGRhdG9zLCB0ZW5nbyBxdWUgcm90YXIgZWwgZGYNCmBgYHtyfQ0KYWN1ZXJkb3QgPC0gIHNldE5hbWVzKGRhdGEuZnJhbWUodChhY3VlcmRvWywtMV0pKSwgYWN1ZXJkb1ssMV0pDQp3cml0ZS5jc3YoYWN1ZXJkb3QsICJhY3VlcmRvdC5jc3YiKQ0KDQpgYGANCg0KIyMgUGFyYSBrYXBwYQ0KDQpBcGxpY28gTE8sIGNvbnZpZXJ0byBhY3VlcmRvdCBlbiBwYXJha2FwcGENCg0KYGBge3J9DQpwYXJha2FwcGEgPC0gcmVhZC5jc3YoInBhcmFrYXBwYV9maW5hbC5jc3YiLCBoZWFkZXIgPSBULCBzZXAgPSAiOyIpICNhZ3JlZ28gZWwgcXVlIHNlIHN1cG9uZSBlc3TDoSBPSw0KDQpgYGANCg0KDQpgYGB7ciBDYWxjdWxvIGxvcyBrYXBwYSBwb3IgZXhhbWluYWRvciBhbGVydGEgdnMgY2Fuc2Fkb30NCmNvbG5hbWVzKHBhcmFrYXBwYSkgI3ZlbyBsb3Mgbm9tYnJlcyBkZSBsYXMgY29sdW1uYXMuIFNlIGRlYmVuIGNvbXBhcmFyIGlndWFsZXMgbm9tYnJlcywgaWd1YWxlcyBSWCwgZGlzdGludG9zIG1vbWVudG9zLCBkaXN0aW50b3MgZXN0YWRvMg0KYGBgDQoNCg0KIyBLYXBwYXMNCiMjIENvbiBjYW1iaW8gYWxlcnRhLWNhbnNhZG8NCiMjIyBBTw0KYGBge3IgQU99DQpBTyA8LSBwYXJha2FwcGEgJT4lIA0KICAgICAgICBzZWxlY3QoQU8uTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX0hvbWJyZS5UaXBvX2NvbGlicmkuRXN0YWRvX2NhbnNhZG8sIA0KICAgICAgICAgICAgICAgQU8uTW9tZW50b18zLkdydXBvUnhfQi5TZXhvX0hvbWJyZS5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSkNCmBgYA0KDQoNCmBgYHtyIEFPIGthcHBhfQ0Ka2FwcGEyKEFPLCAic3F1YXJlZCIpDQpgYGANCg0KYGBge3IgQU8gY2F0ZWdvcmlhc30NCmthcHBhbS5mbGVpc3MoQU8sICBkZXRhaWwgID0gVCkNCmBgYA0KDQoNCiMjIyBDYXJsYQ0KDQpgYGB7ciBDYXJsYX0NCkNhcmxhIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChDYXJsYS5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbywgDQogICAgICAgICAgICAgICBDYXJsYS5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fYWxlcnRhKQ0Ka2FwcGEyKENhcmxhLCAic3F1YXJlZCIpDQpgYGANCmBgYHtyIENhdGVnb3JpYXMgQ2FybGF9DQprYXBwYW0uZmxlaXNzKENhcmxhLCAgZGV0YWlsICA9IFQpDQpgYGANCg0KIyMjIENQDQoNCmBgYHtyIENQfQ0KQ1AgPC0gcGFyYWthcHBhICU+JSANCiAgICAgICAgc2VsZWN0KENQLk1vbWVudG9fMi5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19jYW5zYWRvLCANCiAgICAgICAgICAgICAgIENQLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19hbGVydGEpDQprYXBwYTIoQ1AsICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBDUH0NCmthcHBhbS5mbGVpc3MoQ1AsICBkZXRhaWwgID0gVCkNCmBgYA0KDQoNCiMjIyBDU0YNCg0KYGBge3IgQ1NGfQ0KQ1NGIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChDU0YuTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX0hvbWJyZS5UaXBvX2J1aG8uRXN0YWRvX2NhbnNhZG8sIA0KICAgICAgICAgICAgICAgQ1NGLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19Ib21icmUuVGlwb19idWhvLkVzdGFkb19hbGVydGEpDQprYXBwYTIoQ1AsICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBDU0Z9DQprYXBwYW0uZmxlaXNzKENTRiwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCiMjIyBEYW5pZWxhDQoNCmBgYHtyIERhbmllbGF9DQpEYW5pZWxhIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChEYW5pZWxhLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2NhbnNhZG8sIA0KICAgICAgICAgICAgICAgRGFuaWVsYS5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19jb2xpYnJpLkVzdGFkb19hbGVydGEpDQprYXBwYTIoRGFuaWVsYSwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIERhbmllbGF9DQprYXBwYW0uZmxlaXNzKERhbmllbGEsICBkZXRhaWwgID0gVCkNCmBgYA0KDQojIyMgSUcgMQ0KDQpgYGB7ciBJRyAxfQ0KSUcxIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChJRy4uTW9tZW50b18xLkdydXBvUnhfQS5TZXhvX0hvbWJyZS5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwgDQogICAgICAgICAgICAgICBJRy4uTW9tZW50b180LkdydXBvUnhfQS5TZXhvX0hvbWJyZS5UaXBvX2NvbGlicmkuRXN0YWRvX2NhbnNhZG8pDQprYXBwYTIoSUcxLCAic3F1YXJlZCIpDQpgYGANCmBgYHtyIENhdGVnb3JpYXMgSUcxfQ0Ka2FwcGFtLmZsZWlzcyhJRzEsICBkZXRhaWwgID0gVCkNCmBgYA0KDQojIyMgSUcgMg0KDQpgYGB7ciBJRyAyfQ0KSUcyIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChJRy4uTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX0hvbWJyZS5UaXBvX2NvbGlicmkuRXN0YWRvX2NhbnNhZG8sIA0KICAgICAgICAgICAgICAgSUcuLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19Ib21icmUuVGlwb19jb2xpYnJpLkVzdGFkb19hbGVydGEpDQprYXBwYTIoSUcyLCAic3F1YXJlZCIpDQpgYGANCmBgYHtyIENhdGVnb3JpYXMgSUcyfQ0Ka2FwcGFtLmZsZWlzcyhJRzIsICBkZXRhaWwgID0gVCkNCmBgYA0KDQojIyMgTUYxDQoNCmBgYHtyIE1GMX0NCk1GMSA8LSBwYXJha2FwcGEgJT4lIA0KICAgICAgICBzZWxlY3QoTUYuTW9tZW50b18xLkdydXBvUnhfQS5TZXhvX0hvbWJyZS5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwNCiAgICAgICAgICAgICAgIE1GLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19Ib21icmUuVGlwb19jb2xpYnJpLkVzdGFkb19jYW5zYWRvKQ0Ka2FwcGEyKE1GMSwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIE1GMX0NCmthcHBhbS5mbGVpc3MoTUYxLCAgZGV0YWlsICA9IFQpDQpgYGANCiMjIyBNRjINCg0KYGBge3IgTUYyfQ0KTUYyIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChNRi5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgDQogICAgICAgICAgICAgICBNRi5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhKQ0Ka2FwcGEyKE1GMiwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIE1GMn0NCmthcHBhbS5mbGVpc3MoTUYyLCAgZGV0YWlsICA9IFQpDQpgYGANCg0KDQojIyMgTVoxDQpgYGB7ciBNWjF9DQpNWjEgPC0gcGFyYWthcHBhICU+JSANCiAgICAgICAgc2VsZWN0KE1aLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwgDQogICAgICAgICAgICAgICBNWi5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19jb2xpYnJpLkVzdGFkb19jYW5zYWRvKQ0Ka2FwcGEyKE1aMSwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIE1aMX0NCmthcHBhbS5mbGVpc3MoTVoxLCAgZGV0YWlsICA9IFQpDQpgYGANCg0KIyMjIE1aMg0KYGBge3IgTVoyfQ0KTVoyIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChNWi5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19jb2xpYnJpLkVzdGFkb19jYW5zYWRvLCANCiAgICAgICAgICAgICAgIE1aLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSkNCmthcHBhMihNWjIsICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBNWjJ9DQprYXBwYW0uZmxlaXNzKE1aMiwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCiMjIyBQYXVsaW5hDQoNCmBgYHtyIFBhdWxpbmF9DQpQYXVsaW5hIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChQYXVsaW5hLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19hbGVydGEsIA0KICAgICAgICAgICAgICAgUGF1bGluYS5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbykNCmthcHBhMihQYXVsaW5hLCAic3F1YXJlZCIpDQpgYGANCmBgYHtyIENhdGVnb3JpYXMgUGF1bGluYX0NCmthcHBhbS5mbGVpc3MoUGF1bGluYSwgIGRldGFpbCAgPSBUKQ0KYGBgDQojIyMgVkcxDQpgYGB7ciBWRzF9DQpWRzEgPC0gcGFyYWthcHBhICU+JSANCiAgICAgICAgc2VsZWN0KFZHLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwgDQogICAgICAgICAgICAgICBWRy5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19jb2xpYnJpLkVzdGFkb19jYW5zYWRvKQ0Ka2FwcGEyKFZHMSwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIFZHMX0NCmthcHBhbS5mbGVpc3MoVkcxLCAgZGV0YWlsICA9IFQpDQpgYGANCiMjIyBWRzINCmBgYHtyIFZHMn0NClZHMiA8LSBwYXJha2FwcGEgJT4lIA0KICAgICAgICBzZWxlY3QoVkcuTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgDQogICAgICAgICAgICAgICBWRy5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19jb2xpYnJpLkVzdGFkb19hbGVydGEpDQprYXBwYTIoVkcyLCAic3F1YXJlZCIpDQpgYGANCmBgYHtyIENhdGVnb3JpYXMgVkcyfQ0Ka2FwcGFtLmZsZWlzcyhWRzIsICBkZXRhaWwgID0gVCkNCmBgYA0KIyMjIFhTMQ0KYGBge3IgWFMxfQ0KWFMxIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChYUy5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fYWxlcnRhLCANCiAgICAgICAgICAgICAgIFhTLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19jYW5zYWRvKQ0Ka2FwcGEyKFhTMSwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIFhTMX0NCmthcHBhbS5mbGVpc3MoWFMxLCAgZGV0YWlsICA9IFQpDQpgYGANCg0KIyMjIFhTMg0KYGBge3IgWFMyfQ0KWFMyIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChYUy5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbywgDQogICAgICAgICAgICAgICBYUy5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fYWxlcnRhKQ0Ka2FwcGEyKFhTMiwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIFhTMn0NCmthcHBhbS5mbGVpc3MoWFMyLCAgZGV0YWlsICA9IFQpDQpgYGANCg0KIyMjIFhWDQpgYGB7ciBYVn0NClhWIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChYVi5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19jb2xpYnJpLkVzdGFkb19hbGVydGEsIA0KICAgICAgICAgICAgICAgWFYuTW9tZW50b180LkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbykNCmthcHBhMihYViwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIFhWfQ0Ka2FwcGFtLmZsZWlzcyhYViwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCg0KDQojIyBDYW5zYWRvcw0KIyMjIEFPIENhbnNhZG8NCmBgYHtyIEFPX2NhbnNhZG99DQpBT19jYW5zYWRvIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChBTy5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbywgDQogICAgICAgICAgICAgICBBTy5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fY29saWJyaS5Fc3RhZG9fY2Fuc2FkbykNCmthcHBhMihBT19jYW5zYWRvLCAic3F1YXJlZCIpDQpgYGANCmBgYHtyIENhdGVnb3JpYXMgQU9fY2Fuc2Fkb30NCmthcHBhbS5mbGVpc3MoQU9fY2Fuc2FkbywgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCg0KIyMjIENhcmxhIENhbnNhZG8NCmBgYHtyIENhcmxhX2NhbnNhZG99DQpDYXJsYV9jYW5zYWRvIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChDYXJsYS5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbywgDQogICAgICAgICAgICAgICBDYXJsYS5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbykNCmthcHBhMihDYXJsYV9jYW5zYWRvLCAic3F1YXJlZCIpDQoNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBDYXJsYV9jYW5zYWRvfQ0Ka2FwcGFtLmZsZWlzcyhDYXJsYV9jYW5zYWRvLCAgZGV0YWlsICA9IFQpDQpgYGANCg0KDQojIyMgUGF1bGluYSBDYW5zYWRvDQpgYGB7ciBQYXVsaW5hX2NhbnNhZG99DQpQYXVsaW5hX2NhbnNhZG8gPC0gcGFyYWthcHBhICU+JSANCiAgICAgICAgc2VsZWN0KFBhdWxpbmEuTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2NhbnNhZG8sIA0KICAgICAgICAgICAgICAgUGF1bGluYS5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fTXVqZXIuVGlwb19hbG9uZHJhLi5Fc3RhZG9fY2Fuc2FkbykNCmthcHBhMihQYXVsaW5hX2NhbnNhZG8sICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBQYXVsaW5hX2NhbnNhZG99DQprYXBwYW0uZmxlaXNzKFBhdWxpbmFfY2Fuc2FkbywgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCg0KIyMgQWxlcnRhcw0KDQojIyMgQ1AgQWxlcnRhDQpgYGB7ciBDUF9hbGVydGF9DQpDUF9hbGVydGEgPC0gcGFyYWthcHBhICU+JSANCiAgICAgICAgc2VsZWN0KENQLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19NdWplci5UaXBvX2Fsb25kcmEuLkVzdGFkb19hbGVydGEsIA0KICAgICAgICAgICAgICAgQ1AuTW9tZW50b180LkdydXBvUnhfQS5TZXhvX011amVyLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSkNCmthcHBhMihDUF9hbGVydGEsICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBDUF9hbGVydGF9DQprYXBwYW0uZmxlaXNzKENQX2FsZXJ0YSwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCiMjIyBDU0YgQWxlcnRhDQpgYGB7ciBDU0ZfYWxlcnRhfQ0KQ1NGX2FsZXJ0YSA8LSBwYXJha2FwcGEgJT4lIA0KICAgICAgICBzZWxlY3QoQ1NGLk1vbWVudG9fMS5HcnVwb1J4X0EuU2V4b19Ib21icmUuVGlwb19idWhvLkVzdGFkb19hbGVydGEsIA0KICAgICAgICAgICAgICAgQ1NGLk1vbWVudG9fNC5HcnVwb1J4X0EuU2V4b19Ib21icmUuVGlwb19idWhvLkVzdGFkb19hbGVydGEpDQprYXBwYTIoQ1NGX2FsZXJ0YSwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIENQX2FsZXJ0YSAxfQ0Ka2FwcGFtLmZsZWlzcyhDU0ZfYWxlcnRhLCAgZGV0YWlsICA9IFQpDQpgYGANCg0KIyMjIERhbmllbGEgQWxlcnRhDQpgYGB7ciBEYW5pZWxhX2FsZXJ0YX0NCkRhbmllbGFfYWxlcnRhIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChEYW5pZWxhLk1vbWVudG9fMi5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSwgDQogICAgICAgICAgICAgICBEYW5pZWxhLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSkNCmthcHBhMihEYW5pZWxhX2FsZXJ0YSwgInNxdWFyZWQiKQ0KYGBgDQpgYGB7ciBDYXRlZ29yaWFzIERhbmllbGFfYWxlcnRhfQ0Ka2FwcGFtLmZsZWlzcyhEYW5pZWxhX2FsZXJ0YSwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCiMjIyBSaWNhcmRvIEFsZXJ0YSAxDQpgYGB7ciBSaWNhcmRvX2FsZXJ0YSAxfQ0KUmljYXJkb19hbGVydGExIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChSaWNhcmRvLi5Nb21lbnRvXzEuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSwgDQogICAgICAgICAgICAgICBSaWNhcmRvLi5Nb21lbnRvXzQuR3J1cG9SeF9BLlNleG9fSG9tYnJlLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSkNCmthcHBhMihSaWNhcmRvX2FsZXJ0YTEsICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBSaWNhcmRvX2FsZXJ0YTF9DQprYXBwYW0uZmxlaXNzKFJpY2FyZG9fYWxlcnRhMSwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCiMjIyBSaWNhcmRvIEFsZXJ0YSAyDQpgYGB7ciBSaWNhcmRvX2FsZXJ0YSAyfQ0KUmljYXJkb19hbGVydGEyIDwtIHBhcmFrYXBwYSAlPiUgDQogICAgICAgIHNlbGVjdChSaWNhcmRvLi5Nb21lbnRvXzIuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSwgDQogICAgICAgICAgICAgICBSaWNhcmRvLi5Nb21lbnRvXzMuR3J1cG9SeF9CLlNleG9fSG9tYnJlLlRpcG9fYWxvbmRyYS4uRXN0YWRvX2FsZXJ0YSkNCmthcHBhMihSaWNhcmRvX2FsZXJ0YTIsICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBSaWNhcmRvX2FsZXJ0YTJ9DQprYXBwYW0uZmxlaXNzKFJpY2FyZG9fYWxlcnRhMiwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCiMjIyBYViBBbGVydGENCmBgYHtyIFhWX2FsZXJ0YX0NClhWX2FsZXJ0YSA8LSBwYXJha2FwcGEgJT4lIA0KICAgICAgICBzZWxlY3QoWFYuTW9tZW50b18yLkdydXBvUnhfQi5TZXhvX011amVyLlRpcG9fY29saWJyaS5Fc3RhZG9fYWxlcnRhLCANCiAgICAgICAgICAgICAgIFhWLk1vbWVudG9fMy5HcnVwb1J4X0IuU2V4b19NdWplci5UaXBvX2NvbGlicmkuRXN0YWRvX2FsZXJ0YSkNCmthcHBhMihYVl9hbGVydGEsICJzcXVhcmVkIikNCmBgYA0KYGBge3IgQ2F0ZWdvcmlhcyBYVl9hbGVydGF9DQprYXBwYW0uZmxlaXNzKFhWX2FsZXJ0YSwgIGRldGFpbCAgPSBUKQ0KYGBgDQoNCg0KIyBDaXRhIHBhcXVldGVzDQpgYGB7cn0NCmNpdGF0aW9uKHBhY2thZ2UgPSAiZHBseXIiLCBsaWIubG9jID0gTlVMTCkNCmBgYA0KYGBge3J9DQpjaXRhdGlvbihwYWNrYWdlID0gInRpZHlyIiwgbGliLmxvYyA9IE5VTEwpDQpgYGANCmBgYHtyfQ0KY2l0YXRpb24ocGFja2FnZSA9ICJpcnIiLCBsaWIubG9jID0gTlVMTCkNCmBgYA0K