Objetivos

OBJETIVO GENERAL

Determinar los factores que intervienen en el pronóstico de sobrevida pulpar de dientes permanentes con desarrollo radicular incompleto que sufren algún tipo de fractura
coronaria.

OBJETIVOS ESPECÍFICOS

  • Determinar si la presencia de malos hábitos, traumatismos repetidos y control inadecuado de la higiene (por sí solos o asociados) influyen en el pronóstico de sobrevida pulpar de dientes permanentes con desarrollo radicular incompleto que sufren fracturas coronarias.
  • Obtener un orden de relevancia de los factores que intervienen en el pronóstico de sobrevida de dientes permanentes con desarrollo radicular incompleto que sufren fracturas coronarias.
  • Generar un protocolo de abordaje de dientes permanentes con desarrollo radicular incompleto que sufren fracturas coronarias.

Paquetes

Paquetes específicos

Dataset

df <- read_csv(sprintf("https://docs.google.com/spreadsheets/d/e/2PACX-1vSHQ17f-felEDBHEx2uz0Jjst-_z6wHTfB7hSFHD1iX8XWwd6GYTOYBo5F8DXjLGdxpTk9BqUt_M0lG/pub?gid=1995037555&single=true&output=csv"))
Parsed with column specification:
cols(
  `Marca temporal` = col_character(),
  HC = col_integer(),
  `ID (n戼㹡 registro)` = col_integer(),
  G挼㸹NERO = col_character(),
  `FECHA DE NACIMIENTO` = col_character(),
  `DIENTE AFECTADO` = col_integer(),
  DIAGN搼㸳STICO = col_character(),
  `SOBREVIDA PULPAR` = col_character(),
  TRATAMIENTO = col_character(),
  `TIEMPO HASTA LA ATENCI搼㸳N (en horas)` = col_character(),
  `FECHA TRAUMATISMO` = col_character(),
  `FECHA SOBREVIDA` = col_character(),
  `ESTADO RADICULAR INICIAL` = col_character(),
  `TRAUMATISMO REPETIDO` = col_character(),
  `TRAUMATISMO PREVIO` = col_character(),
  `INDICACI搼㸳N DE HIGIENE` = col_character(),
  `EVALUACI搼㸳N DE HIGIENE` = col_character(),
  `ONICOFAGIA - INTERPOSICI搼㸳N DE OBJETOS` = col_character(),
  Evento = col_character()
)
glimpse(df) 
Observations: 108
Variables: 19
$ Marca temporal                        <chr> ...
$ HC                                    <int> ...
$ ID (nº registro)                      <int> ...
$ GÉNERO                                <chr> ...
$ FECHA DE NACIMIENTO                   <chr> ...
$ DIENTE AFECTADO                       <int> ...
$ DIAGNÓSTICO                           <chr> ...
$ SOBREVIDA PULPAR                      <chr> ...
$ TRATAMIENTO                           <chr> ...
$ TIEMPO HASTA LA ATENCIÓN (en horas)   <chr> ...
$ FECHA TRAUMATISMO                     <chr> ...
$ FECHA SOBREVIDA                       <chr> ...
$ ESTADO RADICULAR INICIAL              <chr> ...
$ TRAUMATISMO REPETIDO                  <chr> ...
$ TRAUMATISMO PREVIO                    <chr> ...
$ INDICACIÓN DE HIGIENE                 <chr> ...
$ EVALUACIÓN DE HIGIENE                 <chr> ...
$ ONICOFAGIA - INTERPOSICIÓN DE OBJETOS <chr> ...
$ Evento                                <chr> ...

Data manipulation

Creo una nueva variable: status

Pronóstico pulpar: Variable dependiente. Evaluado con radiografía periapical. - Buen pronóstico: (PS) sobrevivencia de la Pulpa
- Sin cambio radiográfico, signos clínicos de vitalidad pulpar. - PCO: obliteración del conducto pulpar. - Detención del crecimiento radicular, conducto pulpar normal, longitud
radicular disminuida en comparación con el homólogo.

  • Mal pronóstico: (PN) necrosis pulpar, observando amplitud del conducto radicular, espesor disminuido de paredes radiculares con o sin lesión apical - Desarrollo radicular completo, con tratamiento de endodoncia. - Detención del crecimiento radicular, con tratamiento de endodoncia.

Entonces

Sobrevida si - PCO - Detención crecimiento radicular, pulpa vital - Sin cambio rx

Sobrevida no - Desarrollo Radicular completo, con endodoncia - Detención crecimiento radicular, con endodoncia

Variables importantes

  • tiempo
  • evento
  • independientes

Tiempo

cambio las fechas a aaaa/mm/dd y calculo la diferencia en años

df <- df %>% 
  mutate(
    `FECHA TRAUMATISMO` = dmy(`FECHA TRAUMATISMO`), 
    `FECHA SOBREVIDA` = dmy(`FECHA SOBREVIDA`), 
    `FECHA DE NACIMIENTO` = dmy(`FECHA DE NACIMIENTO`)
  )
# creo time y edad
df <- df %>% 
  mutate(
    time = difftime(`FECHA SOBREVIDA`, `FECHA TRAUMATISMO`, units = "weeks") / 52.25, 
    edad =  difftime(`FECHA TRAUMATISMO`, `FECHA DE NACIMIENTO`, units = "weeks")/52.25 # edad en años
  )

Eventos

Creo una nueva variable que será el evento = 1 (si) en caso que haya algo negativo y no (0) en caso que no haya pasado nada malo

df <-  df %>% 
  mutate(
    Evento = case_when(
      `SOBREVIDA PULPAR` == "PCO" |
        `SOBREVIDA PULPAR` == "Detención crecimiento radicular, pulpa vital" |
        `SOBREVIDA PULPAR` == "Sin cambio rx" ~ 0, 
      TRUE ~ 1
    )
  )

Veo cuantos eventos hay

table(df$Evento)

 0  1 
74 34 

Dataset clean

CORREGIDO Hay dos valores negativos, mientras los elimino

which(df\(time > 0) df[df\)time < 0, ] # ubico a la que es menor df\(time df[df\)time < 1, ] df <- df[-c(65), ] # elimino la 65 mientras tanto VERIFICAR!!!!

which(df\(edad < 0) df[df\)edad < 1, ] # hay uno que tiene edad negativa, verificar, mientras lo saco del análisis df <- df[-c(77), ]

summary(df)
 Marca temporal           HC        
 Length:108         Min.   :  23.0  
 Class :character   1st Qu.: 357.0  
 Mode  :character   Median : 619.0  
                    Mean   : 816.7  
                    3rd Qu.:1210.8  
                    Max.   :2203.0  
 ID (nº registro)    GÉNERO         
 Min.   :  1.00   Length:108        
 1st Qu.: 27.75   Class :character  
 Median : 54.50   Mode  :character  
 Mean   : 54.63                     
 3rd Qu.: 81.25                     
 Max.   :108.00                     
 FECHA DE NACIMIENTO  DIENTE AFECTADO
 Min.   :1980-10-25   Min.   :11.0   
 1st Qu.:1985-09-22   1st Qu.:11.0   
 Median :1988-03-10   Median :21.0   
 Mean   :1990-02-20   Mean   :16.4   
 3rd Qu.:1993-04-04   3rd Qu.:21.0   
 Max.   :2005-07-20   Max.   :41.0   
 DIAGNÓSTICO        SOBREVIDA PULPAR  
 Length:108         Length:108        
 Class :character   Class :character  
 Mode  :character   Mode  :character  
                                      
                                      
                                      
 TRATAMIENTO       
 Length:108        
 Class :character  
 Mode  :character  
                   
                   
                   
 TIEMPO HASTA LA ATENCIÓN (en horas)
 Length:108                         
 Class :character                   
 Mode  :character                   
                                    
                                    
                                    
 FECHA TRAUMATISMO    FECHA SOBREVIDA     
 Min.   :1989-01-20   Min.   :1989-09-23  
 1st Qu.:1994-03-30   1st Qu.:1999-03-12  
 Median :1996-06-30   Median :2002-01-04  
 Mean   :1998-06-07   Mean   :2002-11-27  
 3rd Qu.:2001-07-02   3rd Qu.:2006-06-20  
 Max.   :2013-10-09   Max.   :2017-08-25  
 ESTADO RADICULAR INICIAL TRAUMATISMO REPETIDO
 Length:108               Length:108          
 Class :character         Class :character    
 Mode  :character         Mode  :character    
                                              
                                              
                                              
 TRAUMATISMO PREVIO INDICACIÓN DE HIGIENE
 Length:108         Length:108           
 Class :character   Class :character     
 Mode  :character   Mode  :character     
                                         
                                         
                                         
 EVALUACIÓN DE HIGIENE
 Length:108           
 Class :character     
 Mode  :character     
                      
                      
                      
 ONICOFAGIA - INTERPOSICIÓN DE OBJETOS
 Length:108                           
 Class :character                     
 Mode  :character                     
                                      
                                      
                                      
     Evento           time         
 Min.   :0.0000   Length:108       
 1st Qu.:0.0000   Class :difftime  
 Median :0.0000   Mode  :numeric   
 Mean   :0.3148                    
 3rd Qu.:1.0000                    
 Max.   :1.0000                    
     edad         
 Length:108       
 Class :difftime  
 Mode  :numeric   
                  
                  
                  

Survival analysis

Creo el objeto estándar de sobrevida

km <-  with(df, Surv(time, Evento == 1))
head(km, 50)
 [1]  9.77443609  14.92822967+  2.57006152 
 [4]  8.41285031+  8.41285031+  8.40191388+
 [7]  0.06561859   6.69036227   6.69036227+
[10]  8.01913876+  0.68899522   0.71907040 
[13]  1.41353383   8.91592618   0.13943951 
[16]  0.13943951   1.77990431+  2.64388243+
[19]  8.60970608+  8.60970608   8.37183869+
[22]  3.96992481   6.79699248+  0.44839371 
[25]  6.49077239+  6.04784689+ 14.05878332+
[28]  2.70676692+  8.07382092   2.68489405+
[31]  7.57074504+  0.11756664   0.17498291 
[34]  1.53383459   1.99589884+  0.17498291 
[37]  2.50991114   0.88038278+  4.71907040+
[40]  8.50307587  10.57826384+  7.37662338+
[43]  7.37662338+  9.41626794+ 12.07928913+
[46]  9.85919344   3.05946685+  0.73000684 
[49]  0.73000684+  1.99043062+

Análisis de Kaplan Meier

Ahora el análisis de KM

km_fit <- survfit(Surv(time, Evento) ~ 1, data = df)
summary(km_fit)
Call: survfit(formula = Surv(time, Evento) ~ 1, data = df)

   time n.risk n.event survival std.err
 0.0656    108       1    0.991 0.00922
 0.1176    107       1    0.981 0.01297
 0.1394    106       2    0.963 0.01817
 0.1750    104       2    0.944 0.02204
 0.2925    102       1    0.935 0.02369
 0.3964    101       1    0.926 0.02520
 0.3992    100       2    0.907 0.02789
 0.4484     98       1    0.898 0.02910
 0.6890     97       1    0.889 0.03024
 0.7191     96       1    0.880 0.03131
 0.7300     95       1    0.870 0.03232
 1.1839     90       1    0.861 0.03338
 1.3342     89       1    0.851 0.03438
 1.4135     88       1    0.841 0.03532
 1.5338     87       1    0.832 0.03621
 1.8127     84       1    0.822 0.03711
 1.8346     83       1    0.812 0.03796
 2.5099     73       1    0.801 0.03904
 2.5701     71       1    0.789 0.04008
 2.8872     64       1    0.777 0.04131
 3.7867     53       1    0.762 0.04306
 3.9699     52       1    0.748 0.04465
 4.2433     51       1    0.733 0.04612
 4.6124     48       1    0.718 0.04762
 6.6904     27       1    0.691 0.05276
 8.0738     20       1    0.657 0.06039
 8.5031     14       1    0.610 0.07203
 8.6097     13       1    0.563 0.08032
 8.9159     10       1    0.507 0.08988
 9.7744      7       1    0.434 0.10210
 9.8592      6       1    0.362 0.10772
 lower 95% CI upper 95% CI
        0.973        1.000
        0.956        1.000
        0.928        0.999
        0.902        0.989
        0.890        0.983
        0.878        0.977
        0.854        0.964
        0.843        0.957
        0.832        0.950
        0.820        0.943
        0.809        0.936
        0.798        0.929
        0.786        0.921
        0.775        0.914
        0.764        0.906
        0.752        0.898
        0.741        0.890
        0.728        0.881
        0.715        0.872
        0.700        0.862
        0.683        0.852
        0.665        0.841
        0.648        0.829
        0.630        0.818
        0.595        0.803
        0.548        0.786
        0.484        0.769
        0.426        0.745
        0.358        0.717
        0.274        0.688
        0.202        0.649

Estos datos se leen de la siguiente manera:

  • en la columna time aparece el tiempo. Este es el eje X del gráfico;
  • en n.risk el n de individuos en riesgo;
  • en n.event la cantidad de eventos en ese período;
  • en survival la función de sobrevida. Corresponde al eje Y del gráfico;
  • luego el error std y los intervalos de confianza, que aparecen marcados en tono gris.
km_fit
Call: survfit(formula = Surv(time, Evento) ~ 1, data = df)

      n  events  median 0.95LCL 0.95UCL 
 108.00   34.00    9.77    8.50      NA 
autoplot(km_fit, 
         main = "Análisis de sobrevida Kaplan Meier para estado pulpar",
         xlab = "Años", ylab = "Probabilidad de sobrevida")

Ahora examino por algunas variables: sexo, dgo del trauma

autoplot(
  survfit(Surv(time, Evento) ~ GÉNERO, data = df), 
         main = "Análisis de sobrevida Kaplan Meier para estado pulpar por sexo",
         xlab = "Años", ylab = "Probabilidad de sobrevida"
)

autoplot(
  survfit(Surv(time, Evento) ~ DIAGNÓSTICO, data = df), 
          main = "Análisis de sobrevida Kaplan Meier para estado pulpar por tipo de trauma",
         xlab = "Años", ylab = "Probabilidad de sobrevida"
)

Análisis de Cox

El propósito del modelo de Cox es evaluar simultáneamente el efecto de varios factores en la supervivencia. Nos permite examinar cómo diversos influyen en la tasa de un evento en particular que ocurre (por ejemplo, infección, muerte) en un momento particular. Esta tasa se conoce comúnmente como la tasa de riesgo (hazard rate). Las variables (o factores) del predictor generalmente se denominan covariables en la literatura de análisis de supervivencia.

h(t)=h0(t)×exp(b1x1+b2x2+…+bpxp) h(t)=h0(t)×exp(b1x1+b2x2+…+bpxp)

donde,

  • t representa el tiempo de supervivencia
  • h (t) h (t) es la función de riesgo determinada por un conjunto de covariables p (x1, x2, …, xpx1, x2, …, xp)
  • los coeficientes (b1, b2, …, bpb1, b2, …, bp) miden el impacto (es decir, el tamaño del efecto) de las covariables. el término h0h0 se llama riesgo de referencia. Corresponde al valor del peligro si todos los xixi son iguales a cero (la cantidad exp (0) es igual a 1). La ‘t’ en h (t) nos recuerda que el peligro puede variar con el tiempo.

El modelo de Cox se puede escribir como una regresión lineal múltiple del logaritmo del peligro en las variables xixi, con el riesgo de la línea de base como un término de “intercepción” que varía con el tiempo.

Las cantidades exp (bi) exp (bi) se denominan relaciones de riesgo (HR). Un valor de bibi mayor que cero, o equivalente a una razón de riesgo mayor que uno, indica que a medida que el valor de la novena covariable aumenta, el riesgo de evento aumenta y, por lo tanto, la duración de la supervivencia disminuye.

Dicho de otra manera, una razón de riesgo superior a 1 indica una covariable que está asociada positivamente con la probabilidad del evento y, por lo tanto, está asociada negativamente con la duración de la supervivencia.

En resumen,

HR = 1: sin efecto HR < 1: reducción en el riesgo HR > 1: aumento de riesgo

res.cox1 <- coxph(km ~ 
                    edad + 
                    `DIENTE AFECTADO` +
                    GÉNERO + 
                    DIAGNÓSTICO + 
                    `TRAUMATISMO REPETIDO` +
                    `TRAUMATISMO PREVIO`,
                  data =  df)

Chequeo por si se viola el riesgo proporcional (constante HR en el tiempo)

(res.zph1 <- cox.zph(res.cox1))
                                  rho    chisq
edad                         -0.26980 3.431390
`DIENTE AFECTADO`             0.00184 0.000177
GÉNEROMasculino              -0.03750 0.055658
DIAGNÓSTICOFCC sin luxación   0.20893 1.499966
DIAGNÓSTICOFCNC con luxación  0.19221 1.276341
DIAGNÓSTICOFCNC sin luxación  0.03855 0.045209
`TRAUMATISMO REPETIDO`Sí      0.11051 0.329815
`TRAUMATISMO PREVIO`Sí        0.11120 0.417748
GLOBAL                             NA 7.366362
                                 p
edad                         0.064
`DIENTE AFECTADO`            0.989
GÉNEROMasculino              0.813
DIAGNÓSTICOFCC sin luxación  0.221
DIAGNÓSTICOFCNC con luxación 0.259
DIAGNÓSTICOFCNC sin luxación 0.832
`TRAUMATISMO REPETIDO`Sí     0.566
`TRAUMATISMO PREVIO`Sí       0.518
GLOBAL                       0.498

No se viola, así que estamos OK

Ahora examino con detalle el modelo de Cox

summary(res.cox1)
Call:
coxph(formula = km ~ edad + `DIENTE AFECTADO` + GÉNERO + DIAGNÓSTICO + 
    `TRAUMATISMO REPETIDO` + `TRAUMATISMO PREVIO`, data = df)

  n= 108, number of events= 34 

                                  coef exp(coef)
edad                          0.542249  1.719871
`DIENTE AFECTADO`            -0.004768  0.995243
GÉNEROMasculino              -0.081422  0.921805
DIAGNÓSTICOFCC sin luxación  -0.967353  0.380088
DIAGNÓSTICOFCNC con luxación -0.956695  0.384160
DIAGNÓSTICOFCNC sin luxación -2.907483  0.054613
`TRAUMATISMO REPETIDO`Sí      0.248996  1.282737
`TRAUMATISMO PREVIO`Sí       -0.796490  0.450909
                              se(coef)      z
edad                          0.203712  2.662
`DIENTE AFECTADO`             0.033745 -0.141
GÉNEROMasculino               0.397472 -0.205
DIAGNÓSTICOFCC sin luxación   0.611798 -1.581
DIAGNÓSTICOFCNC con luxación  0.562198 -1.702
DIAGNÓSTICOFCNC sin luxación  0.755446 -3.849
`TRAUMATISMO REPETIDO`Sí      0.397934  0.626
`TRAUMATISMO PREVIO`Sí        0.540729 -1.473
                             Pr(>|z|)    
edad                         0.007771 ** 
`DIENTE AFECTADO`            0.887629    
GÉNEROMasculino              0.837690    
DIAGNÓSTICOFCC sin luxación  0.113841    
DIAGNÓSTICOFCNC con luxación 0.088811 .  
DIAGNÓSTICOFCNC sin luxación 0.000119 ***
`TRAUMATISMO REPETIDO`Sí     0.531497    
`TRAUMATISMO PREVIO`Sí       0.140753    
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                             exp(coef) exp(-coef)
edad                           1.71987     0.5814
`DIENTE AFECTADO`              0.99524     1.0048
GÉNEROMasculino                0.92180     1.0848
DIAGNÓSTICOFCC sin luxación    0.38009     2.6310
DIAGNÓSTICOFCNC con luxación   0.38416     2.6031
DIAGNÓSTICOFCNC sin luxación   0.05461    18.3106
`TRAUMATISMO REPETIDO`Sí       1.28274     0.7796
`TRAUMATISMO PREVIO`Sí         0.45091     2.2177
                             lower .95 upper .95
edad                           1.15371    2.5639
`DIENTE AFECTADO`              0.93155    1.0633
GÉNEROMasculino                0.42297    2.0089
DIAGNÓSTICOFCC sin luxación    0.11458    1.2608
DIAGNÓSTICOFCNC con luxación   0.12763    1.1563
DIAGNÓSTICOFCNC sin luxación   0.01242    0.2401
`TRAUMATISMO REPETIDO`Sí       0.58805    2.7981
`TRAUMATISMO PREVIO`Sí         0.15625    1.3012

Concordance= 0.762  (se = 0.056 )
Rsquare= 0.212   (max possible= 0.922 )
Likelihood ratio test= 25.73  on 8 df,   p=0.001169
Wald test            = 21.14  on 8 df,   p=0.00678
Score (logrank) test = 25.24  on 8 df,   p=0.001417

Esto se lee de la siguiente manera

individuos que tienen más edad tienen más probabilidad (0.4841) de tener el evento, mientras que ser sexo masculino disminuye el riesgo (-0.0337) de tener el evento.

¿Cuanto?

UN aumento de Edad aumenta un 62% el riesgo de tener el evento, con un ic95% entre 05% y 149% (restale uno a los coeficientes)

cox_fit <- survfit(res.cox1)
autoplot(cox_fit)

aa_fit <-aareg(Surv(time, Evento) ~ 
                 `DIENTE AFECTADO` +
                    GÉNERO + 
                    DIAGNÓSTICO + 
                    `TRAUMATISMO REPETIDO` +
                    df$`TRAUMATISMO PREVIO`,
                  data =  df)
autoplot(aa_fit)

TODOS

modelo_0 <- coxph(km ~ 
                    df$GÉNERO + 
                    df$`DIENTE AFECTADO` +
                    df$DIAGNÓSTICO + 
                    df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                    df$`ESTADO RADICULAR INICIAL` + 
                    df$`TRAUMATISMO REPETIDO` + 
                    df$`TRAUMATISMO PREVIO` + 
                    df$`INDICACIÓN DE HIGIENE` + 
                    df$`EVALUACIÓN DE HIGIENE` + 
                    df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
Loglik converged before variable  7,8,9,10,11,12,13,14,18 ; beta may be infinite. 
summary(modelo_0)
Call:
coxph(formula = km ~ df$GÉNERO + df$`DIENTE AFECTADO` + df$DIAGNÓSTICO + 
    df$TRATAMIENTO + df$`ESTADO RADICULAR INICIAL` + df$`TRAUMATISMO REPETIDO` + 
    df$`TRAUMATISMO PREVIO` + df$`INDICACIÓN DE HIGIENE` + df$`EVALUACIÓN DE HIGIENE` + 
    df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`, data = df)

  n= 106, number of events= 34 
   (2 observations deleted due to missingness)

                                                                   coef
df$GÉNEROMasculino                                            1.198e+00
df$`DIENTE AFECTADO`                                         -5.183e-02
df$DIAGNÓSTICOFCC sin luxación                               -2.077e+00
df$DIAGNÓSTICOFCNC con luxación                              -2.038e+00
df$DIAGNÓSTICOFCNC sin luxación                              -4.238e+00
df$TRATAMIENTOPulido de Fractura                             -9.498e-01
df$TRATAMIENTOPulpectomía                                     1.934e+01
df$TRATAMIENTOPulpotomía parcial                              1.607e+01
df$TRATAMIENTORecubrimiento directo                           1.646e+01
df$TRATAMIENTOReposición de fragmento                         1.699e+01
df$TRATAMIENTORestauración de composite                       1.712e+01
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 1.972e+01
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    2.015e+01
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  2.001e+01
df$`TRAUMATISMO REPETIDO`Sí                                   3.781e-02
df$`TRAUMATISMO PREVIO`Sí                                    -1.212e+00
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica      6.692e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión          -1.909e+01
df$`INDICACIÓN DE HIGIENE`Todos los controles                -1.092e+00
df$`EVALUACIÓN DE HIGIENE`Mala                                1.397e+00
df$`EVALUACIÓN DE HIGIENE`Regular                            -4.636e-01
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  6.464e-01
                                                              exp(coef)
df$GÉNEROMasculino                                            3.314e+00
df$`DIENTE AFECTADO`                                          9.495e-01
df$DIAGNÓSTICOFCC sin luxación                                1.254e-01
df$DIAGNÓSTICOFCNC con luxación                               1.303e-01
df$DIAGNÓSTICOFCNC sin luxación                               1.444e-02
df$TRATAMIENTOPulido de Fractura                              3.868e-01
df$TRATAMIENTOPulpectomía                                     2.513e+08
df$TRATAMIENTOPulpotomía parcial                              9.485e+06
df$TRATAMIENTORecubrimiento directo                           1.401e+07
df$TRATAMIENTOReposición de fragmento                         2.390e+07
df$TRATAMIENTORestauración de composite                       2.711e+07
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 3.674e+08
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    5.647e+08
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  4.912e+08
df$`TRAUMATISMO REPETIDO`Sí                                   1.039e+00
df$`TRAUMATISMO PREVIO`Sí                                     2.975e-01
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica      1.953e+00
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión           5.098e-09
df$`INDICACIÓN DE HIGIENE`Todos los controles                 3.355e-01
df$`EVALUACIÓN DE HIGIENE`Mala                                4.042e+00
df$`EVALUACIÓN DE HIGIENE`Regular                             6.290e-01
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  1.909e+00
                                                               se(coef)
df$GÉNEROMasculino                                            5.987e-01
df$`DIENTE AFECTADO`                                          3.380e-02
df$DIAGNÓSTICOFCC sin luxación                                1.039e+00
df$DIAGNÓSTICOFCNC con luxación                               1.217e+00
df$DIAGNÓSTICOFCNC sin luxación                               1.328e+00
df$TRATAMIENTOPulido de Fractura                              2.993e+04
df$TRATAMIENTOPulpectomía                                     1.078e+04
df$TRATAMIENTOPulpotomía parcial                              1.078e+04
df$TRATAMIENTORecubrimiento directo                           1.078e+04
df$TRATAMIENTOReposición de fragmento                         1.078e+04
df$TRATAMIENTORestauración de composite                       1.078e+04
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 1.524e+04
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    1.524e+04
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  1.524e+04
df$`TRAUMATISMO REPETIDO`Sí                                   5.253e-01
df$`TRAUMATISMO PREVIO`Sí                                     6.686e-01
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica      8.564e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión           9.833e+03
df$`INDICACIÓN DE HIGIENE`Todos los controles                 5.792e-01
df$`EVALUACIÓN DE HIGIENE`Mala                                7.398e-01
df$`EVALUACIÓN DE HIGIENE`Regular                             6.814e-01
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  5.862e-01
                                                                  z
df$GÉNEROMasculino                                            2.001
df$`DIENTE AFECTADO`                                         -1.533
df$DIAGNÓSTICOFCC sin luxación                               -1.999
df$DIAGNÓSTICOFCNC con luxación                              -1.674
df$DIAGNÓSTICOFCNC sin luxación                              -3.191
df$TRATAMIENTOPulido de Fractura                              0.000
df$TRATAMIENTOPulpectomía                                     0.002
df$TRATAMIENTOPulpotomía parcial                              0.001
df$TRATAMIENTORecubrimiento directo                           0.002
df$TRATAMIENTOReposición de fragmento                         0.002
df$TRATAMIENTORestauración de composite                       0.002
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 0.001
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    0.001
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  0.001
df$`TRAUMATISMO REPETIDO`Sí                                   0.072
df$`TRAUMATISMO PREVIO`Sí                                    -1.813
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica      0.781
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión          -0.002
df$`INDICACIÓN DE HIGIENE`Todos los controles                -1.886
df$`EVALUACIÓN DE HIGIENE`Mala                                1.888
df$`EVALUACIÓN DE HIGIENE`Regular                            -0.680
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  1.103
                                                             Pr(>|z|)
df$GÉNEROMasculino                                            0.04537
df$`DIENTE AFECTADO`                                          0.12519
df$DIAGNÓSTICOFCC sin luxación                                0.04566
df$DIAGNÓSTICOFCNC con luxación                               0.09409
df$DIAGNÓSTICOFCNC sin luxación                               0.00142
df$TRATAMIENTOPulido de Fractura                              0.99997
df$TRATAMIENTOPulpectomía                                     0.99857
df$TRATAMIENTOPulpotomía parcial                              0.99881
df$TRATAMIENTORecubrimiento directo                           0.99878
df$TRATAMIENTOReposición de fragmento                         0.99874
df$TRATAMIENTORestauración de composite                       0.99873
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 0.99897
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    0.99894
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  0.99895
df$`TRAUMATISMO REPETIDO`Sí                                   0.94262
df$`TRAUMATISMO PREVIO`Sí                                     0.06983
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica      0.43453
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión           0.99845
df$`INDICACIÓN DE HIGIENE`Todos los controles                 0.05934
df$`EVALUACIÓN DE HIGIENE`Mala                                0.05902
df$`EVALUACIÓN DE HIGIENE`Regular                             0.49625
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  0.27011
                                                               
df$GÉNEROMasculino                                           * 
df$`DIENTE AFECTADO`                                           
df$DIAGNÓSTICOFCC sin luxación                               * 
df$DIAGNÓSTICOFCNC con luxación                              . 
df$DIAGNÓSTICOFCNC sin luxación                              **
df$TRATAMIENTOPulido de Fractura                               
df$TRATAMIENTOPulpectomía                                      
df$TRATAMIENTOPulpotomía parcial                               
df$TRATAMIENTORecubrimiento directo                            
df$TRATAMIENTOReposición de fragmento                          
df$TRATAMIENTORestauración de composite                        
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                  
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto     
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto   
df$`TRAUMATISMO REPETIDO`Sí                                    
df$`TRAUMATISMO PREVIO`Sí                                    . 
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica       
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión            
df$`INDICACIÓN DE HIGIENE`Todos los controles                . 
df$`EVALUACIÓN DE HIGIENE`Mala                               . 
df$`EVALUACIÓN DE HIGIENE`Regular                              
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                   
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                                             exp(coef)
df$GÉNEROMasculino                                           3.314e+00
df$`DIENTE AFECTADO`                                         9.495e-01
df$DIAGNÓSTICOFCC sin luxación                               1.254e-01
df$DIAGNÓSTICOFCNC con luxación                              1.303e-01
df$DIAGNÓSTICOFCNC sin luxación                              1.444e-02
df$TRATAMIENTOPulido de Fractura                             3.868e-01
df$TRATAMIENTOPulpectomía                                    2.513e+08
df$TRATAMIENTOPulpotomía parcial                             9.485e+06
df$TRATAMIENTORecubrimiento directo                          1.401e+07
df$TRATAMIENTOReposición de fragmento                        2.390e+07
df$TRATAMIENTORestauración de composite                      2.711e+07
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                3.674e+08
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   5.647e+08
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 4.912e+08
df$`TRAUMATISMO REPETIDO`Sí                                  1.039e+00
df$`TRAUMATISMO PREVIO`Sí                                    2.975e-01
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica     1.953e+00
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión          5.098e-09
df$`INDICACIÓN DE HIGIENE`Todos los controles                3.355e-01
df$`EVALUACIÓN DE HIGIENE`Mala                               4.042e+00
df$`EVALUACIÓN DE HIGIENE`Regular                            6.290e-01
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                 1.909e+00
                                                             exp(-coef)
df$GÉNEROMasculino                                            3.018e-01
df$`DIENTE AFECTADO`                                          1.053e+00
df$DIAGNÓSTICOFCC sin luxación                                7.977e+00
df$DIAGNÓSTICOFCNC con luxación                               7.672e+00
df$DIAGNÓSTICOFCNC sin luxación                               6.924e+01
df$TRATAMIENTOPulido de Fractura                              2.585e+00
df$TRATAMIENTOPulpectomía                                     3.979e-09
df$TRATAMIENTOPulpotomía parcial                              1.054e-07
df$TRATAMIENTORecubrimiento directo                           7.137e-08
df$TRATAMIENTOReposición de fragmento                         4.184e-08
df$TRATAMIENTORestauración de composite                       3.689e-08
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 2.722e-09
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    1.771e-09
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  2.036e-09
df$`TRAUMATISMO REPETIDO`Sí                                   9.629e-01
df$`TRAUMATISMO PREVIO`Sí                                     3.361e+00
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica      5.121e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión           1.962e+08
df$`INDICACIÓN DE HIGIENE`Todos los controles                 2.981e+00
df$`EVALUACIÓN DE HIGIENE`Mala                                2.474e-01
df$`EVALUACIÓN DE HIGIENE`Regular                             1.590e+00
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  5.239e-01
                                                             lower .95
df$GÉNEROMasculino                                             1.02498
df$`DIENTE AFECTADO`                                           0.88862
df$DIAGNÓSTICOFCC sin luxación                                 0.01636
df$DIAGNÓSTICOFCNC con luxación                                0.01200
df$DIAGNÓSTICOFCNC sin luxación                                0.00107
df$TRATAMIENTOPulido de Fractura                               0.00000
df$TRATAMIENTOPulpectomía                                      0.00000
df$TRATAMIENTOPulpotomía parcial                               0.00000
df$TRATAMIENTORecubrimiento directo                            0.00000
df$TRATAMIENTOReposición de fragmento                          0.00000
df$TRATAMIENTORestauración de composite                        0.00000
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                  0.00000
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto     0.00000
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto   0.00000
df$`TRAUMATISMO REPETIDO`Sí                                    0.37093
df$`TRAUMATISMO PREVIO`Sí                                      0.08025
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica       0.36450
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión            0.00000
df$`INDICACIÓN DE HIGIENE`Todos los controles                  0.10781
df$`EVALUACIÓN DE HIGIENE`Mala                                 0.94820
df$`EVALUACIÓN DE HIGIENE`Regular                              0.16545
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                   0.60505
                                                             upper .95
df$GÉNEROMasculino                                             10.7140
df$`DIENTE AFECTADO`                                            1.0145
df$DIAGNÓSTICOFCC sin luxación                                  0.9607
df$DIAGNÓSTICOFCNC con luxación                                 1.4159
df$DIAGNÓSTICOFCNC sin luxación                                 0.1949
df$TRATAMIENTOPulido de Fractura                                   Inf
df$TRATAMIENTOPulpectomía                                          Inf
df$TRATAMIENTOPulpotomía parcial                                   Inf
df$TRATAMIENTORecubrimiento directo                                Inf
df$TRATAMIENTOReposición de fragmento                              Inf
df$TRATAMIENTORestauración de composite                            Inf
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                      Inf
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto         Inf
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto       Inf
df$`TRAUMATISMO REPETIDO`Sí                                     2.9077
df$`TRAUMATISMO PREVIO`Sí                                       1.1032
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica       10.4611
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión                Inf
df$`INDICACIÓN DE HIGIENE`Todos los controles                   1.0440
df$`EVALUACIÓN DE HIGIENE`Mala                                 17.2296
df$`EVALUACIÓN DE HIGIENE`Regular                               2.3913
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                    6.0212

Concordance= 0.816  (se = 0.056 )
Rsquare= 0.448   (max possible= 0.924 )
Likelihood ratio test= 62.93  on 22 df,   p=8.16e-06
Wald test            = 47.67  on 22 df,   p=0.001198
Score (logrank) test = 106.8  on 22 df,   p=4.096e-13

TRAUMATISMO PREVIO

modelo 1

modelo 1.1 traumatismo repetido por si solo

modelo_1.1 <- coxph(km ~ 
                    # df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                    # df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                    # df$`ESTADO RADICULAR INICIAL` + 
                     df$`TRAUMATISMO REPETIDO`,
                    # df$`TRAUMATISMO PREVIO` + 
                    # df$`INDICACIÓN DE HIGIENE` + 
                    # df$`EVALUACIÓN DE HIGIENE` + 
                    #df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
summary(modelo_1.1)
Call:
coxph(formula = km ~ df$`TRAUMATISMO REPETIDO`, data = df)

  n= 108, number of events= 34 

                               coef exp(coef)
df$`TRAUMATISMO REPETIDO`Sí -0.2850    0.7520
                            se(coef)      z
df$`TRAUMATISMO REPETIDO`Sí   0.3503 -0.814
                            Pr(>|z|)
df$`TRAUMATISMO REPETIDO`Sí    0.416

                            exp(coef) exp(-coef)
df$`TRAUMATISMO REPETIDO`Sí     0.752       1.33
                            lower .95 upper .95
df$`TRAUMATISMO REPETIDO`Sí    0.3785     1.494

Concordance= 0.539  (se = 0.048 )
Rsquare= 0.006   (max possible= 0.922 )
Likelihood ratio test= 0.67  on 1 df,   p=0.4128
Wald test            = 0.66  on 1 df,   p=0.4159
Score (logrank) test = 0.67  on 1 df,   p=0.4143

modelo 1.2 traumatismo previo por si solo

modelo_1.2 <- coxph(km ~ 
                    # df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                    # df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                    # df$`ESTADO RADICULAR INICIAL` + 
                    #  df$`TRAUMATISMO REPETIDO`,
                     df$`TRAUMATISMO PREVIO`,
                    # df$`INDICACIÓN DE HIGIENE` + 
                    # df$`EVALUACIÓN DE HIGIENE` + 
                    #df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
summary(modelo_1.2)
Call:
coxph(formula = km ~ df$`TRAUMATISMO PREVIO`, data = df)

  n= 108, number of events= 34 

                             coef exp(coef)
df$`TRAUMATISMO PREVIO`Sí -0.3914    0.6761
                          se(coef)      z Pr(>|z|)
df$`TRAUMATISMO PREVIO`Sí   0.4863 -0.805    0.421

                          exp(coef) exp(-coef)
df$`TRAUMATISMO PREVIO`Sí    0.6761      1.479
                          lower .95 upper .95
df$`TRAUMATISMO PREVIO`Sí    0.2607     1.754

Concordance= 0.537  (se = 0.04 )
Rsquare= 0.007   (max possible= 0.922 )
Likelihood ratio test= 0.71  on 1 df,   p=0.4001
Wald test            = 0.65  on 1 df,   p=0.4209
Score (logrank) test = 0.66  on 1 df,   p=0.4179

EVALUACIÓN DE HIGIENE

modelo 2: indicación y evaluación de higiene

modelo_2 <- coxph(km ~ 
                    # df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                    # df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                    # df$`ESTADO RADICULAR INICIAL` + 
                    # df$`TRAUMATISMO REPETIDO`,
                    # df$`TRAUMATISMO PREVIO` + 
                     df$`INDICACIÓN DE HIGIENE` + 
                     df$`EVALUACIÓN DE HIGIENE`,
                    #df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
Loglik converged before variable  2 ; beta may be infinite. 
summary(modelo_2)
Call:
coxph(formula = km ~ df$`INDICACIÓN DE HIGIENE` + df$`EVALUACIÓN DE HIGIENE`, 
    data = df)

  n= 108, number of events= 34 

                                                               coef
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  9.426e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión      -1.733e+01
df$`INDICACIÓN DE HIGIENE`Todos los controles            -4.548e-01
df$`EVALUACIÓN DE HIGIENE`Mala                            4.161e-01
df$`EVALUACIÓN DE HIGIENE`Regular                        -1.509e-01
                                                          exp(coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  2.567e+00
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión       2.974e-08
df$`INDICACIÓN DE HIGIENE`Todos los controles             6.346e-01
df$`EVALUACIÓN DE HIGIENE`Mala                            1.516e+00
df$`EVALUACIÓN DE HIGIENE`Regular                         8.600e-01
                                                           se(coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  5.708e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión       5.198e+03
df$`INDICACIÓN DE HIGIENE`Todos los controles             3.867e-01
df$`EVALUACIÓN DE HIGIENE`Mala                            5.645e-01
df$`EVALUACIÓN DE HIGIENE`Regular                         5.082e-01
                                                              z
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  1.651
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión      -0.003
df$`INDICACIÓN DE HIGIENE`Todos los controles            -1.176
df$`EVALUACIÓN DE HIGIENE`Mala                            0.737
df$`EVALUACIÓN DE HIGIENE`Regular                        -0.297
                                                         Pr(>|z|)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica   0.0987
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión        0.9973
df$`INDICACIÓN DE HIGIENE`Todos los controles              0.2396
df$`EVALUACIÓN DE HIGIENE`Mala                             0.4611
df$`EVALUACIÓN DE HIGIENE`Regular                          0.7666
                                                          
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica .
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión       
df$`INDICACIÓN DE HIGIENE`Todos los controles             
df$`EVALUACIÓN DE HIGIENE`Mala                            
df$`EVALUACIÓN DE HIGIENE`Regular                         
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                                         exp(coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica 2.567e+00
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión      2.974e-08
df$`INDICACIÓN DE HIGIENE`Todos los controles            6.346e-01
df$`EVALUACIÓN DE HIGIENE`Mala                           1.516e+00
df$`EVALUACIÓN DE HIGIENE`Regular                        8.600e-01
                                                         exp(-coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  3.896e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión       3.363e+07
df$`INDICACIÓN DE HIGIENE`Todos los controles             1.576e+00
df$`EVALUACIÓN DE HIGIENE`Mala                            6.596e-01
df$`EVALUACIÓN DE HIGIENE`Regular                         1.163e+00
                                                         lower .95
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica    0.8384
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión         0.0000
df$`INDICACIÓN DE HIGIENE`Todos los controles               0.2974
df$`EVALUACIÓN DE HIGIENE`Mala                              0.5014
df$`EVALUACIÓN DE HIGIENE`Regular                           0.3176
                                                         upper .95
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica     7.857
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión            Inf
df$`INDICACIÓN DE HIGIENE`Todos los controles                1.354
df$`EVALUACIÓN DE HIGIENE`Mala                               4.584
df$`EVALUACIÓN DE HIGIENE`Regular                            2.329

Concordance= 0.636  (se = 0.054 )
Rsquare= 0.066   (max possible= 0.922 )
Likelihood ratio test= 7.42  on 5 df,   p=0.1912
Wald test            = 5.65  on 5 df,   p=0.3414
Score (logrank) test = 7.33  on 5 df,   p=0.1975

modelo 2.1 indicación de higiene por si solo

modelo_2.1 <- coxph(km ~ 
                    # df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                    # df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                    # df$`ESTADO RADICULAR INICIAL` + 
                    # df$`TRAUMATISMO REPETIDO`,
                    # df$`TRAUMATISMO PREVIO` + 
                     df$`INDICACIÓN DE HIGIENE`, 
                    # df$`EVALUACIÓN DE HIGIENE` + 
                    #df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
Loglik converged before variable  2 ; beta may be infinite. 
summary(modelo_2.1)
Call:
coxph(formula = km ~ df$`INDICACIÓN DE HIGIENE`, data = df)

  n= 108, number of events= 34 

                                                               coef
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  8.074e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión      -1.726e+01
df$`INDICACIÓN DE HIGIENE`Todos los controles            -3.872e-01
                                                          exp(coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  2.242e+00
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión       3.185e-08
df$`INDICACIÓN DE HIGIENE`Todos los controles             6.790e-01
                                                           se(coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  5.580e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión       5.195e+03
df$`INDICACIÓN DE HIGIENE`Todos los controles             3.786e-01
                                                              z
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  1.447
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión      -0.003
df$`INDICACIÓN DE HIGIENE`Todos los controles            -1.023
                                                         Pr(>|z|)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica    0.148
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión         0.997
df$`INDICACIÓN DE HIGIENE`Todos los controles               0.306

                                                         exp(coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica 2.242e+00
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión      3.185e-08
df$`INDICACIÓN DE HIGIENE`Todos los controles            6.790e-01
                                                         exp(-coef)
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica  4.460e-01
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión       3.140e+07
df$`INDICACIÓN DE HIGIENE`Todos los controles             1.473e+00
                                                         lower .95
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica    0.7510
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión         0.0000
df$`INDICACIÓN DE HIGIENE`Todos los controles               0.3233
                                                         upper .95
df$`INDICACIÓN DE HIGIENE`No consignado en ficha clínica     6.694
df$`INDICACIÓN DE HIGIENE`Sólo en la primera sesión            Inf
df$`INDICACIÓN DE HIGIENE`Todos los controles                1.426

Concordance= 0.612  (se = 0.05 )
Rsquare= 0.052   (max possible= 0.922 )
Likelihood ratio test= 5.75  on 3 df,   p=0.1243
Wald test            = 4.14  on 3 df,   p=0.2471
Score (logrank) test = 5.7  on 3 df,   p=0.127

modelo 2.2 evaluación de higiene por si solo

modelo_2.2 <- coxph(km ~ 
                    # df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                    # df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                    # df$`ESTADO RADICULAR INICIAL` + 
                    # df$`TRAUMATISMO REPETIDO`,
                    # df$`TRAUMATISMO PREVIO` + 
                    # df$`INDICACIÓN DE HIGIENE` + 
                     df$`EVALUACIÓN DE HIGIENE`,
                    #df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
summary(modelo_2.2)
Call:
coxph(formula = km ~ df$`EVALUACIÓN DE HIGIENE`, data = df)

  n= 108, number of events= 34 

                                     coef
df$`EVALUACIÓN DE HIGIENE`Mala    0.37056
df$`EVALUACIÓN DE HIGIENE`Regular 0.03239
                                  exp(coef)
df$`EVALUACIÓN DE HIGIENE`Mala      1.44854
df$`EVALUACIÓN DE HIGIENE`Regular   1.03292
                                  se(coef)     z
df$`EVALUACIÓN DE HIGIENE`Mala     0.55936 0.662
df$`EVALUACIÓN DE HIGIENE`Regular  0.50224 0.064
                                  Pr(>|z|)
df$`EVALUACIÓN DE HIGIENE`Mala       0.508
df$`EVALUACIÓN DE HIGIENE`Regular    0.949

                                  exp(coef)
df$`EVALUACIÓN DE HIGIENE`Mala        1.449
df$`EVALUACIÓN DE HIGIENE`Regular     1.033
                                  exp(-coef)
df$`EVALUACIÓN DE HIGIENE`Mala        0.6904
df$`EVALUACIÓN DE HIGIENE`Regular     0.9681
                                  lower .95
df$`EVALUACIÓN DE HIGIENE`Mala        0.484
df$`EVALUACIÓN DE HIGIENE`Regular     0.386
                                  upper .95
df$`EVALUACIÓN DE HIGIENE`Mala        4.336
df$`EVALUACIÓN DE HIGIENE`Regular     2.764

Concordance= 0.525  (se = 0.049 )
Rsquare= 0.007   (max possible= 0.922 )
Likelihood ratio test= 0.73  on 2 df,   p=0.6934
Wald test            = 0.77  on 2 df,   p=0.6797
Score (logrank) test = 0.78  on 2 df,   p=0.6772

ONICOFAGIA - INTERPOSICIÓN DE OBJETOS

modelo 3: malos hábitos

modelo_3 <- coxph(km ~ 
                    # df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                    # df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                    # df$`ESTADO RADICULAR INICIAL` + 
                    # df$`TRAUMATISMO REPETIDO`,
                    # df$`TRAUMATISMO PREVIO` + 
                    # df$`INDICACIÓN DE HIGIENE` + 
                    # df$`EVALUACIÓN DE HIGIENE` + 
                    df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
summary(modelo_3)
Call:
coxph(formula = km ~ df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`, 
    data = df)

  n= 108, number of events= 34 

                                                 coef
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí -0.02411
                                             exp(coef)
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí   0.97618
                                             se(coef)
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí  0.37748
                                                  z
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí -0.064
                                             Pr(>|z|)
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí    0.949

                                             exp(coef)
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí    0.9762
                                             exp(-coef)
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí      1.024
                                             lower .95
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí    0.4658
                                             upper .95
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí     2.046

Concordance= 0.528  (se = 0.043 )
Rsquare= 0   (max possible= 0.922 )
Likelihood ratio test= 0  on 1 df,   p=0.949
Wald test            = 0  on 1 df,   p=0.9491
Score (logrank) test = 0  on 1 df,   p=0.9491

ESTADO RADICULAR INICIAL

modelo 4: estado radicular moorres

modelo_4 <- coxph(km ~ 
                    # df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                    # df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                     df$`ESTADO RADICULAR INICIAL`,
                    # df$`TRAUMATISMO REPETIDO`,
                    # df$`TRAUMATISMO PREVIO` + 
                    # df$`INDICACIÓN DE HIGIENE` + 
                    # df$`EVALUACIÓN DE HIGIENE` + 
                    #df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
Loglik converged before variable  1,2,3 ; beta may be infinite. 
summary(modelo_4)
Call:
coxph(formula = km ~ df$`ESTADO RADICULAR INICIAL`, data = df)

  n= 108, number of events= 34 

                                                                  coef
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                1.594e+01
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   1.618e+01
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 1.575e+01
                                                             exp(coef)
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                8.406e+06
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   1.068e+07
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 6.908e+06
                                                              se(coef)
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                4.680e+03
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   4.680e+03
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 4.680e+03
                                                                 z
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                0.003
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   0.003
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 0.003
                                                             Pr(>|z|)
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                   0.997
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto      0.997
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto    0.997

                                                             exp(coef)
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                  8406211
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    10681950
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto   6908164
                                                             exp(-coef)
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 1.190e-07
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    9.362e-08
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  1.448e-07
                                                             lower .95
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                        0
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto           0
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto         0
                                                             upper .95
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                      Inf
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto         Inf
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto       Inf

Concordance= 0.541  (se = 0.05 )
Rsquare= 0.017   (max possible= 0.922 )
Likelihood ratio test= 1.87  on 3 df,   p=0.6
Wald test            = 0.98  on 3 df,   p=0.805
Score (logrank) test = 1.43  on 3 df,   p=0.6978

Modelo 99 que sugiero

modelo_99 <- coxph(km ~ 
                     df$GÉNERO + 
                    # df$`DIENTE AFECTADO` +
                     df$DIAGNÓSTICO + 
                    # df$TRATAMIENTO + 
                    # df$`TIEMPO HASTA LA ATENCIÓN (en horas)` + 
                     df$`ESTADO RADICULAR INICIAL` + 
                    # df$`TRAUMATISMO REPETIDO` ,
                     df$`TRAUMATISMO PREVIO` + 
                    # df$`INDICACIÓN DE HIGIENE` + 
                     df$`EVALUACIÓN DE HIGIENE` + 
                     df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS` , 
                  data =  df)
Loglik converged before variable  5,6,7 ; beta may be infinite. 
summary(modelo_99)
Call:
coxph(formula = km ~ df$GÉNERO + df$DIAGNÓSTICO + df$`ESTADO RADICULAR INICIAL` + 
    df$`TRAUMATISMO PREVIO` + df$`EVALUACIÓN DE HIGIENE` + df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`, 
    data = df)

  n= 108, number of events= 34 

                                                                   coef
df$GÉNEROMasculino                                            2.395e-01
df$DIAGNÓSTICOFCC sin luxación                               -9.034e-01
df$DIAGNÓSTICOFCNC con luxación                              -1.074e+00
df$DIAGNÓSTICOFCNC sin luxación                              -3.056e+00
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 1.645e+01
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    1.684e+01
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  1.663e+01
df$`TRAUMATISMO PREVIO`Sí                                    -1.288e+00
df$`EVALUACIÓN DE HIGIENE`Mala                                1.245e+00
df$`EVALUACIÓN DE HIGIENE`Regular                             8.147e-02
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                 -4.390e-02
                                                              exp(coef)
df$GÉNEROMasculino                                            1.271e+00
df$DIAGNÓSTICOFCC sin luxación                                4.052e-01
df$DIAGNÓSTICOFCNC con luxación                               3.418e-01
df$DIAGNÓSTICOFCNC sin luxación                               4.708e-02
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 1.387e+07
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    2.056e+07
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  1.662e+07
df$`TRAUMATISMO PREVIO`Sí                                     2.757e-01
df$`EVALUACIÓN DE HIGIENE`Mala                                3.472e+00
df$`EVALUACIÓN DE HIGIENE`Regular                             1.085e+00
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  9.570e-01
                                                               se(coef)
df$GÉNEROMasculino                                            4.548e-01
df$DIAGNÓSTICOFCC sin luxación                                6.536e-01
df$DIAGNÓSTICOFCNC con luxación                               5.818e-01
df$DIAGNÓSTICOFCNC sin luxación                               7.541e-01
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 5.625e+03
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    5.625e+03
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  5.625e+03
df$`TRAUMATISMO PREVIO`Sí                                     5.886e-01
df$`EVALUACIÓN DE HIGIENE`Mala                                6.078e-01
df$`EVALUACIÓN DE HIGIENE`Regular                             5.704e-01
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  4.682e-01
                                                                  z
df$GÉNEROMasculino                                            0.527
df$DIAGNÓSTICOFCC sin luxación                               -1.382
df$DIAGNÓSTICOFCNC con luxación                              -1.845
df$DIAGNÓSTICOFCNC sin luxación                              -4.052
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 0.003
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    0.003
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  0.003
df$`TRAUMATISMO PREVIO`Sí                                    -2.189
df$`EVALUACIÓN DE HIGIENE`Mala                                2.048
df$`EVALUACIÓN DE HIGIENE`Regular                             0.143
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                 -0.094
                                                             Pr(>|z|)
df$GÉNEROMasculino                                             0.5985
df$DIAGNÓSTICOFCC sin luxación                                 0.1669
df$DIAGNÓSTICOFCNC con luxación                                0.0650
df$DIAGNÓSTICOFCNC sin luxación                              5.07e-05
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                  0.9977
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto     0.9976
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto   0.9976
df$`TRAUMATISMO PREVIO`Sí                                      0.0286
df$`EVALUACIÓN DE HIGIENE`Mala                                 0.0405
df$`EVALUACIÓN DE HIGIENE`Regular                              0.8864
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                   0.9253
                                                                
df$GÉNEROMasculino                                              
df$DIAGNÓSTICOFCC sin luxación                                  
df$DIAGNÓSTICOFCNC con luxación                              .  
df$DIAGNÓSTICOFCNC sin luxación                              ***
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                   
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto      
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto    
df$`TRAUMATISMO PREVIO`Sí                                    *  
df$`EVALUACIÓN DE HIGIENE`Mala                               *  
df$`EVALUACIÓN DE HIGIENE`Regular                               
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                    
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                                             exp(coef)
df$GÉNEROMasculino                                           1.271e+00
df$DIAGNÓSTICOFCC sin luxación                               4.052e-01
df$DIAGNÓSTICOFCNC con luxación                              3.418e-01
df$DIAGNÓSTICOFCNC sin luxación                              4.708e-02
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                1.387e+07
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   2.056e+07
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 1.662e+07
df$`TRAUMATISMO PREVIO`Sí                                    2.757e-01
df$`EVALUACIÓN DE HIGIENE`Mala                               3.472e+00
df$`EVALUACIÓN DE HIGIENE`Regular                            1.085e+00
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                 9.570e-01
                                                             exp(-coef)
df$GÉNEROMasculino                                            7.870e-01
df$DIAGNÓSTICOFCC sin luxación                                2.468e+00
df$DIAGNÓSTICOFCNC con luxación                               2.926e+00
df$DIAGNÓSTICOFCNC sin luxación                               2.124e+01
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 7.211e-08
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto    4.865e-08
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto  6.019e-08
df$`TRAUMATISMO PREVIO`Sí                                     3.627e+00
df$`EVALUACIÓN DE HIGIENE`Mala                                2.880e-01
df$`EVALUACIÓN DE HIGIENE`Regular                             9.218e-01
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  1.045e+00
                                                             lower .95
df$GÉNEROMasculino                                             0.52103
df$DIAGNÓSTICOFCC sin luxación                                 0.11253
df$DIAGNÓSTICOFCNC con luxación                                0.10927
df$DIAGNÓSTICOFCNC sin luxación                                0.01074
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                  0.00000
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto     0.00000
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto   0.00000
df$`TRAUMATISMO PREVIO`Sí                                      0.08697
df$`EVALUACIÓN DE HIGIENE`Mala                                 1.05510
df$`EVALUACIÓN DE HIGIENE`Regular                              0.35469
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                   0.38234
                                                             upper .95
df$GÉNEROMasculino                                              3.0985
df$DIAGNÓSTICOFCC sin luxación                                  1.4588
df$DIAGNÓSTICOFCNC con luxación                                 1.0690
df$DIAGNÓSTICOFCNC sin luxación                                 0.2064
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                      Inf
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto         Inf
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto       Inf
df$`TRAUMATISMO PREVIO`Sí                                       0.8739
df$`EVALUACIÓN DE HIGIENE`Mala                                 11.4277
df$`EVALUACIÓN DE HIGIENE`Regular                               3.3184
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                    2.3956

Concordance= 0.713  (se = 0.056 )
Rsquare= 0.219   (max possible= 0.922 )
Likelihood ratio test= 26.71  on 11 df,   p=0.005073
Wald test            = 20.95  on 11 df,   p=0.03392
Score (logrank) test = 23.84  on 11 df,   p=0.01344

Chequeo por si se viola el riesgo proporcional (constante HR en el tiempo)

(res.zph99 <- cox.zph(modelo_99))
                                                                  rho
df$GÉNEROMasculino                                            0.01543
df$DIAGNÓSTICOFCC sin luxación                                0.11278
df$DIAGNÓSTICOFCNC con luxación                               0.09481
df$DIAGNÓSTICOFCNC sin luxación                              -0.05214
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                 0.00180
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   -0.01554
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto -0.08550
df$`TRAUMATISMO PREVIO`Sí                                     0.00451
df$`EVALUACIÓN DE HIGIENE`Mala                                0.22067
df$`EVALUACIÓN DE HIGIENE`Regular                             0.15607
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                  0.18836
GLOBAL                                                             NA
                                                                chisq
df$GÉNEROMasculino                                           8.89e-03
df$DIAGNÓSTICOFCC sin luxación                               5.09e-01
df$DIAGNÓSTICOFCNC con luxación                              3.07e-01
df$DIAGNÓSTICOFCNC sin luxación                              1.03e-01
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                2.54e-12
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   1.62e-10
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 5.69e-09
df$`TRAUMATISMO PREVIO`Sí                                    8.31e-04
df$`EVALUACIÓN DE HIGIENE`Mala                               1.82e+00
df$`EVALUACIÓN DE HIGIENE`Regular                            9.33e-01
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                 1.20e+00
GLOBAL                                                       5.49e+00
                                                                 p
df$GÉNEROMasculino                                           0.925
df$DIAGNÓSTICOFCC sin luxación                               0.476
df$DIAGNÓSTICOFCNC con luxación                              0.579
df$DIAGNÓSTICOFCNC sin luxación                              0.748
df$`ESTADO RADICULAR INICIAL`4 ¾ raíz formada                1.000
df$`ESTADO RADICULAR INICIAL`5 raíz completa ápice abierto   1.000
df$`ESTADO RADICULAR INICIAL`6 raíz completa ½ ápice abierto 1.000
df$`TRAUMATISMO PREVIO`Sí                                    0.977
df$`EVALUACIÓN DE HIGIENE`Mala                               0.178
df$`EVALUACIÓN DE HIGIENE`Regular                            0.334
df$`ONICOFAGIA - INTERPOSICIÓN DE OBJETOS`Sí                 0.273
GLOBAL                                                       0.905
cox_fit_99 <- survfit(modelo_99)
autoplot(cox_fit_99)

Ojo, la mediana no toca el 50%, por lo que da median = NA

cox_fit_99
Call: survfit(formula = modelo_99)

      n  events  median 0.95LCL 0.95UCL 
108.000  34.000      NA   0.118      NA 
summary(cox_fit_99)
Call: survfit(formula = modelo_99)

   time n.risk n.event survival std.err
 0.0656    108       1    0.996   0.227
 0.1176    107       1    0.991   0.454
 0.1394    106       2    0.982   0.941
 0.1750    104       2    0.971   1.491
 0.2925    102       1    0.965   1.766
 0.3964    101       1    0.960   2.040
 0.3992    100       2    0.949   2.588
 0.4484     98       1    0.943   2.858
 0.6890     97       1    0.938   3.130
 0.7191     96       1    0.932   3.399
 0.7300     95       1    0.927   3.669
 1.1839     90       1    0.921   3.966
 1.3342     89       1    0.914   4.261
 1.4135     88       1    0.908   4.558
 1.5338     87       1    0.902   4.854
 1.8127     84       1    0.895   5.155
 1.8346     83       1    0.889   5.455
 2.5099     73       1    0.882   5.783
 2.5701     71       1    0.874   6.120
 2.8872     64       1    0.866   6.502
 3.7867     53       1    0.856   6.927
 3.9699     52       1    0.846   7.357
 4.2433     51       1    0.836   7.803
 4.6124     48       1    0.824   8.312
 6.6904     27       1    0.806   9.053
 8.0738     20       1    0.784   9.924
 8.5031     14       1    0.755  11.048
 8.6097     13       1    0.724  12.185
 8.9159     10       1    0.688  13.402
 9.7744      7       1    0.636  14.990
 9.8592      6       1    0.570  16.683
 lower 95% CI upper 95% CI
     6.37e-01            1
     4.04e-01            1
     1.50e-01            1
     4.79e-02            1
     2.68e-02            1
     1.49e-02            1
     4.53e-03            1
     2.49e-03            1
     1.35e-03            1
     7.36e-04            1
     3.95e-04            1
     1.98e-04            1
     9.88e-05            1
     4.85e-05            1
     2.36e-05            1
     1.12e-05            1
     5.31e-06            1
     2.30e-06            1
     9.61e-07            1
     3.51e-07            1
     1.11e-07            1
     3.37e-08            1
     9.48e-09            1
     2.13e-09            1
     2.22e-10            1
     1.33e-11            1
     2.65e-13            1
     3.40e-15            1
     1.80e-17            1
     5.55e-21            1
     7.16e-26            1

Tamaño muestral y potencia

hr = 2 # hazard ratio
hr0 = 1
pE = 0.8 # probabilidad del evento
pA = 0.5 # proporción en el grupo A
alpha = 0.05
beta = 0.20
(n=((qnorm(1-alpha/2)+qnorm(1-beta))/(log(hr)-log(hr0)))^2/(pA*(1-pA)*pE))
[1] 81.68207
ceiling(n) # 82
[1] 82
(Power=pnorm((log(hr)-log(hr0))*sqrt(n*pA*(1-pA)*pE)-qnorm(1-alpha/2)))
[1] 0.8
LS0tDQp0aXRsZTogIkNveCBhbmFseXNpcyINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCINCm91dHB1dDogDQogIGh0bWxfbm90ZWJvb2s6IA0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB0cnVlDQotLS0NCg0KIyBPYmpldGl2b3MNCiMjIE9CSkVUSVZPIEdFTkVSQUwNCkRldGVybWluYXIJbG9zCWZhY3RvcmVzCXF1ZQlpbnRlcnZpZW5lbgllbgllbAlwcm9uw7NzdGljbwlkZQlzb2JyZXZpZGEJcHVscGFyCWRlCWRpZW50ZXMJDQpwZXJtYW5lbnRlcwkgY29uCSBkZXNhcnJvbGxvCSByYWRpY3VsYXIJIGluY29tcGxldG8JIHF1ZQkgc3VmcmVuCSBhbGfDum4JIHRpcG8JIGRlCSBmcmFjdHVyYQkNCmNvcm9uYXJpYS4JDQoNCiMjIE9CSkVUSVZPUyBFU1BFQ8ONRklDT1MNCiAgLSBEZXRlcm1pbmFyCSBzaQkgbGEJIHByZXNlbmNpYQkgZGUJIG1hbG9zCSBow6FiaXRvcywJIHRyYXVtYXRpc21vcwkgcmVwZXRpZG9zCSB5CSBjb250cm9sIGluYWRlY3VhZG8JIGRlCSBsYQkgaGlnaWVuZQkgKHBvcgkgc8OtCSBzb2xvcwkgbwkgYXNvY2lhZG9zKQkgaW5mbHV5ZW4JIGVuCSBlbAkgcHJvbsOzc3RpY28JIGRlIHNvYnJldmlkYQlwdWxwYXIJZGUJZGllbnRlcwlwZXJtYW5lbnRlcwljb24JZGVzYXJyb2xsbwlyYWRpY3VsYXIJaW5jb21wbGV0bwlxdWUgc3VmcmVuCWZyYWN0dXJhcwljb3JvbmFyaWFzLgkNCiAgLSBPYnRlbmVyCXVuCW9yZGVuCWRlCXJlbGV2YW5jaWEJZGUJbG9zCWZhY3RvcmVzCXF1ZQlpbnRlcnZpZW5lbgllbgllbAlwcm9uw7NzdGljbwlkZSBzb2JyZXZpZGEJZGUJZGllbnRlcwlwZXJtYW5lbnRlcwljb24JZGVzYXJyb2xsbwlyYWRpY3VsYXIJaW5jb21wbGV0bwlxdWUJc3VmcmVuIGZyYWN0dXJhcwljb3JvbmFyaWFzLgkNCiAgLSBHZW5lcmFyCSB1bgkgcHJvdG9jb2xvCSBkZQkgYWJvcmRhamUJIGRlCSBkaWVudGVzCSBwZXJtYW5lbnRlcwkgY29uCSBkZXNhcnJvbGxvCXJhZGljdWxhcglpbmNvbXBsZXRvCXF1ZQlzdWZyZW4JZnJhY3R1cmFzCWNvcm9uYXJpYXMuDQogIA0KIyBQYXF1ZXRlcw0KDQpgYGB7ciBwYXF1ZXRlcyB2YXJpb3MsIGluY2x1ZGUgPSBGLCBlY2hvID0gRn0NClBhY2thZ2VzIDwtIGMoInRpZHl2ZXJzZSIsICJmb3JjYXRzIiwgInN0cmluZ3IiLCAiYnJvb20iLCAibHVicmlkYXRlIikNCmxhcHBseShQYWNrYWdlcywgbGlicmFyeSwgY2hhcmFjdGVyLm9ubHkgPSBUUlVFKQ0Kcm0oUGFja2FnZXMpDQoNCg0KDQpgYGANCiMjIFBhcXVldGVzIGVzcGVjw61maWNvcw0KDQpgYGB7ciBzdXJ2aXZhbCwgaW5jbHVkZSA9IEYsIGVjaG8gPSBGfQ0KbGlicmFyeShzdXJ2aXZhbCkgIyBmb3IgY29tcHV0aW5nIHN1cnZpdmFsIGFuYWx5c2VzDQpsaWJyYXJ5KHN1cnZtaW5lcikgIyBmb3IgdmlzdWFsaXppbmcgc3Vydml2YWwgYW5hbHlzaXMgcmVzdWx0cw0KbGlicmFyeShnZ2ZvcnRpZnkpICMgbmljZSBwbG90IG9mIHN1cnZpdmFsIGZ1bmN0aW9uDQpgYGANCg0KDQojIERhdGFzZXQNCg0KYGBge3IgcmVhZCBkZn0NCmRmIDwtIHJlYWRfY3N2KHNwcmludGYoImh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kL2UvMlBBQ1gtMXZTSFExN2YtZmVsRURCSEV4MnV6MEpqc3QtX3o2d0hUZkI3aFNGSEQxaVg4WFd3ZDZHWVRPWUJvNUY4RFhqTEdkeHBUazlCcVV0X00wbEcvcHViP2dpZD0xOTk1MDM3NTU1JnNpbmdsZT10cnVlJm91dHB1dD1jc3YiKSkNCmdsaW1wc2UoZGYpIA0KYGBgDQoNCiMjIERhdGEgbWFuaXB1bGF0aW9uDQoNCkNyZW8gdW5hIG51ZXZhIHZhcmlhYmxlOiBzdGF0dXMNCg0KUHJvbsOzc3RpY28JcHVscGFyOglWYXJpYWJsZQlkZXBlbmRpZW50ZS4JRXZhbHVhZG8JY29uCXJhZGlvZ3JhZsOtYQlwZXJpYXBpY2FsLgkNCiAgIC0gKipCdWVuCXByb27Ds3N0aWNvKio6CShQUykJc29icmV2aXZlbmNpYQlkZQlsYQlQdWxwYQkNCiAgICAgIC0gU2luCWNhbWJpbwlyYWRpb2dyw6FmaWNvLAlzaWdub3MJY2zDrW5pY29zCWRlCXZpdGFsaWRhZAlwdWxwYXIuCQ0KICAgICAgLSBQQ086CW9ibGl0ZXJhY2nDs24JZGVsCWNvbmR1Y3RvCXB1bHBhci4JDQogICAgICAtIERldGVuY2nDs24JIGRlbAkgY3JlY2ltaWVudG8JIHJhZGljdWxhciwJIGNvbmR1Y3RvCSBwdWxwYXIJIG5vcm1hbCwJIGxvbmdpdHVkCQ0KcmFkaWN1bGFyCWRpc21pbnVpZGEJZW4JY29tcGFyYWNpw7NuCWNvbgllbAlob23Ds2xvZ28uDQoNCg0KICAgLSAqKk1hbAkgcHJvbsOzc3RpY28qKjoJIChQTikJIG5lY3Jvc2lzCSBwdWxwYXIsCSBvYnNlcnZhbmRvCSBhbXBsaXR1ZAkgZGVsCSBjb25kdWN0bwlyYWRpY3VsYXIsCWVzcGVzb3IJZGlzbWludWlkbwlkZQlwYXJlZGVzCXJhZGljdWxhcmVzCWNvbglvCXNpbglsZXNpw7NuCWFwaWNhbA0KICAgICAgICAtIERlc2Fycm9sbG8JcmFkaWN1bGFyCWNvbXBsZXRvLAljb24JdHJhdGFtaWVudG8JZGUJZW5kb2RvbmNpYS4JDQogICAgICAgIC0gRGV0ZW5jacOzbglkZWwJY3JlY2ltaWVudG8JcmFkaWN1bGFyLAljb24JdHJhdGFtaWVudG8JZGUJZW5kb2RvbmNpYS4JDQoNCkVudG9uY2VzDQoNCg0KKipTb2JyZXZpZGEgc2kqKg0KICAtIFBDTw0KICAtIERldGVuY2nDs24gY3JlY2ltaWVudG8gcmFkaWN1bGFyLCBwdWxwYSB2aXRhbA0KICAtIFNpbiBjYW1iaW8gcngNCg0KDQoqKlNvYnJldmlkYSBubyoqDQogIC0gRGVzYXJyb2xsbyBSYWRpY3VsYXIgY29tcGxldG8sIGNvbiBlbmRvZG9uY2lhIA0KICAtIERldGVuY2nDs24gY3JlY2ltaWVudG8gcmFkaWN1bGFyLCBjb24gZW5kb2RvbmNpYSANCg0KDQoNCg0KIyMgVmFyaWFibGVzIGltcG9ydGFudGVzDQoNCiAtIHRpZW1wbw0KIC0gZXZlbnRvDQogLSBpbmRlcGVuZGllbnRlcw0KDQoNCiMjIyBUaWVtcG8gDQoNCiBjYW1iaW8gbGFzIGZlY2hhcyBhIGFhYWEvbW0vZGQgeSBjYWxjdWxvIGxhIGRpZmVyZW5jaWEgZW4gKiphw7FvcyoqDQpgYGB7ciB0aWVtcG8gZW4gYcOxb3N9DQpkZiA8LSBkZiAlPiUgDQogIG11dGF0ZSgNCiAgICBgRkVDSEEgVFJBVU1BVElTTU9gID0gZG15KGBGRUNIQSBUUkFVTUFUSVNNT2ApLCANCiAgICBgRkVDSEEgU09CUkVWSURBYCA9IGRteShgRkVDSEEgU09CUkVWSURBYCksIA0KICAgIGBGRUNIQSBERSBOQUNJTUlFTlRPYCA9IGRteShgRkVDSEEgREUgTkFDSU1JRU5UT2ApDQogICkNCg0KIyBjcmVvIHRpbWUgeSBlZGFkDQoNCmRmIDwtIGRmICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSBkaWZmdGltZShgRkVDSEEgU09CUkVWSURBYCwgYEZFQ0hBIFRSQVVNQVRJU01PYCwgdW5pdHMgPSAid2Vla3MiKSAvIDUyLjI1LCANCiAgICBlZGFkID0gIGRpZmZ0aW1lKGBGRUNIQSBUUkFVTUFUSVNNT2AsIGBGRUNIQSBERSBOQUNJTUlFTlRPYCwgdW5pdHMgPSAid2Vla3MiKS81Mi4yNSAjIGVkYWQgZW4gYcOxb3MNCiAgKQ0KDQoNCg0KYGBgDQoNCiMjIyBFdmVudG9zDQpDcmVvIHVuYSBudWV2YSB2YXJpYWJsZSBxdWUgc2Vyw6EgZWwgKipldmVudG8qKiA9IDEgKHNpKSBlbiBjYXNvIHF1ZSBoYXlhIGFsZ28gbmVnYXRpdm8geSBubyAoMCkgZW4gY2FzbyBxdWUgbm8gaGF5YSBwYXNhZG8gbmFkYSBtYWxvDQoNCmBgYHtyIGNyZW8gdmFyIGV2ZW50b30NCmRmIDwtICBkZiAlPiUgDQogIG11dGF0ZSgNCiAgICBFdmVudG8gPSBjYXNlX3doZW4oDQogICAgICBgU09CUkVWSURBIFBVTFBBUmAgPT0gIlBDTyIgfA0KICAgICAgICBgU09CUkVWSURBIFBVTFBBUmAgPT0gIkRldGVuY2nDs24gY3JlY2ltaWVudG8gcmFkaWN1bGFyLCBwdWxwYSB2aXRhbCIgfA0KICAgICAgICBgU09CUkVWSURBIFBVTFBBUmAgPT0gIlNpbiBjYW1iaW8gcngiIH4gMCwgDQogICAgICBUUlVFIH4gMQ0KDQogICAgKQ0KICApDQoNCg0KDQpgYGANClZlbyBjdWFudG9zIGV2ZW50b3MgaGF5IA0KDQpgYGB7ciBjdWFudG9zIGV2ZW50b3M/fQ0KdGFibGUoZGYkRXZlbnRvKQ0KYGBgDQoNCg0KDQojIyBEYXRhc2V0IGNsZWFuDQpDT1JSRUdJRE8gSGF5IGRvcyB2YWxvcmVzIG5lZ2F0aXZvcywgbWllbnRyYXMgbG9zIGVsaW1pbm8NCg0KDQogd2hpY2goZGYkdGltZSA+IDApDQogZGZbZGYkdGltZSA8IDAsIF0gIyB1YmljbyBhIGxhIHF1ZSBlcyBtZW5vcg0KIGRmJHRpbWUNCiBkZltkZiR0aW1lIDwgMSwgXQ0KIGRmIDwtIGRmWy1jKDY1KSwgXSAjIGVsaW1pbm8gbGEgNjUgbWllbnRyYXMgdGFudG8gVkVSSUZJQ0FSISEhIQ0KDQogd2hpY2goZGYkZWRhZCA8IDApDQogZGZbZGYkZWRhZCA8IDEsIF0gIyBoYXkgdW5vIHF1ZSB0aWVuZSBlZGFkIG5lZ2F0aXZhLCB2ZXJpZmljYXIsIG1pZW50cmFzIGxvIHNhY28gZGVsIGFuw6FsaXNpcw0KIGRmIDwtIGRmWy1jKDc3KSwgXQ0KDQoNCmBgYHtyfQ0Kc3VtbWFyeShkZikNCmBgYA0KDQoNCiMgU3Vydml2YWwgYW5hbHlzaXMNCg0KQ3JlbyBlbCBvYmpldG8gZXN0w6FuZGFyIGRlIHNvYnJldmlkYSANCg0KYGBge3Igb2JqZXRvIGRlIHNvYnJldmlkYX0NCmttIDwtICB3aXRoKGRmLCBTdXJ2KHRpbWUsIEV2ZW50byA9PSAxKSkNCmhlYWQoa20sIDUwKQ0KYGBgDQoNCiMjIEFuw6FsaXNpcyBkZSBLYXBsYW4gTWVpZXINCg0KQWhvcmEgZWwgYW7DoWxpc2lzIGRlIEtNDQoNCmBgYHtyIGFuYWxpc2lzIEtNfQ0Ka21fZml0IDwtIHN1cnZmaXQoU3Vydih0aW1lLCBFdmVudG8pIH4gMSwgZGF0YSA9IGRmKQ0Kc3VtbWFyeShrbV9maXQpDQpgYGANCg0KRXN0b3MgZGF0b3Mgc2UgbGVlbiBkZSBsYSBzaWd1aWVudGUgbWFuZXJhOiANCg0KICAtIGVuIGxhIGNvbHVtbmEgdGltZSBhcGFyZWNlIGVsIHRpZW1wby4gRXN0ZSBlcyBlbCBlamUgWCBkZWwgZ3LDoWZpY287IA0KICAtIGVuIG4ucmlzayBlbCBuIGRlIGluZGl2aWR1b3MgZW4gcmllc2dvOw0KICAtIGVuIG4uZXZlbnQgbGEgY2FudGlkYWQgZGUgZXZlbnRvcyBlbiBlc2UgcGVyw61vZG87DQogIC0gZW4gc3Vydml2YWwgbGEgZnVuY2nDs24gZGUgc29icmV2aWRhLiBDb3JyZXNwb25kZSBhbCBlamUgWSBkZWwgZ3LDoWZpY287IA0KICAtIGx1ZWdvIGVsIGVycm9yIHN0ZCB5IGxvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSwgcXVlIGFwYXJlY2VuIG1hcmNhZG9zIGVuIHRvbm8gZ3Jpcy4gDQogIA0KYGBge3IgdmVyIGVsIGttfQ0Ka21fZml0DQoNCg0KYGBgDQoNCg0KDQpgYGB7ciBLTSBwbG90fQ0KYXV0b3Bsb3Qoa21fZml0LCANCiAgICAgICAgIG1haW4gPSAiQW7DoWxpc2lzIGRlIHNvYnJldmlkYSBLYXBsYW4gTWVpZXIgcGFyYSBlc3RhZG8gcHVscGFyIiwNCiAgICAgICAgIHhsYWIgPSAiQcOxb3MiLCB5bGFiID0gIlByb2JhYmlsaWRhZCBkZSBzb2JyZXZpZGEiKQ0KYGBgDQoNCkFob3JhIGV4YW1pbm8gcG9yIGFsZ3VuYXMgdmFyaWFibGVzOiBzZXhvLCBkZ28gZGVsIHRyYXVtYQ0KDQpgYGB7ciBwb3Igc2V4b30NCg0KYXV0b3Bsb3QoDQogIHN1cnZmaXQoU3Vydih0aW1lLCBFdmVudG8pIH4gR8OJTkVSTywgZGF0YSA9IGRmKSwgDQogICAgICAgICBtYWluID0gIkFuw6FsaXNpcyBkZSBzb2JyZXZpZGEgS2FwbGFuIE1laWVyIHBhcmEgZXN0YWRvIHB1bHBhciBwb3Igc2V4byIsDQogICAgICAgICB4bGFiID0gIkHDsW9zIiwgeWxhYiA9ICJQcm9iYWJpbGlkYWQgZGUgc29icmV2aWRhIg0KKQ0KYGBgDQoNCmBgYHtyIHBvciBkaWFnbm9zdGljb30NCmF1dG9wbG90KA0KICBzdXJ2Zml0KFN1cnYodGltZSwgRXZlbnRvKSB+IERJQUdOw5NTVElDTywgZGF0YSA9IGRmKSwgDQogICAgICAgICAgbWFpbiA9ICJBbsOhbGlzaXMgZGUgc29icmV2aWRhIEthcGxhbiBNZWllciBwYXJhIGVzdGFkbyBwdWxwYXIgcG9yIHRpcG8gZGUgdHJhdW1hIiwNCiAgICAgICAgIHhsYWIgPSAiQcOxb3MiLCB5bGFiID0gIlByb2JhYmlsaWRhZCBkZSBzb2JyZXZpZGEiDQopDQpgYGANCg0KDQoNCiMjIEFuw6FsaXNpcyBkZSBDb3gNCg0KDQpFbCBwcm9ww7NzaXRvIGRlbCBtb2RlbG8gZGUgQ294IGVzIGV2YWx1YXIgc2ltdWx0w6FuZWFtZW50ZSBlbCBlZmVjdG8gZGUgdmFyaW9zIGZhY3RvcmVzIGVuIGxhIHN1cGVydml2ZW5jaWEuIE5vcyBwZXJtaXRlIGV4YW1pbmFyIGPDs21vIGRpdmVyc29zIGluZmx1eWVuIGVuIGxhIHRhc2EgZGUgdW4gZXZlbnRvIGVuIHBhcnRpY3VsYXIgcXVlIG9jdXJyZSAocG9yIGVqZW1wbG8sIGluZmVjY2nDs24sIG11ZXJ0ZSkgZW4gdW4gbW9tZW50byBwYXJ0aWN1bGFyLiBFc3RhIHRhc2Egc2UgY29ub2NlIGNvbcO6bm1lbnRlIGNvbW8gbGEgdGFzYSBkZSByaWVzZ28gKGhhemFyZCByYXRlKS4gTGFzIHZhcmlhYmxlcyAobyBmYWN0b3JlcykgZGVsIHByZWRpY3RvciBnZW5lcmFsbWVudGUgc2UgZGVub21pbmFuIGNvdmFyaWFibGVzIGVuIGxhIGxpdGVyYXR1cmEgZGUgYW7DoWxpc2lzIGRlIHN1cGVydml2ZW5jaWEuDQoNCg0KDQpoKHQpPWgwKHQpw5dleHAoYjF4MStiMngyKy4uLiticHhwKQ0KaCh0KT1oMCh0KcOXZXhwKGIxeDErYjJ4MisuLi4rYnB4cCkNCg0KZG9uZGUsDQoNCiAgLSAqKnQqKiByZXByZXNlbnRhIGVsIHRpZW1wbyBkZSBzdXBlcnZpdmVuY2lhDQogIC0gKipoICh0KSoqIGggKHQpIGVzIGxhIGZ1bmNpw7NuIGRlIHJpZXNnbyBkZXRlcm1pbmFkYSBwb3IgdW4gY29uanVudG8gZGUgY292YXJpYWJsZXMgcCAoeDEsIHgyLCAuLi4sIHhweDEsIHgyLCAuLi4sIHhwKQ0KICAtICoqbG9zIGNvZWZpY2llbnRlcyoqIChiMSwgYjIsIC4uLiwgYnBiMSwgYjIsIC4uLiwgYnApIG1pZGVuIGVsIGltcGFjdG8gKGVzIGRlY2lyLCBlbCB0YW1hw7FvIGRlbCBlZmVjdG8pIGRlIGxhcyBjb3ZhcmlhYmxlcy4NCmVsIHTDqXJtaW5vIGgwaDAgc2UgbGxhbWEgcmllc2dvIGRlIHJlZmVyZW5jaWEuIENvcnJlc3BvbmRlIGFsIHZhbG9yIGRlbCBwZWxpZ3JvIHNpIHRvZG9zIGxvcyB4aXhpIHNvbiBpZ3VhbGVzIGEgY2VybyAobGEgY2FudGlkYWQgZXhwICgwKSBlcyBpZ3VhbCBhIDEpLiBMYSAndCcgZW4gaCAodCkgbm9zIHJlY3VlcmRhIHF1ZSBlbCBwZWxpZ3JvIHB1ZWRlIHZhcmlhciBjb24gZWwgdGllbXBvLg0KDQpFbCBtb2RlbG8gZGUgQ294IHNlIHB1ZWRlIGVzY3JpYmlyIGNvbW8gdW5hIHJlZ3Jlc2nDs24gbGluZWFsIG3Dumx0aXBsZSBkZWwgbG9nYXJpdG1vIGRlbCBwZWxpZ3JvIGVuIGxhcyB2YXJpYWJsZXMgeGl4aSwgY29uIGVsIHJpZXNnbyBkZSBsYSBsw61uZWEgZGUgYmFzZSBjb21vIHVuIHTDqXJtaW5vIGRlICJpbnRlcmNlcGNpw7NuIiBxdWUgdmFyw61hIGNvbiBlbCB0aWVtcG8uDQoNCkxhcyBjYW50aWRhZGVzIGV4cCAoYmkpIGV4cCAoYmkpIHNlIGRlbm9taW5hbiByZWxhY2lvbmVzIGRlIHJpZXNnbyAoSFIpLiBVbiB2YWxvciBkZSBiaWJpIG1heW9yIHF1ZSBjZXJvLCBvIGVxdWl2YWxlbnRlIGEgdW5hIHJhesOzbiBkZSByaWVzZ28gbWF5b3IgcXVlIHVubywgaW5kaWNhIHF1ZSBhIG1lZGlkYSBxdWUgZWwgdmFsb3IgZGUgbGEgbm92ZW5hIGNvdmFyaWFibGUgYXVtZW50YSwgZWwgcmllc2dvIGRlIGV2ZW50byBhdW1lbnRhIHksIHBvciBsbyB0YW50bywgbGEgZHVyYWNpw7NuIGRlIGxhIHN1cGVydml2ZW5jaWEgZGlzbWludXllLg0KDQpEaWNobyBkZSBvdHJhIG1hbmVyYSwgdW5hIHJhesOzbiBkZSByaWVzZ28gc3VwZXJpb3IgYSAxIGluZGljYSB1bmEgY292YXJpYWJsZSBxdWUgZXN0w6EgYXNvY2lhZGEgcG9zaXRpdmFtZW50ZSBjb24gbGEgcHJvYmFiaWxpZGFkIGRlbCBldmVudG8geSwgcG9yIGxvIHRhbnRvLCBlc3TDoSBhc29jaWFkYSBuZWdhdGl2YW1lbnRlIGNvbiBsYSBkdXJhY2nDs24gZGUgbGEgc3VwZXJ2aXZlbmNpYS4NCg0KRW4gcmVzdW1lbiwNCg0KSFIgPSAxOiBzaW4gZWZlY3RvDQpIUiA8IDE6IHJlZHVjY2nDs24gZW4gZWwgcmllc2dvDQpIUiA+IDE6IGF1bWVudG8gZGUgcmllc2dvDQoNCg0KDQoNCmBgYHtyIENveH0NCg0KcmVzLmNveDEgPC0gY294cGgoa20gfiANCiAgICAgICAgICAgICAgICAgICAgZWRhZCArIA0KICAgICAgICAgICAgICAgICAgICBgRElFTlRFIEFGRUNUQURPYCArDQogICAgICAgICAgICAgICAgICAgIEfDiU5FUk8gKyANCiAgICAgICAgICAgICAgICAgICAgRElBR07Dk1NUSUNPICsgDQogICAgICAgICAgICAgICAgICAgIGBUUkFVTUFUSVNNTyBSRVBFVElET2AgKw0KICAgICAgICAgICAgICAgICAgICBgVFJBVU1BVElTTU8gUFJFVklPYCwNCiAgICAgICAgICAgICAgICAgIGRhdGEgPSAgZGYpDQoNCg0KYGBgDQoNCg0KQ2hlcXVlbyBwb3Igc2kgc2UgdmlvbGEgZWwgcmllc2dvIHByb3BvcmNpb25hbCAoY29uc3RhbnRlIEhSIGVuIGVsIHRpZW1wbykNCg0KYGBge3Igcmllc2dvIHByb3BvcmNpb25hbD99DQoocmVzLnpwaDEgPC0gY294LnpwaChyZXMuY294MSkpDQpgYGANCg0KTm8gc2UgdmlvbGEsIGFzw60gcXVlIGVzdGFtb3MgT0sNCg0KQWhvcmEgZXhhbWlubyBjb24gZGV0YWxsZSBlbCBtb2RlbG8gZGUgQ294DQoNCmBgYHtyIHJlc3VtZW4gbW9kZWxvIHJlcy5jb3gxfQ0Kc3VtbWFyeShyZXMuY294MSkNCmBgYA0KRXN0byBzZSBsZWUgZGUgbGEgc2lndWllbnRlIG1hbmVyYQ0KDQppbmRpdmlkdW9zIHF1ZSB0aWVuZW4gbcOhcyBlZGFkIHRpZW5lbiBtw6FzIHByb2JhYmlsaWRhZCAoMC40ODQxKSBkZSB0ZW5lciBlbCBldmVudG8sIG1pZW50cmFzIHF1ZSBzZXIgc2V4byBtYXNjdWxpbm8gZGlzbWludXllIGVsIHJpZXNnbyAoLTAuMDMzNykgZGUgdGVuZXIgZWwgZXZlbnRvLiANCg0Kwr9DdWFudG8/DQoNClVOIGF1bWVudG8gZGUgRWRhZCBhdW1lbnRhIHVuIDYyJSBlbCByaWVzZ28gZGUgdGVuZXIgZWwgZXZlbnRvLCBjb24gdW4gaWM5NSUgZW50cmUgMDUlIHkgMTQ5JSAocmVzdGFsZSB1bm8gYSBsb3MgY29lZmljaWVudGVzKQ0KDQoNCg0KDQpgYGB7ciBncmFmaWNvIHJlcy5jb3gxfQ0KY294X2ZpdCA8LSBzdXJ2Zml0KHJlcy5jb3gxKQ0KYXV0b3Bsb3QoY294X2ZpdCkNCmBgYA0KDQpgYGB7ciBwcmltZXIgZ3JhZmljbyBzZXBhcmFkb30NCg0KDQphYV9maXQgPC1hYXJlZyhTdXJ2KHRpbWUsIEV2ZW50bykgfiANCiAgICAgICAgICAgICAgICAgYERJRU5URSBBRkVDVEFET2AgKw0KICAgICAgICAgICAgICAgICAgICBHw4lORVJPICsgDQogICAgICAgICAgICAgICAgICAgIERJQUdOw5NTVElDTyArIA0KICAgICAgICAgICAgICAgICAgICBgVFJBVU1BVElTTU8gUkVQRVRJRE9gICsNCiAgICAgICAgICAgICAgICAgICAgZGYkYFRSQVVNQVRJU01PIFBSRVZJT2AsDQogICAgICAgICAgICAgICAgICBkYXRhID0gIGRmKQ0KDQphdXRvcGxvdChhYV9maXQpDQpgYGANCg0KDQoNCiMjIyBUT0RPUw0KDQpgYGB7ciBDb3ggdG9kb3N9DQptb2RlbG9fMCA8LSBjb3hwaChrbSB+IA0KICAgICAgICAgICAgICAgICAgICBkZiRHw4lORVJPICsgDQogICAgICAgICAgICAgICAgICAgIGRmJGBESUVOVEUgQUZFQ1RBRE9gICsNCiAgICAgICAgICAgICAgICAgICAgZGYkRElBR07Dk1NUSUNPICsgDQogICAgICAgICAgICAgICAgICAgIGRmJFRSQVRBTUlFTlRPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYFRJRU1QTyBIQVNUQSBMQSBBVEVOQ0nDk04gKGVuIGhvcmFzKWAgKyANCiAgICAgICAgICAgICAgICAgICAgZGYkYEVTVEFETyBSQURJQ1VMQVIgSU5JQ0lBTGAgKyANCiAgICAgICAgICAgICAgICAgICAgZGYkYFRSQVVNQVRJU01PIFJFUEVUSURPYCArIA0KICAgICAgICAgICAgICAgICAgICBkZiRgVFJBVU1BVElTTU8gUFJFVklPYCArIA0KICAgICAgICAgICAgICAgICAgICBkZiRgSU5ESUNBQ0nDk04gREUgSElHSUVORWAgKyANCiAgICAgICAgICAgICAgICAgICAgZGYkYEVWQUxVQUNJw5NOIERFIEhJR0lFTkVgICsgDQogICAgICAgICAgICAgICAgICAgIGRmJGBPTklDT0ZBR0lBIC0gSU5URVJQT1NJQ0nDk04gREUgT0JKRVRPU2AgLCANCiAgICAgICAgICAgICAgICAgIGRhdGEgPSAgZGYpDQoNCmBgYA0KDQpgYGB7ciBtb2RlbG8gMCByZXN1bWVufQ0Kc3VtbWFyeShtb2RlbG9fMCkNCmBgYA0KDQoNCiMjIyBUUkFVTUFUSVNNTyBQUkVWSU8NCiMjIyMgbW9kZWxvIDENCiMjIyMgbW9kZWxvIDEuMSB0cmF1bWF0aXNtbyByZXBldGlkbyBwb3Igc2kgc29sbw0KYGBge3IgbW9kZWxvIDEuMX0NCm1vZGVsb18xLjEgPC0gY294cGgoa20gfiANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRHw4lORVJPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYERJRU5URSBBRkVDVEFET2AgKw0KICAgICAgICAgICAgICAgICAgICAjIGRmJERJQUdOw5NTVElDTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJFRSQVRBTUlFTlRPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYFRJRU1QTyBIQVNUQSBMQSBBVEVOQ0nDk04gKGVuIGhvcmFzKWAgKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgRVNUQURPIFJBRElDVUxBUiBJTklDSUFMYCArIA0KICAgICAgICAgICAgICAgICAgICAgZGYkYFRSQVVNQVRJU01PIFJFUEVUSURPYCwNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVFJBVU1BVElTTU8gUFJFVklPYCArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBJTkRJQ0FDScOTTiBERSBISUdJRU5FYCArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBFVkFMVUFDScOTTiBERSBISUdJRU5FYCArIA0KICAgICAgICAgICAgICAgICAgICAjZGYkYE9OSUNPRkFHSUEgLSBJTlRFUlBPU0lDScOTTiBERSBPQkpFVE9TYCAsIA0KICAgICAgICAgICAgICAgICAgZGF0YSA9ICBkZikNCnN1bW1hcnkobW9kZWxvXzEuMSkNCmBgYA0KDQojIyMjIG1vZGVsbyAxLjIgdHJhdW1hdGlzbW8gcHJldmlvIHBvciBzaSBzb2xvDQpgYGB7ciBtb2RlbG8gMS4yfQ0KbW9kZWxvXzEuMiA8LSBjb3hwaChrbSB+IA0KICAgICAgICAgICAgICAgICAgICAjIGRmJEfDiU5FUk8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgRElFTlRFIEFGRUNUQURPYCArDQogICAgICAgICAgICAgICAgICAgICMgZGYkRElBR07Dk1NUSUNPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkVFJBVEFNSUVOVE8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVElFTVBPIEhBU1RBIExBIEFURU5DScOTTiAoZW4gaG9yYXMpYCArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBFU1RBRE8gUkFESUNVTEFSIElOSUNJQUxgICsgDQogICAgICAgICAgICAgICAgICAgICMgIGRmJGBUUkFVTUFUSVNNTyBSRVBFVElET2AsDQogICAgICAgICAgICAgICAgICAgICBkZiRgVFJBVU1BVElTTU8gUFJFVklPYCwNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgSU5ESUNBQ0nDk04gREUgSElHSUVORWAgKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgRVZBTFVBQ0nDk04gREUgSElHSUVORWAgKyANCiAgICAgICAgICAgICAgICAgICAgI2RmJGBPTklDT0ZBR0lBIC0gSU5URVJQT1NJQ0nDk04gREUgT0JKRVRPU2AgLCANCiAgICAgICAgICAgICAgICAgIGRhdGEgPSAgZGYpDQpzdW1tYXJ5KG1vZGVsb18xLjIpDQpgYGANCg0KDQojIyMgRVZBTFVBQ0nDk04gREUgSElHSUVORQ0KIyMjIyBtb2RlbG8gMjogaW5kaWNhY2nDs24geSBldmFsdWFjacOzbiBkZSBoaWdpZW5lDQpgYGB7ciBtb2RlbG8gMn0NCm1vZGVsb18yIDwtIGNveHBoKGttIH4gDQogICAgICAgICAgICAgICAgICAgICMgZGYkR8OJTkVSTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBESUVOVEUgQUZFQ1RBRE9gICsNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRESUFHTsOTU1RJQ08gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRUUkFUQU1JRU5UTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUSUVNUE8gSEFTVEEgTEEgQVRFTkNJw5NOIChlbiBob3JhcylgICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYEVTVEFETyBSQURJQ1VMQVIgSU5JQ0lBTGAgKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVFJBVU1BVElTTU8gUkVQRVRJRE9gLA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUUkFVTUFUSVNNTyBQUkVWSU9gICsgDQogICAgICAgICAgICAgICAgICAgICBkZiRgSU5ESUNBQ0nDk04gREUgSElHSUVORWAgKyANCiAgICAgICAgICAgICAgICAgICAgIGRmJGBFVkFMVUFDScOTTiBERSBISUdJRU5FYCwNCiAgICAgICAgICAgICAgICAgICAgI2RmJGBPTklDT0ZBR0lBIC0gSU5URVJQT1NJQ0nDk04gREUgT0JKRVRPU2AgLCANCiAgICAgICAgICAgICAgICAgIGRhdGEgPSAgZGYpDQpzdW1tYXJ5KG1vZGVsb18yKQ0KYGBgDQoNCiMjIyMgbW9kZWxvIDIuMSBpbmRpY2FjacOzbiBkZSBoaWdpZW5lIHBvciBzaSBzb2xvDQpgYGB7ciBtb2RlbG8gMi4xfQ0KbW9kZWxvXzIuMSA8LSBjb3hwaChrbSB+IA0KICAgICAgICAgICAgICAgICAgICAjIGRmJEfDiU5FUk8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgRElFTlRFIEFGRUNUQURPYCArDQogICAgICAgICAgICAgICAgICAgICMgZGYkRElBR07Dk1NUSUNPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkVFJBVEFNSUVOVE8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVElFTVBPIEhBU1RBIExBIEFURU5DScOTTiAoZW4gaG9yYXMpYCArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBFU1RBRE8gUkFESUNVTEFSIElOSUNJQUxgICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYFRSQVVNQVRJU01PIFJFUEVUSURPYCwNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVFJBVU1BVElTTU8gUFJFVklPYCArIA0KICAgICAgICAgICAgICAgICAgICAgZGYkYElORElDQUNJw5NOIERFIEhJR0lFTkVgLCANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgRVZBTFVBQ0nDk04gREUgSElHSUVORWAgKyANCiAgICAgICAgICAgICAgICAgICAgI2RmJGBPTklDT0ZBR0lBIC0gSU5URVJQT1NJQ0nDk04gREUgT0JKRVRPU2AgLCANCiAgICAgICAgICAgICAgICAgIGRhdGEgPSAgZGYpDQpzdW1tYXJ5KG1vZGVsb18yLjEpDQpgYGANCiMjIyMgbW9kZWxvIDIuMiBldmFsdWFjacOzbiBkZSBoaWdpZW5lIHBvciBzaSBzb2xvDQpgYGB7ciBtb2RlbG8gMi4yfQ0KbW9kZWxvXzIuMiA8LSBjb3hwaChrbSB+IA0KICAgICAgICAgICAgICAgICAgICAjIGRmJEfDiU5FUk8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgRElFTlRFIEFGRUNUQURPYCArDQogICAgICAgICAgICAgICAgICAgICMgZGYkRElBR07Dk1NUSUNPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkVFJBVEFNSUVOVE8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVElFTVBPIEhBU1RBIExBIEFURU5DScOTTiAoZW4gaG9yYXMpYCArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBFU1RBRE8gUkFESUNVTEFSIElOSUNJQUxgICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYFRSQVVNQVRJU01PIFJFUEVUSURPYCwNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVFJBVU1BVElTTU8gUFJFVklPYCArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBJTkRJQ0FDScOTTiBERSBISUdJRU5FYCArIA0KICAgICAgICAgICAgICAgICAgICAgZGYkYEVWQUxVQUNJw5NOIERFIEhJR0lFTkVgLA0KICAgICAgICAgICAgICAgICAgICAjZGYkYE9OSUNPRkFHSUEgLSBJTlRFUlBPU0lDScOTTiBERSBPQkpFVE9TYCAsIA0KICAgICAgICAgICAgICAgICAgZGF0YSA9ICBkZikNCnN1bW1hcnkobW9kZWxvXzIuMikNCmBgYA0KDQojIyMgT05JQ09GQUdJQSAtIElOVEVSUE9TSUNJw5NOIERFIE9CSkVUT1MNCiMjIyMgbW9kZWxvIDM6IG1hbG9zIGjDoWJpdG9zDQpgYGB7ciBtb2RlbG8gM30NCm1vZGVsb18zIDwtIGNveHBoKGttIH4gDQogICAgICAgICAgICAgICAgICAgICMgZGYkR8OJTkVSTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBESUVOVEUgQUZFQ1RBRE9gICsNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRESUFHTsOTU1RJQ08gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRUUkFUQU1JRU5UTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUSUVNUE8gSEFTVEEgTEEgQVRFTkNJw5NOIChlbiBob3JhcylgICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYEVTVEFETyBSQURJQ1VMQVIgSU5JQ0lBTGAgKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVFJBVU1BVElTTU8gUkVQRVRJRE9gLA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUUkFVTUFUSVNNTyBQUkVWSU9gICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYElORElDQUNJw5NOIERFIEhJR0lFTkVgICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYEVWQUxVQUNJw5NOIERFIEhJR0lFTkVgICsgDQogICAgICAgICAgICAgICAgICAgIGRmJGBPTklDT0ZBR0lBIC0gSU5URVJQT1NJQ0nDk04gREUgT0JKRVRPU2AgLCANCiAgICAgICAgICAgICAgICAgIGRhdGEgPSAgZGYpDQpzdW1tYXJ5KG1vZGVsb18zKQ0KYGBgDQoNCiMjIyBFU1RBRE8gUkFESUNVTEFSIElOSUNJQUwNCiMjIyMgbW9kZWxvIDQ6IGVzdGFkbyByYWRpY3VsYXIgbW9vcnJlcw0KDQpgYGB7ciBtb2RlbG8gNH0NCm1vZGVsb180IDwtIGNveHBoKGttIH4gDQogICAgICAgICAgICAgICAgICAgICMgZGYkR8OJTkVSTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBESUVOVEUgQUZFQ1RBRE9gICsNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRESUFHTsOTU1RJQ08gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRUUkFUQU1JRU5UTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUSUVNUE8gSEFTVEEgTEEgQVRFTkNJw5NOIChlbiBob3JhcylgICsgDQogICAgICAgICAgICAgICAgICAgICBkZiRgRVNUQURPIFJBRElDVUxBUiBJTklDSUFMYCwNCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVFJBVU1BVElTTU8gUkVQRVRJRE9gLA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUUkFVTUFUSVNNTyBQUkVWSU9gICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYElORElDQUNJw5NOIERFIEhJR0lFTkVgICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYEVWQUxVQUNJw5NOIERFIEhJR0lFTkVgICsgDQogICAgICAgICAgICAgICAgICAgICNkZiRgT05JQ09GQUdJQSAtIElOVEVSUE9TSUNJw5NOIERFIE9CSkVUT1NgICwgDQogICAgICAgICAgICAgICAgICBkYXRhID0gIGRmKQ0Kc3VtbWFyeShtb2RlbG9fNCkNCmBgYA0KDQojIyMgTW9kZWxvIDk5IHF1ZSBzdWdpZXJvDQpgYGB7ciBtb2RlbG8gOTl9DQptb2RlbG9fOTkgPC0gY294cGgoa20gfiANCiAgICAgICAgICAgICAgICAgICAgIGRmJEfDiU5FUk8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgRElFTlRFIEFGRUNUQURPYCArDQogICAgICAgICAgICAgICAgICAgICBkZiRESUFHTsOTU1RJQ08gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRUUkFUQU1JRU5UTyArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUSUVNUE8gSEFTVEEgTEEgQVRFTkNJw5NOIChlbiBob3JhcylgICsgDQogICAgICAgICAgICAgICAgICAgICBkZiRgRVNUQURPIFJBRElDVUxBUiBJTklDSUFMYCArIA0KICAgICAgICAgICAgICAgICAgICAjIGRmJGBUUkFVTUFUSVNNTyBSRVBFVElET2AgLA0KICAgICAgICAgICAgICAgICAgICAgZGYkYFRSQVVNQVRJU01PIFBSRVZJT2AgKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgSU5ESUNBQ0nDk04gREUgSElHSUVORWAgKyANCiAgICAgICAgICAgICAgICAgICAgIGRmJGBFVkFMVUFDScOTTiBERSBISUdJRU5FYCArIA0KICAgICAgICAgICAgICAgICAgICAgZGYkYE9OSUNPRkFHSUEgLSBJTlRFUlBPU0lDScOTTiBERSBPQkpFVE9TYCAsIA0KICAgICAgICAgICAgICAgICAgZGF0YSA9ICBkZikNCnN1bW1hcnkobW9kZWxvXzk5KQ0KYGBgDQoNCkNoZXF1ZW8gcG9yIHNpIHNlIHZpb2xhIGVsIHJpZXNnbyBwcm9wb3JjaW9uYWwgKGNvbnN0YW50ZSBIUiBlbiBlbCB0aWVtcG8pDQoNCmBgYHtyIHJpZXNnbyBwcm8gOTl9DQoocmVzLnpwaDk5IDwtIGNveC56cGgobW9kZWxvXzk5KSkNCmBgYA0KDQpgYGB7cn0NCmNveF9maXRfOTkgPC0gc3VydmZpdChtb2RlbG9fOTkpDQphdXRvcGxvdChjb3hfZml0Xzk5KQ0KDQpgYGANCk9qbywgbGEgbWVkaWFuYSBubyB0b2NhIGVsIDUwJSwgcG9yIGxvIHF1ZSBkYSBtZWRpYW4gPSBOQQ0KDQpgYGB7cn0NCmNveF9maXRfOTkNCmBgYA0KDQpgYGB7cn0NCnN1bW1hcnkoY294X2ZpdF85OSkNCmBgYA0KDQoNCmBgYHtyfQ0KYWFfZml0Xzk5IDwtYWFyZWcoU3Vydih0aW1lLCBFdmVudG8pIH4gDQogICAgICAgICAgICAgICAgICBkZiRHw4lORVJPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYERJRU5URSBBRkVDVEFET2AgKw0KICAgICAgICAgICAgICAgICAgICAgZGYkRElBR07Dk1NUSUNPICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkVFJBVEFNSUVOVE8gKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVElFTVBPIEhBU1RBIExBIEFURU5DScOTTiAoZW4gaG9yYXMpYCArIA0KICAgICAgICAgICAgICAgICAgICAgZGYkYEVTVEFETyBSQURJQ1VMQVIgSU5JQ0lBTGAgKyANCiAgICAgICAgICAgICAgICAgICAgIyBkZiRgVFJBVU1BVElTTU8gUkVQRVRJRE9gICwNCiAgICAgICAgICAgICAgICAgICAgIGRmJGBUUkFVTUFUSVNNTyBQUkVWSU9gICsgDQogICAgICAgICAgICAgICAgICAgICMgZGYkYElORElDQUNJw5NOIERFIEhJR0lFTkVgICsgDQogICAgICAgICAgICAgICAgICAgICBkZiRgRVZBTFVBQ0nDk04gREUgSElHSUVORWAgKyANCiAgICAgICAgICAgICAgICAgICAgIGRmJGBPTklDT0ZBR0lBIC0gSU5URVJQT1NJQ0nDk04gREUgT0JKRVRPU2AgLCANCiAgICAgICAgICAgICAgICAgIGRhdGEgPSAgZGYpDQoNCmF1dG9wbG90KGFhX2ZpdF85OSkNCg0KYGBgDQoNCg0KIyBUYW1hw7FvIG11ZXN0cmFsIHkgcG90ZW5jaWENCg0KYGBge3J9DQpociA9IDIgIyBoYXphcmQgcmF0aW8NCmhyMCA9IDENCnBFID0gMC44ICMgcHJvYmFiaWxpZGFkIGRlbCBldmVudG8NCnBBID0gMC41ICMgcHJvcG9yY2nDs24gZW4gZWwgZ3J1cG8gQQ0KYWxwaGEgPSAwLjA1DQpiZXRhID0gMC4yMA0KKG49KChxbm9ybSgxLWFscGhhLzIpK3Fub3JtKDEtYmV0YSkpLyhsb2coaHIpLWxvZyhocjApKSleMi8ocEEqKDEtcEEpKnBFKSkNCmNlaWxpbmcobikgIyA4Mg0KKFBvd2VyPXBub3JtKChsb2coaHIpLWxvZyhocjApKSpzcXJ0KG4qcEEqKDEtcEEpKnBFKS1xbm9ybSgxLWFscGhhLzIpKSkNCmBgYA0KDQojIFJlZmVyZW5jaWFzDQoNCmh0dHBzOi8vYW5hbHl0aWNzYnVkZGh1LndvcmRwcmVzcy5jb20vMjAxNy8wNC8xNy9ob3ctdG8tZG8tY294cHJvcG9ydGlvbmFsLWhhemFyZC1yZWdyZXNzaW9uLW1vZGVsbGluZy11c2luZy1yLw0KDQoNCmh0dHBzOi8vd3d3Lm9wZW5pbnRyby5vcmcvZG93bmxvYWQucGhwP2ZpbGU9c3Vydml2YWxfYW5hbHlzaXNfaW5fUiZyZWZlcnJlcj0vc3RhdC9zdXJ2LnBocA0KDQpodHRwczovL2NvdXJzZXMubnVzLmVkdS5zZy9jb3Vyc2Uvc3RhY2FyL2ludGVybmV0L3N0MzI0Mi9oYW5kb3V0cy9ub3RlczMucGRmDQoNCkNob3cgUywgU2hhbyBKLCBXYW5nIEguIDIwMDguIFNhbXBsZSBTaXplIENhbGN1bGF0aW9ucyBpbiBDbGluaWNhbCBSZXNlYXJjaC4gMm5kIEVkLiBDaGFwbWFuICYgSGFsbC9DUkMgQmlvc3RhdGlzdGljcyBTZXJpZXMuIHBhZ2UgMTc3Lg0KDQoNCg==