sesión 1:

recibos <- c(266.63,163.41,219.41,162.64,187.16,289.17,306.55,335.48,343.50,226.80,208.99,230.46)

media <- mean(recibos)
media
## [1] 245.0167
mediana <- median(recibos)
mediana
## [1] 228.63
rango <- max(recibos)-min(recibos)
rango
## [1] 180.86
varianza <- var(recibos)
varianza
## [1] 3943.264

Cálculo varianza

recibos1 <- recibos-media
recibos1
##  [1]  21.61333 -81.60667 -25.60667 -82.37667 -57.85667  44.15333  61.53333
##  [8]  90.46333  98.48333 -18.21667 -36.02667 -14.55667
recibos2 <-recibos1*recibos1
recibos2
##  [1]  467.1362 6659.6480  655.7014 6785.9152 3347.3939 1949.5168 3786.3511
##  [8] 8183.6147 9698.9669  331.8469 1297.9207  211.8965

Sesión 2:

# Ejemplo 1

#a

a <- pnorm(600,1300,600)
a
## [1] 0.1216725
#b

b <- (pnorm(1500,1300,600) - pnorm(1000,1300,600))*100
b
## [1] 32.20211
# c
c <- (1 - pnorm(2200,1300,600))*100
c
## [1] 6.68072

Sesión 3:

Paso 1: Plantear la hipótesis nula y la hipótesis alternativa de la prueba de hipótesis1.

Paso 2: Establecer el nivel de significación alfa (α) deseado1.

Paso 3: Calcular el estadístico de la prueba de hipótesis1.

Paso 4: Determinar los valores críticos de la prueba de hipótesis para averiguar la región de rechazo y la región de aceptación de la prueba de hipótesis1.

Paso 5: Tomar la decisión si se debe aceptar o rechazar la hipótesis nula2.

Ejercicios del mundo real:

3-84 ¿Qué reacción tendría usted si un aficionado al fútbol americano le dijera lo siguiente? “Los Raiders de Rockland tienen un promedio de 3.6 yardas de recorrido por tierra. Como sólo necesitan 10 yardas para anotar y tienen cuatro oportunidades para lograrlo, la anotación es segura, siempre y cuando mantengan su forma de jugar por tierra.”

La afirmación es incorrecta porque ignora completamente la variabilidad en yardas ganadas por carrera.

3-86 A continuación, se tienen 3 partes del presupuesto de defensa de un año, a cada una de éstas se le asignó, por parte del Congreso mexicano, la misma cantidad de financiamiento:  Salario de oficiales (total).  Mantenimiento de la flota aérea.  Adquisiciones de alimentos (total).

Salarios de funcionarios: A; mantenimiento de flota: C; adquisiciones de alimentos: B.

Tomando en cuenta la distribución de posibles resultados para los gastos reales en cada una de éstas áreas, haga corresponder cada sección a una de las curvas de la siguiente figura, fundamente su respuesta.

La compañía podría contratar representantes de ventas con menos experiencia mientras que los vendedores establecidos aumentan a sus niveles de ventas. Otra posibilidad es que se contraten representantes de ventas sin experiencia y otros altamente experimentados al mismo tiempo.

3-92

El 30 de junio de 1992, la capitalización de nueve mercados de valores del Pacífico y Asia fue:

# Crear un data frame con los datos
datos <- data.frame(
  Pais = c("Filipinas", "Indonesia", "Tailandia", "Singapur", "Malasia", "Corea del Sur", "Taiwan", "Hong Kong", "Australia"),
  Capitalizacion = c(17, 21, 44, 50, 79, 86, 140, 178, 203)
)

# Instalar y cargar el paquete knitr para utilizar la función kable
library(knitr)

# Utilizar la función kable para crear una tabla
kable(datos, caption = "Capitalización de países (en miles de millones de dólares)")
Capitalización de países (en miles de millones de dólares)
Pais Capitalizacion
Filipinas 17
Indonesia 21
Tailandia 44
Singapur 50
Malasia 79
Corea del Sur 86
Taiwan 140
Hong Kong 178
Australia 203

Ejercicios del mundo real

# Crear un data frame con los datos
datos <- data.frame(
  Pais = c("Filipinas", "Indonesia", "Tailandia", "Singapur", "Malasia", "Corea del Sur", "Taiwan", "Hong Kong", "Australia"),
  Capitalizacion = c(17, 21, 44, 50, 79, 86, 140, 178, 203)
)

# a) 
media <- mean(datos$Capitalizacion)
cat("a) La media de la capitalización es:", media, "\n")
## a) La media de la capitalización es: 90.88889
# b)
maximo <- max(datos$Capitalizacion)
cat("b) El valor máximo de la capitalización es:", maximo, "\n")
## b) El valor máximo de la capitalización es: 203
# c)
moda <- unique(datos$Capitalizacion[duplicated(datos$Capitalizacion)])
if (length(moda) == 0) {
  cat("c) No hay moda para datos sin agrupar.\n")
} else {
  cat("c) La moda de la capitalización es:", moda, "\n")
}
## c) No hay moda para datos sin agrupar.
# d)
mediana <- median(datos$Capitalizacion)
cat("d) La mediana de la capitalización es:", mediana, "\n")
## d) La mediana de la capitalización es: 79
# e)
desviacion_estandar <- sd(datos$Capitalizacion)
cat("e) La desviación estándar de la capitalización es:", desviacion_estandar, "\n")
## e) La desviación estándar de la capitalización es: 67.96036
# Histograma:
hist(datos$Capitalizacion,
     main = "Histograma de la Capitalización",
     xlab = "Capitalización (en miles de millones de dólares)",
     col = "Green",
     border = "black")

3-100

Matthews, Young y Asociados, una agencia de consultorías de Chapell Hill, tiene los siguientes registros que indican el número de días que cada uno de sus 10 consultores de planta cobró el último año:

212 220 230 210 228 229 231 219 221 222

a) Sin calcular el valor de las medidas, ¿cuál de ellas cree usted que le daría una mayor

La desviación estándar proporciona más información sobre la distribución de los datos que el rango, ya que tiene en cuenta la variabilidad de todos los datos y no solo la diferencia entre el valor máximo y mínimo.

b) Calcule: Rango, Varianza y Desviación Estándar.

datos <- c(212, 220, 230, 210, 228, 229, 231, 219, 221, 222)
rango <- max(datos) - min(datos)
varianza <- var(datos)
desviacion_estandar <- sd(datos)
cat("b) El rango es:", rango,
    ", la varianza es:", varianza,
    ", y la desviación estándar es:", desviacion_estandar, "\n")
## b) El rango es: 21 , la varianza es: 54.17778 , y la desviación estándar es: 7.360556

c) Tomando en cuenta la dificultad y el tiempo para calcular cada medida que revisó en el

inciso a), ¿cuál sugeriría como la mejor?

d) ¿Qué haría que usted cambiara su opinión al respecto?

omo los datos tienen una dispersión bastante pareja, el alcance es una medida razonable de la variabilidad.

###3-106

Allison Barett realiza análisis estadísticos para un equipo de carreras automovilísticas. A

A continuación, se presentan las cifras en kilómetros por litro del gasto de combustible de sus automóviles en las carreras recientes:

4.77 6.11 6.11 5.05 5.99 4.91 5.27 6.01 5.75 4.89 6.05 5.22 6.02 5.24 6.11 5.02

# Datos de kilómetros por litro del gasto de combustible
km_por_litro <- c(4.77, 6.11, 6.11, 5.05, 5.99, 4.91, 5.27, 6.01,
                  5.75, 4.89, 6.05, 5.22, 6.02, 5.24, 6.11, 5.02)

# Crear una tabla con los datos
tabla <- data.frame(km_por_litro)

# Mostrar la tabla
tabla
##    km_por_litro
## 1          4.77
## 2          6.11
## 3          6.11
## 4          5.05
## 5          5.99
## 6          4.91
## 7          5.27
## 8          6.01
## 9          5.75
## 10         4.89
## 11         6.05
## 12         5.22
## 13         6.02
## 14         5.24
## 15         6.11
## 16         5.02

Incisos a-f

# Datos de kilómetros por litro del gasto de combustible
km_por_litro <- c(4.77, 6.11, 6.11, 5.05, 5.99, 4.91, 5.27, 6.01,
                  5.75, 4.89, 6.05, 5.22, 6.02, 5.24, 6.11, 5.02)

# a) Cálculo de la mediana
mediana <- median(km_por_litro)
mediana
## [1] 5.51
# b) Cálculo de la media
media <- mean(km_por_litro)
media
## [1] 5.5325
# c) Agrupar los datos en 5 clases de igual tamaño
histograma <- hist(km_por_litro, breaks = 5)

histograma
## $breaks
## [1] 4.6 4.8 5.0 5.2 5.4 5.6 5.8 6.0 6.2
## 
## $counts
## [1] 1 2 2 3 0 1 1 6
## 
## $density
## [1] 0.3125 0.6250 0.6250 0.9375 0.0000 0.3125 0.3125 1.8750
## 
## $mids
## [1] 4.7 4.9 5.1 5.3 5.5 5.7 5.9 6.1
## 
## $xname
## [1] "km_por_litro"
## 
## $equidist
## [1] TRUE
## 
## attr(,"class")
## [1] "histogram"
# Intervalo del valor de consumo de combustible para la clase modal
intervalo_modal <- histograma$mids[which.max(histograma$counts)]
intervalo_modal
## [1] 6.1
# d) La mediana puede ser una mejor medida para servirle a Allison cuando haga un pedido de combustible ya que es menos sensible a valores extremos.

# e) Cálculo del rango
rango <- max(km_por_litro) - min(km_por_litro)
rango
## [1] 1.34
# f) Cálculo de la varianza
varianza <- var(km_por_litro)
varianza
## [1] 0.27466
# g) Cálculo de la desviación estándar
desviacion_estandar <- sd(km_por_litro)
desviacion_estandar
## [1] 0.5240801
# Conclusión: Las medidas de dispersión indican que hay cierta variabilidad en el consumo de combustible de los automóviles en las carreras recientes.

Capítulo 8: Prueba de hipótesis de una sola muestra.

Paso 1: Plantear la hipótesis nula y la hipótesis alternativa de la prueba de hipótesis1.

H0: x̄ = µ
H1: x ≠ µ

Paso 2: Establecer el nivel de significación alfa (α) deseado1.

Paso 3: Calcular el estadístico de la prueba de hipótesis1.

Paso 4: Determinar los valores críticos de la prueba de hipótesis para averiguar la región de rechazo y la región de aceptación de la prueba de hipótesis1.

Paso 5: Tomar la decisión si se debe aceptar o rechazar la hipótesis nula2.

####8-64

Inspectores del gobierno, al investigar los cargos levantados contra una embotelladora de bebidas no alcohólicas, de Texas, que no llenaba adecuadamente sus productos, han muestreado 200 botellas y encontraron que el promedio de llenado es de 31.7 onzas líquidas (aproximadamente 930 ml.) Se anuncia que las botellas contienen 32 onzas líquidas (946.33 ml.). Se sabe que la desviación estándar de la población es de 1.5 onzas líquidas (44.36 ml.). ¿Deberían concluir los inspectores, al nivel de significancia de 2%, que las botellas están siendo llenadas con menos contenido, y emitir una sanción?

n <- 200
media_muestral <- 31.7
media_poblacional <- 32
desviacion_estandar_poblacional <- 1.5
nivel_significancia <- 0.02

# Cálculo del estadístico de prueba
z <- (media_muestral - media_poblacional) / (desviacion_estandar_poblacional / sqrt(n))

# Cálculo del valor p
valor_p <- pnorm(z)

# Conclusión
if (valor_p < nivel_significancia) {
  print("Los inspectores deberían concluir que las botellas están siendo llenadas con menos contenido y emitir una sanción.")
} else {
  print("Los inspectores no tienen suficiente evidencia para concluir que las botellas están siendo llenadas con menos contenido.")
}
## [1] "Los inspectores deberían concluir que las botellas están siendo llenadas con menos contenido y emitir una sanción."

Gráfica:

# Datos del problema
n <- 200
media_muestral <- 31.7
media_poblacional <- 32
desviacion_estandar_poblacional <- 1.5
nivel_significancia <- 0.02

# Cálculo del estadístico de prueba
z <- (media_muestral - media_poblacional) / (desviacion_estandar_poblacional / sqrt(n))

# Cálculo del valor crítico
z_critico <- qnorm(nivel_significancia)

# Crear una gráfica de significancia
x <- seq(-4, 4, length = 1000)
y <- dnorm(x)
plot(x, y, type = "l", xlab = "z", ylab = "Densidad de probabilidad")
abline(v = z_critico, col = "red")
polygon(c(z_critico, x[x <= z_critico], min(x)), c(0, y[x <= z_critico], 0), col = "red")

LS0tDQp0aXRsZTogIldvcmtzaG9wIDEiDQphdXRob3I6ICJMdWlzIEZlbGlwZSBGcmFuY28gUm9kcsOtZ3VleiINCmRhdGU6ICIyMDIzLTA1LTE1Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCi0tLQ0KDQpzZXNpw7NuIDE6DQoNCmBgYHtyfQ0KcmVjaWJvcyA8LSBjKDI2Ni42MywxNjMuNDEsMjE5LjQxLDE2Mi42NCwxODcuMTYsMjg5LjE3LDMwNi41NSwzMzUuNDgsMzQzLjUwLDIyNi44MCwyMDguOTksMjMwLjQ2KQ0KDQptZWRpYSA8LSBtZWFuKHJlY2lib3MpDQptZWRpYQ0KDQptZWRpYW5hIDwtIG1lZGlhbihyZWNpYm9zKQ0KbWVkaWFuYQ0KDQpyYW5nbyA8LSBtYXgocmVjaWJvcyktbWluKHJlY2lib3MpDQpyYW5nbw0KDQp2YXJpYW56YSA8LSB2YXIocmVjaWJvcykNCnZhcmlhbnphDQpgYGANCkPDoWxjdWxvIHZhcmlhbnphDQpgYGB7cn0NCnJlY2lib3MxIDwtIHJlY2lib3MtbWVkaWENCnJlY2lib3MxDQoNCnJlY2lib3MyIDwtcmVjaWJvczEqcmVjaWJvczENCnJlY2lib3MyDQoNCg0KYGBgDQoNClNlc2nDs24gMjoNCmBgYHtyfQ0KIyBFamVtcGxvIDENCg0KI2ENCg0KYSA8LSBwbm9ybSg2MDAsMTMwMCw2MDApDQphDQojYg0KDQpiIDwtIChwbm9ybSgxNTAwLDEzMDAsNjAwKSAtIHBub3JtKDEwMDAsMTMwMCw2MDApKSoxMDANCmINCiMgYw0KYyA8LSAoMSAtIHBub3JtKDIyMDAsMTMwMCw2MDApKSoxMDANCmMNCmBgYA0KDQojIyMjIFNlc2nDs24gMzogDQoNClBhc28gMTogUGxhbnRlYXIgbGEgaGlww7N0ZXNpcyBudWxhIHkgbGEgaGlww7N0ZXNpcyBhbHRlcm5hdGl2YSBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpczEuDQoNClBhc28gMjogRXN0YWJsZWNlciBlbCBuaXZlbCBkZSBzaWduaWZpY2FjacOzbiBhbGZhICjOsSkgZGVzZWFkbzEuDQoNClBhc28gMzogQ2FsY3VsYXIgZWwgZXN0YWTDrXN0aWNvIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA0OiBEZXRlcm1pbmFyIGxvcyB2YWxvcmVzIGNyw610aWNvcyBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpcyBwYXJhIGF2ZXJpZ3VhciBsYSByZWdpw7NuIGRlIHJlY2hhem8geSBsYSByZWdpw7NuIGRlIGFjZXB0YWNpw7NuIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA1OiBUb21hciBsYSBkZWNpc2nDs24gc2kgc2UgZGViZSBhY2VwdGFyIG8gcmVjaGF6YXIgbGEgaGlww7N0ZXNpcyBudWxhMi4gDQoNCiMjIEVqZXJjaWNpb3MgZGVsIG11bmRvIHJlYWw6DQoNCjMtODQNCsK/UXXDqSByZWFjY2nDs24gdGVuZHLDrWEgdXN0ZWQgc2kgdW4gYWZpY2lvbmFkbyBhbCBmw7p0Ym9sIGFtZXJpY2FubyBsZSBkaWplcmEgbG8gc2lndWllbnRlPyDigJxMb3MgUmFpZGVycw0KZGUgUm9ja2xhbmQgdGllbmVuIHVuIHByb21lZGlvIGRlIDMuNiB5YXJkYXMgZGUgcmVjb3JyaWRvIHBvciB0aWVycmEuIENvbW8gc8OzbG8gbmVjZXNpdGFuIDEwIHlhcmRhcyBwYXJhIGFub3RhciB5IHRpZW5lbiBjdWF0cm8gb3BvcnR1bmlkYWRlcyBwYXJhIGxvZ3JhcmxvLCBsYSBhbm90YWNpw7NuIGVzIHNlZ3VyYSwgc2llbXByZSB5DQpjdWFuZG8gbWFudGVuZ2FuIHN1IGZvcm1hIGRlIGp1Z2FyIHBvciB0aWVycmEu4oCdDQoNCiMjIyMjIExhIGFmaXJtYWNpw7NuIGVzIGluY29ycmVjdGEgcG9ycXVlIGlnbm9yYSBjb21wbGV0YW1lbnRlIGxhIHZhcmlhYmlsaWRhZCBlbiB5YXJkYXMgZ2FuYWRhcyBwb3IgY2FycmVyYS4NCg0KMy04Ng0KQSBjb250aW51YWNpw7NuLCBzZSB0aWVuZW4gMyBwYXJ0ZXMgZGVsIHByZXN1cHVlc3RvIGRlIGRlZmVuc2EgZGUgdW4gYcOxbywgYSBjYWRhIHVuYSBkZSDDqXN0YXMgc2UgbGUNCmFzaWduw7MsIHBvciBwYXJ0ZSBkZWwgQ29uZ3Jlc28gbWV4aWNhbm8sIGxhIG1pc21hIGNhbnRpZGFkIGRlIGZpbmFuY2lhbWllbnRvOg0K74K3IFNhbGFyaW8gZGUgb2ZpY2lhbGVzICh0b3RhbCkuDQrvgrcgTWFudGVuaW1pZW50byBkZSBsYSBmbG90YSBhw6lyZWEuDQrvgrcgQWRxdWlzaWNpb25lcyBkZSBhbGltZW50b3MgKHRvdGFsKS4NCg0KIyMjIyMgU2FsYXJpb3MgZGUgZnVuY2lvbmFyaW9zOiBBOyBtYW50ZW5pbWllbnRvIGRlIGZsb3RhOiBDOyBhZHF1aXNpY2lvbmVzIGRlIGFsaW1lbnRvczogQi4NCg0KVG9tYW5kbyBlbiBjdWVudGEgbGEgZGlzdHJpYnVjacOzbiBkZSBwb3NpYmxlcyByZXN1bHRhZG9zIHBhcmEgbG9zIGdhc3RvcyByZWFsZXMgZW4gY2FkYSB1bmEgZGUNCsOpc3RhcyDDoXJlYXMsIGhhZ2EgY29ycmVzcG9uZGVyIGNhZGEgc2VjY2nDs24gYSB1bmEgZGUgbGFzIGN1cnZhcyBkZSBsYSBzaWd1aWVudGUgZmlndXJhLCBmdW5kYW1lbnRlDQpzdSByZXNwdWVzdGEuDQoNCiMjIyMjIExhIGNvbXBhw7HDrWEgcG9kcsOtYSBjb250cmF0YXIgcmVwcmVzZW50YW50ZXMgZGUgdmVudGFzIGNvbiBtZW5vcyBleHBlcmllbmNpYSBtaWVudHJhcyBxdWUgbG9zIHZlbmRlZG9yZXMgZXN0YWJsZWNpZG9zIGF1bWVudGFuIGEgc3VzIG5pdmVsZXMgZGUgdmVudGFzLiBPdHJhIHBvc2liaWxpZGFkIGVzIHF1ZSBzZSBjb250cmF0ZW4gcmVwcmVzZW50YW50ZXMgZGUgdmVudGFzIHNpbiBleHBlcmllbmNpYSB5IG90cm9zIGFsdGFtZW50ZSBleHBlcmltZW50YWRvcyBhbCBtaXNtbyB0aWVtcG8uDQoNCg0KMy05Mg0KDQpFbCAzMCBkZSBqdW5pbyBkZSAxOTkyLCBsYSBjYXBpdGFsaXphY2nDs24gZGUgbnVldmUgbWVyY2Fkb3MgZGUgdmFsb3JlcyBkZWwgUGFjw61maWNvIHkgQXNpYSBmdWU6DQoNCmBgYHtyfQ0KIyBDcmVhciB1biBkYXRhIGZyYW1lIGNvbiBsb3MgZGF0b3MNCmRhdG9zIDwtIGRhdGEuZnJhbWUoDQogIFBhaXMgPSBjKCJGaWxpcGluYXMiLCAiSW5kb25lc2lhIiwgIlRhaWxhbmRpYSIsICJTaW5nYXB1ciIsICJNYWxhc2lhIiwgIkNvcmVhIGRlbCBTdXIiLCAiVGFpd2FuIiwgIkhvbmcgS29uZyIsICJBdXN0cmFsaWEiKSwNCiAgQ2FwaXRhbGl6YWNpb24gPSBjKDE3LCAyMSwgNDQsIDUwLCA3OSwgODYsIDE0MCwgMTc4LCAyMDMpDQopDQoNCiMgSW5zdGFsYXIgeSBjYXJnYXIgZWwgcGFxdWV0ZSBrbml0ciBwYXJhIHV0aWxpemFyIGxhIGZ1bmNpw7NuIGthYmxlDQpsaWJyYXJ5KGtuaXRyKQ0KDQojIFV0aWxpemFyIGxhIGZ1bmNpw7NuIGthYmxlIHBhcmEgY3JlYXIgdW5hIHRhYmxhDQprYWJsZShkYXRvcywgY2FwdGlvbiA9ICJDYXBpdGFsaXphY2nDs24gZGUgcGHDrXNlcyAoZW4gbWlsZXMgZGUgbWlsbG9uZXMgZGUgZMOzbGFyZXMpIikNCmBgYA0KDQoNCkVqZXJjaWNpb3MgZGVsIG11bmRvIHJlYWwNCg0KYGBge3J9DQojIENyZWFyIHVuIGRhdGEgZnJhbWUgY29uIGxvcyBkYXRvcw0KZGF0b3MgPC0gZGF0YS5mcmFtZSgNCiAgUGFpcyA9IGMoIkZpbGlwaW5hcyIsICJJbmRvbmVzaWEiLCAiVGFpbGFuZGlhIiwgIlNpbmdhcHVyIiwgIk1hbGFzaWEiLCAiQ29yZWEgZGVsIFN1ciIsICJUYWl3YW4iLCAiSG9uZyBLb25nIiwgIkF1c3RyYWxpYSIpLA0KICBDYXBpdGFsaXphY2lvbiA9IGMoMTcsIDIxLCA0NCwgNTAsIDc5LCA4NiwgMTQwLCAxNzgsIDIwMykNCikNCg0KIyBhKSANCm1lZGlhIDwtIG1lYW4oZGF0b3MkQ2FwaXRhbGl6YWNpb24pDQpjYXQoImEpIExhIG1lZGlhIGRlIGxhIGNhcGl0YWxpemFjacOzbiBlczoiLCBtZWRpYSwgIlxuIikNCg0KIyBiKQ0KbWF4aW1vIDwtIG1heChkYXRvcyRDYXBpdGFsaXphY2lvbikNCmNhdCgiYikgRWwgdmFsb3IgbcOheGltbyBkZSBsYSBjYXBpdGFsaXphY2nDs24gZXM6IiwgbWF4aW1vLCAiXG4iKQ0KDQojIGMpDQptb2RhIDwtIHVuaXF1ZShkYXRvcyRDYXBpdGFsaXphY2lvbltkdXBsaWNhdGVkKGRhdG9zJENhcGl0YWxpemFjaW9uKV0pDQppZiAobGVuZ3RoKG1vZGEpID09IDApIHsNCiAgY2F0KCJjKSBObyBoYXkgbW9kYSBwYXJhIGRhdG9zIHNpbiBhZ3J1cGFyLlxuIikNCn0gZWxzZSB7DQogIGNhdCgiYykgTGEgbW9kYSBkZSBsYSBjYXBpdGFsaXphY2nDs24gZXM6IiwgbW9kYSwgIlxuIikNCn0NCg0KIyBkKQ0KbWVkaWFuYSA8LSBtZWRpYW4oZGF0b3MkQ2FwaXRhbGl6YWNpb24pDQpjYXQoImQpIExhIG1lZGlhbmEgZGUgbGEgY2FwaXRhbGl6YWNpw7NuIGVzOiIsIG1lZGlhbmEsICJcbiIpDQoNCiMgZSkNCmRlc3ZpYWNpb25fZXN0YW5kYXIgPC0gc2QoZGF0b3MkQ2FwaXRhbGl6YWNpb24pDQpjYXQoImUpIExhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBkZSBsYSBjYXBpdGFsaXphY2nDs24gZXM6IiwgZGVzdmlhY2lvbl9lc3RhbmRhciwgIlxuIikNCg0KIyBIaXN0b2dyYW1hOg0KaGlzdChkYXRvcyRDYXBpdGFsaXphY2lvbiwNCiAgICAgbWFpbiA9ICJIaXN0b2dyYW1hIGRlIGxhIENhcGl0YWxpemFjacOzbiIsDQogICAgIHhsYWIgPSAiQ2FwaXRhbGl6YWNpw7NuIChlbiBtaWxlcyBkZSBtaWxsb25lcyBkZSBkw7NsYXJlcykiLA0KICAgICBjb2wgPSAiR3JlZW4iLA0KICAgICBib3JkZXIgPSAiYmxhY2siKQ0KYGBgDQoNCg0KIyMjIyAzLTEwMA0KDQpNYXR0aGV3cywgWW91bmcgeSBBc29jaWFkb3MsIHVuYSBhZ2VuY2lhIGRlIGNvbnN1bHRvcsOtYXMgZGUgQ2hhcGVsbCBIaWxsLCB0aWVuZSBsb3Mgc2lndWllbnRlcw0KcmVnaXN0cm9zIHF1ZSBpbmRpY2FuIGVsIG7Dum1lcm8gZGUgZMOtYXMgcXVlIGNhZGEgdW5vIGRlIHN1cyAxMCBjb25zdWx0b3JlcyBkZSBwbGFudGEgY29icsOzIGVsIMO6bHRpbW8NCmHDsW86DQoNCjIxMiAyMjAgMjMwIDIxMCAyMjggMjI5IDIzMSAyMTkgMjIxIDIyMg0KDQojIyMjIGEpIFNpbiBjYWxjdWxhciBlbCB2YWxvciBkZSBsYXMgbWVkaWRhcywgwr9jdcOhbCBkZSBlbGxhcyBjcmVlIHVzdGVkIHF1ZSBsZSBkYXLDrWEgdW5hIG1heW9yDQoNCkxhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBwcm9wb3JjaW9uYSBtw6FzIGluZm9ybWFjacOzbiBzb2JyZSBsYSBkaXN0cmlidWNpw7NuIGRlIGxvcyBkYXRvcyBxdWUgZWwgcmFuZ28sIHlhIHF1ZSB0aWVuZSBlbiBjdWVudGEgbGEgdmFyaWFiaWxpZGFkIGRlIHRvZG9zIGxvcyBkYXRvcyB5IG5vIHNvbG8gbGEgZGlmZXJlbmNpYSBlbnRyZSBlbCB2YWxvciBtw6F4aW1vIHkgbcOtbmltby4NCg0KIyMjIyBiKSBDYWxjdWxlOiBSYW5nbywgVmFyaWFuemEgeSBEZXN2aWFjacOzbiBFc3TDoW5kYXIuDQpgYGB7cn0NCmRhdG9zIDwtIGMoMjEyLCAyMjAsIDIzMCwgMjEwLCAyMjgsIDIyOSwgMjMxLCAyMTksIDIyMSwgMjIyKQ0KcmFuZ28gPC0gbWF4KGRhdG9zKSAtIG1pbihkYXRvcykNCnZhcmlhbnphIDwtIHZhcihkYXRvcykNCmRlc3ZpYWNpb25fZXN0YW5kYXIgPC0gc2QoZGF0b3MpDQpjYXQoImIpIEVsIHJhbmdvIGVzOiIsIHJhbmdvLA0KICAgICIsIGxhIHZhcmlhbnphIGVzOiIsIHZhcmlhbnphLA0KICAgICIsIHkgbGEgZGVzdmlhY2nDs24gZXN0w6FuZGFyIGVzOiIsIGRlc3ZpYWNpb25fZXN0YW5kYXIsICJcbiIpDQpgYGANCg0KIyMjIyBjKSBUb21hbmRvIGVuIGN1ZW50YSBsYSBkaWZpY3VsdGFkIHkgZWwgdGllbXBvIHBhcmEgY2FsY3VsYXIgY2FkYSBtZWRpZGEgcXVlIHJldmlzw7MgZW4gZWwNCg0KaW5jaXNvIGEpLCDCv2N1w6FsIHN1Z2VyaXLDrWEgY29tbyBsYSBtZWpvcj8NCg0KIyMjIyBkKSDCv1F1w6kgaGFyw61hIHF1ZSB1c3RlZCBjYW1iaWFyYSBzdSBvcGluacOzbiBhbCByZXNwZWN0bz8NCm9tbyBsb3MgZGF0b3MgdGllbmVuIHVuYSBkaXNwZXJzacOzbiBiYXN0YW50ZSBwYXJlamEsIGVsIGFsY2FuY2UgZXMgdW5hIG1lZGlkYSByYXpvbmFibGUgZGUgbGEgdmFyaWECYmlsaWRhZC4NCg0KIyMjMy0xMDYNCg0KIyMjIyBBbGxpc29uIEJhcmV0dCByZWFsaXphIGFuw6FsaXNpcyBlc3RhZMOtc3RpY29zIHBhcmEgdW4gZXF1aXBvIGRlIGNhcnJlcmFzIGF1dG9tb3ZpbMOtc3RpY2FzLiBBDQoNCiMjIyMgQSBjb250aW51YWNpw7NuLCBzZSBwcmVzZW50YW4gbGFzIGNpZnJhcyBlbiBraWzDs21ldHJvcyBwb3IgbGl0cm8gZGVsIGdhc3RvIGRlIGNvbWJ1c3RpYmxlIGRlIHN1cyBhdXRvbcOzdmlsZXMgZW4gbGFzIGNhcnJlcmFzIHJlY2llbnRlczoNCg0KNC43NyA2LjExIDYuMTEgNS4wNSA1Ljk5IDQuOTEgNS4yNyA2LjAxDQo1Ljc1IDQuODkgNi4wNSA1LjIyIDYuMDIgNS4yNCA2LjExIDUuMDINCmBgYHtyfQ0KIyBEYXRvcyBkZSBraWzDs21ldHJvcyBwb3IgbGl0cm8gZGVsIGdhc3RvIGRlIGNvbWJ1c3RpYmxlDQprbV9wb3JfbGl0cm8gPC0gYyg0Ljc3LCA2LjExLCA2LjExLCA1LjA1LCA1Ljk5LCA0LjkxLCA1LjI3LCA2LjAxLA0KICAgICAgICAgICAgICAgICAgNS43NSwgNC44OSwgNi4wNSwgNS4yMiwgNi4wMiwgNS4yNCwgNi4xMSwgNS4wMikNCg0KIyBDcmVhciB1bmEgdGFibGEgY29uIGxvcyBkYXRvcw0KdGFibGEgPC0gZGF0YS5mcmFtZShrbV9wb3JfbGl0cm8pDQoNCiMgTW9zdHJhciBsYSB0YWJsYQ0KdGFibGENCmBgYA0KDQojIyMgSW5jaXNvcyBhLWYNCmBgYHtyfQ0KIyBEYXRvcyBkZSBraWzDs21ldHJvcyBwb3IgbGl0cm8gZGVsIGdhc3RvIGRlIGNvbWJ1c3RpYmxlDQprbV9wb3JfbGl0cm8gPC0gYyg0Ljc3LCA2LjExLCA2LjExLCA1LjA1LCA1Ljk5LCA0LjkxLCA1LjI3LCA2LjAxLA0KICAgICAgICAgICAgICAgICAgNS43NSwgNC44OSwgNi4wNSwgNS4yMiwgNi4wMiwgNS4yNCwgNi4xMSwgNS4wMikNCg0KIyBhKSBDw6FsY3VsbyBkZSBsYSBtZWRpYW5hDQptZWRpYW5hIDwtIG1lZGlhbihrbV9wb3JfbGl0cm8pDQptZWRpYW5hDQoNCiMgYikgQ8OhbGN1bG8gZGUgbGEgbWVkaWENCm1lZGlhIDwtIG1lYW4oa21fcG9yX2xpdHJvKQ0KbWVkaWENCg0KIyBjKSBBZ3J1cGFyIGxvcyBkYXRvcyBlbiA1IGNsYXNlcyBkZSBpZ3VhbCB0YW1hw7FvDQpoaXN0b2dyYW1hIDwtIGhpc3Qoa21fcG9yX2xpdHJvLCBicmVha3MgPSA1KQ0KaGlzdG9ncmFtYQ0KDQojIEludGVydmFsbyBkZWwgdmFsb3IgZGUgY29uc3VtbyBkZSBjb21idXN0aWJsZSBwYXJhIGxhIGNsYXNlIG1vZGFsDQppbnRlcnZhbG9fbW9kYWwgPC0gaGlzdG9ncmFtYSRtaWRzW3doaWNoLm1heChoaXN0b2dyYW1hJGNvdW50cyldDQppbnRlcnZhbG9fbW9kYWwNCg0KIyBkKSBMYSBtZWRpYW5hIHB1ZWRlIHNlciB1bmEgbWVqb3IgbWVkaWRhIHBhcmEgc2VydmlybGUgYSBBbGxpc29uIGN1YW5kbyBoYWdhIHVuIHBlZGlkbyBkZSBjb21idXN0aWJsZSB5YSBxdWUgZXMgbWVub3Mgc2Vuc2libGUgYSB2YWxvcmVzIGV4dHJlbW9zLg0KDQojIGUpIEPDoWxjdWxvIGRlbCByYW5nbw0KcmFuZ28gPC0gbWF4KGttX3Bvcl9saXRybykgLSBtaW4oa21fcG9yX2xpdHJvKQ0KcmFuZ28NCg0KIyBmKSBDw6FsY3VsbyBkZSBsYSB2YXJpYW56YQ0KdmFyaWFuemEgPC0gdmFyKGttX3Bvcl9saXRybykNCnZhcmlhbnphDQoNCiMgZykgQ8OhbGN1bG8gZGUgbGEgZGVzdmlhY2nDs24gZXN0w6FuZGFyDQpkZXN2aWFjaW9uX2VzdGFuZGFyIDwtIHNkKGttX3Bvcl9saXRybykNCmRlc3ZpYWNpb25fZXN0YW5kYXINCg0KIyBDb25jbHVzacOzbjogTGFzIG1lZGlkYXMgZGUgZGlzcGVyc2nDs24gaW5kaWNhbiBxdWUgaGF5IGNpZXJ0YSB2YXJpYWJpbGlkYWQgZW4gZWwgY29uc3VtbyBkZSBjb21idXN0aWJsZSBkZSBsb3MgYXV0b23Ds3ZpbGVzIGVuIGxhcyBjYXJyZXJhcyByZWNpZW50ZXMuDQpgYGANCg0KIyMgQ2Fww610dWxvIDg6IFBydWViYSBkZSBoaXDDs3Rlc2lzIGRlIHVuYSBzb2xhIG11ZXN0cmEuDQoNClBhc28gMTogUGxhbnRlYXIgbGEgaGlww7N0ZXNpcyBudWxhIHkgbGEgaGlww7N0ZXNpcyBhbHRlcm5hdGl2YSBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpczEuDQoNCiMjIyMjIEgwOiB4zIQgPSDCtQ0KIyMjIyMgSDE6IHgg4omgIMK1DQoNClBhc28gMjogRXN0YWJsZWNlciBlbCBuaXZlbCBkZSBzaWduaWZpY2FjacOzbiBhbGZhICjOsSkgZGVzZWFkbzEuDQoNClBhc28gMzogQ2FsY3VsYXIgZWwgZXN0YWTDrXN0aWNvIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA0OiBEZXRlcm1pbmFyIGxvcyB2YWxvcmVzIGNyw610aWNvcyBkZSBsYSBwcnVlYmEgZGUgaGlww7N0ZXNpcyBwYXJhIGF2ZXJpZ3VhciBsYSByZWdpw7NuIGRlIHJlY2hhem8geSBsYSByZWdpw7NuIGRlIGFjZXB0YWNpw7NuIGRlIGxhIHBydWViYSBkZSBoaXDDs3Rlc2lzMS4NCg0KUGFzbyA1OiBUb21hciBsYSBkZWNpc2nDs24gc2kgc2UgZGViZSBhY2VwdGFyIG8gcmVjaGF6YXIgbGEgaGlww7N0ZXNpcyBudWxhMi4gDQoNCg0KIyMjIzgtNjQNCg0KSW5zcGVjdG9yZXMgZGVsIGdvYmllcm5vLCBhbCBpbnZlc3RpZ2FyIGxvcyBjYXJnb3MgbGV2YW50YWRvcyBjb250cmEgdW5hIGVtYm90ZWxsYWRvcmEgZGUgYmViaWRhcyBubyBhbGNvaMOzbGljYXMsIGRlIFRleGFzLCBxdWUgbm8gbGxlbmFiYSBhZGVjdWFkYW1lbnRlIHN1cyBwcm9kdWN0b3MsIGhhbiBtdWVzdHJlYWRvIDIwMCBib3RlbGxhcyB5IGVuY29udHJhcm9uIHF1ZSBlbCBwcm9tZWRpbyBkZSBsbGVuYWRvIGVzIGRlIDMxLjcgb256YXMgbMOtcXVpZGFzIChhcHJveGltYWRhbWVudGUgOTMwIG1sLikgU2UgYW51bmNpYSBxdWUgbGFzIGJvdGVsbGFzIGNvbnRpZW5lbiAzMiBvbnphcyBsw61xdWlkYXMgKDk0Ni4zMyBtbC4pLiBTZSBzYWJlIHF1ZSBsYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgZGUgbGEgcG9ibGFjacOzbiBlcyBkZSAxLjUgb256YXMgbMOtcXVpZGFzICg0NC4zNiBtbC4pLiDCv0RlYmVyw61hbiBjb25jbHVpciBsb3MgaW5zcGVjdG9yZXMsIGFsIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMiUsIHF1ZSBsYXMgYm90ZWxsYXMgZXN0w6FuIHNpZW5kbyBsbGVuYWRhcyBjb24gbWVub3MgY29udGVuaWRvLCB5IGVtaXRpciB1bmEgc2FuY2nDs24/DQoNCmBgYHtyfQ0KbiA8LSAyMDANCm1lZGlhX211ZXN0cmFsIDwtIDMxLjcNCm1lZGlhX3BvYmxhY2lvbmFsIDwtIDMyDQpkZXN2aWFjaW9uX2VzdGFuZGFyX3BvYmxhY2lvbmFsIDwtIDEuNQ0Kbml2ZWxfc2lnbmlmaWNhbmNpYSA8LSAwLjAyDQoNCiMgQ8OhbGN1bG8gZGVsIGVzdGFkw61zdGljbyBkZSBwcnVlYmENCnogPC0gKG1lZGlhX211ZXN0cmFsIC0gbWVkaWFfcG9ibGFjaW9uYWwpIC8gKGRlc3ZpYWNpb25fZXN0YW5kYXJfcG9ibGFjaW9uYWwgLyBzcXJ0KG4pKQ0KDQojIEPDoWxjdWxvIGRlbCB2YWxvciBwDQp2YWxvcl9wIDwtIHBub3JtKHopDQoNCiMgQ29uY2x1c2nDs24NCmlmICh2YWxvcl9wIDwgbml2ZWxfc2lnbmlmaWNhbmNpYSkgew0KICBwcmludCgiTG9zIGluc3BlY3RvcmVzIGRlYmVyw61hbiBjb25jbHVpciBxdWUgbGFzIGJvdGVsbGFzIGVzdMOhbiBzaWVuZG8gbGxlbmFkYXMgY29uIG1lbm9zIGNvbnRlbmlkbyB5IGVtaXRpciB1bmEgc2FuY2nDs24uIikNCn0gZWxzZSB7DQogIHByaW50KCJMb3MgaW5zcGVjdG9yZXMgbm8gdGllbmVuIHN1ZmljaWVudGUgZXZpZGVuY2lhIHBhcmEgY29uY2x1aXIgcXVlIGxhcyBib3RlbGxhcyBlc3TDoW4gc2llbmRvIGxsZW5hZGFzIGNvbiBtZW5vcyBjb250ZW5pZG8uIikNCn0NCmBgYA0KDQpHcsOhZmljYToNCmBgYHtyfQ0KIyBEYXRvcyBkZWwgcHJvYmxlbWENCm4gPC0gMjAwDQptZWRpYV9tdWVzdHJhbCA8LSAzMS43DQptZWRpYV9wb2JsYWNpb25hbCA8LSAzMg0KZGVzdmlhY2lvbl9lc3RhbmRhcl9wb2JsYWNpb25hbCA8LSAxLjUNCm5pdmVsX3NpZ25pZmljYW5jaWEgPC0gMC4wMg0KDQojIEPDoWxjdWxvIGRlbCBlc3RhZMOtc3RpY28gZGUgcHJ1ZWJhDQp6IDwtIChtZWRpYV9tdWVzdHJhbCAtIG1lZGlhX3BvYmxhY2lvbmFsKSAvIChkZXN2aWFjaW9uX2VzdGFuZGFyX3BvYmxhY2lvbmFsIC8gc3FydChuKSkNCg0KIyBDw6FsY3VsbyBkZWwgdmFsb3IgY3LDrXRpY28NCnpfY3JpdGljbyA8LSBxbm9ybShuaXZlbF9zaWduaWZpY2FuY2lhKQ0KDQojIENyZWFyIHVuYSBncsOhZmljYSBkZSBzaWduaWZpY2FuY2lhDQp4IDwtIHNlcSgtNCwgNCwgbGVuZ3RoID0gMTAwMCkNCnkgPC0gZG5vcm0oeCkNCnBsb3QoeCwgeSwgdHlwZSA9ICJsIiwgeGxhYiA9ICJ6IiwgeWxhYiA9ICJEZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQiKQ0KYWJsaW5lKHYgPSB6X2NyaXRpY28sIGNvbCA9ICJyZWQiKQ0KcG9seWdvbihjKHpfY3JpdGljbywgeFt4IDw9IHpfY3JpdGljb10sIG1pbih4KSksIGMoMCwgeVt4IDw9IHpfY3JpdGljb10sIDApLCBjb2wgPSAicmVkIikNCmBgYA0KDQoNCg0KDQo=