Input Data
q1 <- read_csv("Q1_data_set_6-11-24.csv",
col_types = cols(treatment = col_factor(levels = c("3",
"4")), block = col_factor(levels = c("1",
"4", "6", "7", "8", "9", "10", "11",
"12")), round = col_factor(levels = c("1",
"2", "3")), inoc_binary = col_factor(levels = c("1",
"0"))))
q1$colony <- as.factor(q1$colony)
rounds <- read_csv("rounds.csv")
q3 <- read_csv("q3_non_inoc_bees.csv",
col_types = cols(treatment = col_factor(levels = c("3",
"4")), block = col_factor(levels = c("1",
"4", "6", "7", "8", "9", "10", "11",
"12")), round = col_factor(levels = c("1",
"2", "3"))))
## Warning: The following named parsers don't match the column names: round
q3$colony <- as.factor(q3$colony)
q3$bee <- as.factor(q3$bee)
q3 <- merge(q3, rounds, by = "colony", all = FALSE)
q4 <- read_csv("q4_all_bees_per_bee.csv",
col_types = cols(treatment = col_factor(levels = c("3",
"4")), block = col_factor(levels = c("1",
"4", "6", "7", "8", "9", "10", "11",
"12")), inoc_binary = col_factor(levels = c("1",
"0")), round = col_factor(levels = c("1",
"2", "3"))))
q4$colony <- as.factor(q4$colony)
How long since inoculation does it take for an infection to be
detected in the inoculated bee?
days_detec <- glm.nb(day_first_detection ~ treatment + avg.pol + round, data = q1)
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
drop1(days_detec, test = "Chisq")
## Single term deletions
##
## Model:
## day_first_detection ~ treatment + avg.pol + round
## Df Deviance AIC LRT Pr(>Chi)
## <none> 2.6217 48.107
## treatment 1 3.5071 46.992 0.8854 0.3467
## avg.pol 1 4.3335 47.819 1.7118 0.1908
## round 2 4.9317 46.417 2.3100 0.3151
ddet1 <- update(days_detec, .~. -round)
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
drop1(ddet1, test = "Chisq")
## Single term deletions
##
## Model:
## day_first_detection ~ treatment + avg.pol
## Df Deviance AIC LRT Pr(>Chi)
## <none> 4.9316 46.417
## treatment 1 5.8877 45.373 0.95607 0.3282
## avg.pol 1 5.4377 44.923 0.50612 0.4768
ddet2 <- update(ddet1, .~. -avg.pol)
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
drop1(ddet2, test = "Chisq")
## Single term deletions
##
## Model:
## day_first_detection ~ treatment
## Df Deviance AIC LRT Pr(>Chi)
## <none> 5.4377 44.923
## treatment 1 6.5334 44.019 1.0957 0.2952
Anova(ddet2)
## Analysis of Deviance Table (Type II tests)
##
## Response: day_first_detection
## LR Chisq Df Pr(>Chisq)
## treatment 1.0957 1 0.2952
plot(q1$treatment, q1$day_first_detection)

days <- q1 %>%
group_by(treatment) %>%
summarise(m = mean(day_first_detection))
days
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 1.75
## 2 4 1.12
How long since inoculation does it take for an infection to be
detected in non-inoculated bees?
days_detec.ni <- glmer.nb(days_first_det ~ treatment + avg.pol + (1|colony) + round, data = q3)
## Warning in theta.ml(Y, mu, weights = object@resp$weights, limit = limit, :
## iteration limit reached
drop1(days_detec.ni, test = "Chisq")
## Single term deletions
##
## Model:
## days_first_det ~ treatment + avg.pol + (1 | colony) + round
## npar AIC LRT Pr(Chi)
## <none> 195.39
## treatment 1 194.25 0.8555 0.354993
## avg.pol 1 194.09 0.6999 0.402828
## round 1 201.21 7.8167 0.005177 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
dd1 <- update(days_detec.ni, .~. -avg.pol)
drop1(dd1, test = "Chisq")
## Single term deletions
##
## Model:
## days_first_det ~ treatment + (1 | colony) + round
## npar AIC LRT Pr(Chi)
## <none> 194.09
## treatment 1 193.05 0.9535 0.328833
## round 1 199.22 7.1251 0.007601 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(q3$treatment, q3$days_first_det)

days.ni <- q3 %>%
group_by(treatment) %>%
summarise(m = mean(days_first_det))
days.ni
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 2.13
## 2 4 1.73
How long does it take for infection to reach ADL in inoculated
bees?
days_detec_adl <- glm.nb(day_first_ADL ~ treatment + avg.pol + round, data = q1)
drop1(days_detec_adl, test = "Chisq")
## Single term deletions
##
## Model:
## day_first_ADL ~ treatment + avg.pol + round
## Df Deviance AIC LRT Pr(>Chi)
## <none> 11.664 65.652
## treatment 1 13.884 65.872 2.22045 0.1362
## avg.pol 1 11.765 63.754 0.10181 0.7497
## round 2 14.566 64.554 2.90186 0.2344
dadl <- update(days_detec_adl, .~. -avg.pol)
drop1(dadl, test = "Chisq")
## Single term deletions
##
## Model:
## day_first_ADL ~ treatment + round
## Df Deviance AIC LRT Pr(>Chi)
## <none> 11.775 63.754
## treatment 1 13.996 63.975 2.2210 0.1361
## round 2 14.584 62.562 2.8084 0.2456
dadl2 <- update(dadl, .~. -round)
Anova(dadl2)
## Analysis of Deviance Table (Type II tests)
##
## Response: day_first_ADL
## LR Chisq Df Pr(>Chisq)
## treatment 2.993 1 0.08363 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(q1$treatment, q1$day_first_ADL)

days.adl <- q1 %>%
group_by(treatment) %>%
summarise(m = mean(day_first_ADL))
days.adl
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 3.5
## 2 4 2
How long does it take for infection to reach ADL in non-inoculated
bees?
q3.adl <- q3[complete.cases(q3$days_first_adl), ]
days_detec_adl.ni <- glmer.nb(days_first_adl ~ treatment + avg.pol + (1|colony) + round, data = q3.adl)
drop1(days_detec_adl.ni, test = "Chisq")
## Single term deletions
##
## Model:
## days_first_adl ~ treatment + avg.pol + (1 | colony) + round
## npar AIC LRT Pr(Chi)
## <none> 221.34
## treatment 1 220.84 1.5064 0.2196816
## avg.pol 1 224.33 4.9936 0.0254419 *
## round 1 232.69 13.3492 0.0002585 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Anova(days_detec_adl.ni)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: days_first_adl
## Chisq Df Pr(>Chisq)
## treatment 1.6428 1 0.1999
## avg.pol 5.8933 1 0.0152 *
## round 16.8066 1 4.139e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(q3$treatment, q3$days_first_adl)

days.adl.ni <- q3.adl %>%
group_by(treatment) %>%
summarise(m = mean(days_first_adl))
days.adl.ni
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 4.91
## 2 4 6
How many days out of 14 did an inoc bee test above adl for
infection?
total_adl <- glm.nb(num_days_adl ~ treatment + avg.pol + round, data = q1)
drop1(total_adl, test = "Chisq")
## Single term deletions
##
## Model:
## num_days_adl ~ treatment + avg.pol + round
## Df Deviance AIC LRT Pr(>Chi)
## <none> 17.667 90.571
## treatment 1 17.981 88.885 0.3138 0.5753
## avg.pol 1 18.681 89.586 1.0145 0.3138
## round 2 21.194 90.099 3.5272 0.1714
tot_ad <- update(total_adl, .~. -avg.pol)
drop1(tot_ad, test = "Chisq")
## Single term deletions
##
## Model:
## num_days_adl ~ treatment + round
## Df Deviance AIC LRT Pr(>Chi)
## <none> 17.505 89.549
## treatment 1 17.781 87.826 0.2763 0.59913
## round 2 23.247 91.292 5.7430 0.05661 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
totad2 <- update(tot_ad, .~. -round)
Anova(totad2)
## Analysis of Deviance Table (Type II tests)
##
## Response: num_days_adl
## LR Chisq Df Pr(>Chisq)
## treatment 0.24634 1 0.6197
plot(q1$treatment, q1$num_days_adl)

num_adl <- q1 %>%
group_by(treatment) %>%
summarise(m = mean(num_days_adl))
num_adl
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 5.5
## 2 4 6.5
How many days out of 14 did a non-inoc bee test above adl for
infection?
total_adl.ni <- glmer.nb(total_days_adl ~ treatment + avg.pol + (1|colony) + round, data = q3)
drop1(total_adl.ni, test = "Chisq")
## Single term deletions
##
## Model:
## total_days_adl ~ treatment + avg.pol + (1 | colony) + round
## npar AIC LRT Pr(Chi)
## <none> 234.80
## treatment 1 233.68 0.8801 0.34817
## avg.pol 1 235.43 2.6287 0.10495
## round 1 238.09 5.2826 0.02154 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tot_ad.ni <- update(total_adl.ni, .~. -avg.pol)
drop1(tot_ad.ni, test = "Chisq")
## Single term deletions
##
## Model:
## total_days_adl ~ treatment + (1 | colony) + round
## npar AIC LRT Pr(Chi)
## <none> 235.43
## treatment 1 234.85 1.4154 0.234158
## round 1 240.81 7.3743 0.006616 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Anova(tot_ad.ni)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: total_days_adl
## Chisq Df Pr(>Chisq)
## treatment 1.5796 1 0.20882
## round 8.8756 1 0.00289 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(q3$treatment, q3$total_days_adl)

num_adl.ni <- q3 %>%
group_by(treatment) %>%
summarise(m = mean(total_days_adl))
num_adl.ni
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 2.8
## 2 4 1.83
How many days out of 14 did an inoc bee test positive for
infection?
total_det <- glm(num_days_det ~ treatment + avg.pol + round, data = q1)
drop1(total_det, test = "Chisq")
## Single term deletions
##
## Model:
## num_days_det ~ treatment + avg.pol + round
## Df Deviance AIC scaled dev. Pr(>Chi)
## <none> 86.433 84.395
## treatment 1 95.525 83.995 1.6003 0.20586
## avg.pol 1 123.034 88.044 5.6495 0.01746 *
## round 2 142.224 88.363 7.9685 0.01861 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tot_det1 <- update(total_det, .~. -avg.pol)
drop1(tot_det1, test = "Chisq")
## Single term deletions
##
## Model:
## num_days_det ~ treatment + round
## Df Deviance AIC scaled dev. Pr(>Chi)
## <none> 123.03 88.044
## treatment 1 134.30 87.446 1.4018 0.23643
## round 2 203.50 92.095 8.0512 0.01785 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Anova(tot_det1)
## Analysis of Deviance Table (Type II tests)
##
## Response: num_days_det
## LR Chisq Df Pr(>Chisq)
## treatment 1.0988 1 0.29454
## round 7.8481 2 0.01976 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(q1$treatment, q1$num_days_det)

num_det <- q1 %>%
group_by(treatment) %>%
summarise(m = mean(num_days_det))
num_det
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 9.25
## 2 4 10.5
How many days out of 14 did a non-inoc bee test positive for
infection?
total_det.ni <- glmer.nb(total_days_detected ~ treatment + avg.pol + (1|colony) + round, data = q3)
## Warning in theta.ml(Y, mu, weights = object@resp$weights, limit = limit, :
## iteration limit reached
drop1(total_det.ni, test = "Chisq")
## Single term deletions
##
## Model:
## total_days_detected ~ treatment + avg.pol + (1 | colony) + round
## npar AIC LRT Pr(Chi)
## <none> 298.53
## treatment 1 296.69 0.154873 0.6939
## avg.pol 1 296.57 0.036981 0.8475
## round 1 296.78 0.245371 0.6204
totdetni <- update(total_det.ni, .~. -avg.pol)
drop1(totdetni, test = "Chisq")
## Single term deletions
##
## Model:
## total_days_detected ~ treatment + (1 | colony) + round
## npar AIC LRT Pr(Chi)
## <none> 296.57
## treatment 1 294.71 0.13935 0.7089
## round 1 294.90 0.32909 0.5662
totdetni1 <- update(totdetni, .~. -round)
Anova(totdetni1)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: total_days_detected
## Chisq Df Pr(>Chisq)
## treatment 0.1693 1 0.6807
plot(q3$treatment, q3$total_days_detected)

num_detni <- q3 %>%
group_by(treatment) %>%
summarise(m = mean(total_days_detected))
num_detni
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 7.67
## 2 4 7.97
How many days for an inoculated bee to reach max spores?
days_max <- glm.nb(days_max_spores ~ treatment + avg.pol + round, data = q1)
drop1(days_max, test = "Chisq")
## Single term deletions
##
## Model:
## days_max_spores ~ treatment + avg.pol + round
## Df Deviance AIC LRT Pr(>Chi)
## <none> 17.045 95.278
## treatment 1 17.046 93.279 0.0013 0.9710
## avg.pol 1 17.123 93.356 0.0781 0.7798
## round 2 20.548 94.781 3.5035 0.1735
dm1 <- update(days_max, .~. -avg.pol)
drop1(dm1, test = "Chisq")
## Single term deletions
##
## Model:
## days_max_spores ~ treatment + round
## Df Deviance AIC LRT Pr(>Chi)
## <none> 16.970 93.355
## treatment 1 16.973 91.358 0.0030 0.95629
## round 2 21.720 94.106 4.7506 0.09298 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
dm2 <- update(dm1, .~. -round)
Anova(dm2)
## Analysis of Deviance Table (Type II tests)
##
## Response: days_max_spores
## LR Chisq Df Pr(>Chisq)
## treatment 0.012681 1 0.9103
plot(q1$treatment, q1$days_max_spores)

num_det <- q1 %>%
group_by(treatment) %>%
summarise(m = mean(days_max_spores))
num_det
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 6.62
## 2 4 6.88
How many days for a non-inoculated bee to reach max spores?
non.max <- glmer.nb(days_max_spores ~ treatment + round + avg.pol + (1|colony), data = q3)
## Warning in theta.ml(Y, mu, weights = object@resp$weights, limit = limit, :
## iteration limit reached
drop1(non.max, test = "Chisq")
## Single term deletions
##
## Model:
## days_max_spores ~ treatment + round + avg.pol + (1 | colony)
## npar AIC LRT Pr(Chi)
## <none> 325.35
## treatment 1 323.36 0.0012 0.972704
## round 1 332.56 9.2065 0.002412 **
## avg.pol 1 323.37 0.0127 0.910135
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
nm1 <- update(non.max, .~. -avg.pol)
drop1(nm1, test = "Chisq")
## Single term deletions
##
## Model:
## days_max_spores ~ treatment + round + (1 | colony)
## npar AIC LRT Pr(Chi)
## <none> 323.37
## treatment 1 321.37 0.0024 0.960551
## round 1 331.26 9.8911 0.001661 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Anova(nm1)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: days_max_spores
## Chisq Df Pr(>Chisq)
## treatment 0.0025 1 0.9604486
## round 12.1176 1 0.0004995 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(q3$treatment, q3$days_max_spores)

num_max_ni <- q3 %>%
group_by(treatment) %>%
summarise(m = mean(days_max_spores))
num_max_ni
## # A tibble: 2 × 2
## treatment m
## <fct> <dbl>
## 1 3 7.5
## 2 4 7.1
What is the max spore count per treatment?
max.spore <- lmer(max_spores ~ treatment + round + avg.pol + (1|colony), data = q4)
Anova(max.spore)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: max_spores
## Chisq Df Pr(>Chisq)
## treatment 0.4283 1 0.5128
## round 4.1195 2 0.1275
## avg.pol 0.4208 1 0.5165
plot(q4$treatment, q4$max_spores)

How many peaks of infection occur in IB vs. NIB per treatment?
LS0tDQp0aXRsZTogInFQQ1IgRGF0YXNldCBRdWVzdGlvbnMiDQphdXRob3I6ICJFbWlseSBSdW5uaW9uIg0KZGF0ZTogIkFuYWx5c2lzIFN1bW1lciAyMDI0Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogNA0KICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0aGVtZTogam91cm5hbA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChtZXNzYWdlID0gRkFMU0UpDQpgYGANCg0KDQpgYGB7ciBsb2FkIGxpYnJhcmllcywgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KHZpcmlkaXNMaXRlKQ0KbGlicmFyeShzdGF0cykNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoY2FyKQ0KbGlicmFyeShlbW1lYW5zKQ0KbGlicmFyeShNQVNTKQ0KbGlicmFyeShsbWU0KQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGNvd3Bsb3QpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoZ2dwdWJyKQ0KbGlicmFyeShnbG1tVE1CKQ0KbGlicmFyeShyc3RhdGl4KQ0KbGlicmFyeShmaXRkaXN0cnBsdXMpDQpgYGANCg0KDQojIyMgSW5wdXQgRGF0YSANCg0KYGBge3J9DQoNCnExIDwtIHJlYWRfY3N2KCJRMV9kYXRhX3NldF82LTExLTI0LmNzdiIsIA0KICAgIGNvbF90eXBlcyA9IGNvbHModHJlYXRtZW50ID0gY29sX2ZhY3RvcihsZXZlbHMgPSBjKCIzIiwgDQogICAgICAgICI0IikpLCBibG9jayA9IGNvbF9mYWN0b3IobGV2ZWxzID0gYygiMSIsIA0KICAgICAgICAiNCIsICI2IiwgIjciLCAiOCIsICI5IiwgIjEwIiwgIjExIiwgDQogICAgICAgICIxMiIpKSwgcm91bmQgPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCANCiAgICAgICAgIjIiLCAiMyIpKSwgaW5vY19iaW5hcnkgPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCANCiAgICAgICAgIjAiKSkpKQ0KcTEkY29sb255IDwtIGFzLmZhY3RvcihxMSRjb2xvbnkpDQoNCnJvdW5kcyA8LSByZWFkX2Nzdigicm91bmRzLmNzdiIpDQoNCnEzIDwtIHJlYWRfY3N2KCJxM19ub25faW5vY19iZWVzLmNzdiIsDQogICAgICBjb2xfdHlwZXMgPSBjb2xzKHRyZWF0bWVudCA9IGNvbF9mYWN0b3IobGV2ZWxzID0gYygiMyIsIA0KICAgICAgICAiNCIpKSwgYmxvY2sgPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCANCiAgICAgICAgIjQiLCAiNiIsICI3IiwgIjgiLCAiOSIsICIxMCIsICIxMSIsIA0KICAgICAgICAiMTIiKSksIHJvdW5kID0gY29sX2ZhY3RvcihsZXZlbHMgPSBjKCIxIiwgDQogICAgICAgICIyIiwgIjMiKSkpKQ0KDQpxMyRjb2xvbnkgPC0gYXMuZmFjdG9yKHEzJGNvbG9ueSkNCnEzJGJlZSA8LSBhcy5mYWN0b3IocTMkYmVlKQ0KDQpxMyA8LSBtZXJnZShxMywgcm91bmRzLCBieSA9ICJjb2xvbnkiLCBhbGwgPSBGQUxTRSkNCg0KcTQgPC0gcmVhZF9jc3YoInE0X2FsbF9iZWVzX3Blcl9iZWUuY3N2IiwgDQogICAgY29sX3R5cGVzID0gY29scyh0cmVhdG1lbnQgPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjMiLCANCiAgICAgICAgIjQiKSksIGJsb2NrID0gY29sX2ZhY3RvcihsZXZlbHMgPSBjKCIxIiwgDQogICAgICAgICI0IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCANCiAgICAgICAgIjEyIikpLCBpbm9jX2JpbmFyeSA9IGNvbF9mYWN0b3IobGV2ZWxzID0gYygiMSIsIA0KICAgICAgICAiMCIpKSwgcm91bmQgPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCANCiAgICAgICAgIjIiLCAiMyIpKSkpDQoNCnE0JGNvbG9ueSA8LSBhcy5mYWN0b3IocTQkY29sb255KQ0KDQpgYGANCg0KDQojIyMgSW5wdXQgYWRkaXRpb25hbCBkYXRhIGZvciBtZXJnZSANCg0KYGBge3J9DQphbGxfYmVlcyA8LSByZWFkX2NzdigicXBjcl9pbm9jX2JlZXMuY3N2IiwgY29sX3R5cGVzID0gY29scyh0cmVhdG1lbnQgPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCIyIiwgIjMiLCI0IikpLHJlcGxpY2F0ZSA9IGNvbF9mYWN0b3IobGV2ZWxzID0gYygiMSIsIjQiLCAiNiIsICI3IiwgIjgiLCAiOSIsICIxMCIsICIxMSIsICIxMiIpKSwgc3RhcnQgPSBjb2xfZGF0ZShmb3JtYXQgPSAiJW0vJWQvJVkiKSwgSW5ub2N1bGF0aW9uX2RhdGUgPSBjb2xfZGF0ZShmb3JtYXQgPSAiJW0vJWQvJVkiKSwgZGF0ZSA9IGNvbF9kYXRlKGZvcm1hdCA9ICIlbS8lZC8lWSIpLCBjZW5zb3Jfc3RhdHVzID0gY29sX2ZhY3RvcihsZXZlbHMgPSBjKCIxIiwiMiIpKSkpDQoNCnBvbGxlbiA8LSByZWFkX2NzdigicG9sbGVuLmNzdiIpDQpwb2xsZW4kY29sb255IDwtIGFzLmZhY3Rvcihwb2xsZW4kY29sb255KQ0KcG9sbGVuJHRyZWF0bWVudCA8LSBhcy5mYWN0b3IocG9sbGVuJHRyZWF0bWVudCkNCnBvbGxlbiRibG9jayA8LSBhcy5mYWN0b3IocG9sbGVuJGJsb2NrKQ0KDQphdmcucG9sIDwtIHBvbGxlbiAlPiUNCiAgZ3JvdXBfYnkoY29sb255KSAlPiUNCiAgc3VtbWFyaXNlKGF2Zy5wb2wgPSBtZWFuKHdob2xlX2RpZikpDQoNCg0KYXZnLnBvbCA8LSBhcy5kYXRhLmZyYW1lKGF2Zy5wb2wpDQoNCmFsbF9iZWVzIDwtIG1lcmdlKGFsbF9iZWVzLCBhdmcucG9sLCBieT0iY29sb255IiwgYWxsID0gRkFMU0UpDQpxMSA8LSBtZXJnZShxMSwgYXZnLnBvbCwgYnkgPSAiY29sb255IiwgYWxsID0gRkFMU0UpDQpxMyA8LSBtZXJnZShxMywgYXZnLnBvbCwgYnkgPSAiY29sb255IiwgYWxsID0gRkFMU0UpDQpxNCA8LSBtZXJnZShxNCwgYXZnLnBvbCwgYnkgPSAiY29sb255IiwgYWxsID0gRkFMU0UpDQpgYGANCg0KDQojIyBIb3cgbG9uZyBzaW5jZSBpbm9jdWxhdGlvbiBkb2VzIGl0IHRha2UgZm9yIGFuIGluZmVjdGlvbiB0byBiZSBkZXRlY3RlZCBpbiB0aGUgaW5vY3VsYXRlZCBiZWU/IA0KDQpgYGB7cn0NCg0KZGF5c19kZXRlYyA8LSBnbG0ubmIoZGF5X2ZpcnN0X2RldGVjdGlvbiB+IHRyZWF0bWVudCArIGF2Zy5wb2wgKyByb3VuZCwgZGF0YSA9IHExKQ0KZHJvcDEoZGF5c19kZXRlYywgdGVzdCA9ICJDaGlzcSIpDQpkZGV0MSA8LSB1cGRhdGUoZGF5c19kZXRlYywgLn4uIC1yb3VuZCkNCmRyb3AxKGRkZXQxLCB0ZXN0ID0gIkNoaXNxIikNCmRkZXQyIDwtIHVwZGF0ZShkZGV0MSwgLn4uIC1hdmcucG9sKQ0KZHJvcDEoZGRldDIsIHRlc3QgPSAiQ2hpc3EiKQ0KQW5vdmEoZGRldDIpDQoNCnBsb3QocTEkdHJlYXRtZW50LCBxMSRkYXlfZmlyc3RfZGV0ZWN0aW9uKQ0KDQpkYXlzIDwtIHExICU+JQ0KICBncm91cF9ieSh0cmVhdG1lbnQpICU+JQ0KICBzdW1tYXJpc2UobSA9IG1lYW4oZGF5X2ZpcnN0X2RldGVjdGlvbikpDQoNCmRheXMNCg0KYGBgDQoNCiMjIEhvdyBsb25nIHNpbmNlIGlub2N1bGF0aW9uIGRvZXMgaXQgdGFrZSBmb3IgYW4gaW5mZWN0aW9uIHRvIGJlIGRldGVjdGVkIGluIG5vbi1pbm9jdWxhdGVkIGJlZXM/IA0KDQpgYGB7cn0NCmRheXNfZGV0ZWMubmkgPC0gZ2xtZXIubmIoZGF5c19maXJzdF9kZXQgfiB0cmVhdG1lbnQgKyBhdmcucG9sICsgKDF8Y29sb255KSArIHJvdW5kLCBkYXRhID0gcTMpDQpkcm9wMShkYXlzX2RldGVjLm5pLCB0ZXN0ID0gIkNoaXNxIikNCmRkMSA8LSB1cGRhdGUoZGF5c19kZXRlYy5uaSwgLn4uIC1hdmcucG9sKQ0KZHJvcDEoZGQxLCB0ZXN0ID0gIkNoaXNxIikNCg0KcGxvdChxMyR0cmVhdG1lbnQsIHEzJGRheXNfZmlyc3RfZGV0KQ0KDQpkYXlzLm5pIDwtIHEzICU+JQ0KICBncm91cF9ieSh0cmVhdG1lbnQpICU+JQ0KICBzdW1tYXJpc2UobSA9IG1lYW4oZGF5c19maXJzdF9kZXQpKQ0KDQpkYXlzLm5pDQpgYGANCg0KDQojIyBIb3cgbG9uZyBkb2VzIGl0IHRha2UgZm9yIGluZmVjdGlvbiB0byByZWFjaCBBREwgaW4gaW5vY3VsYXRlZCBiZWVzPyANCg0KYGBge3J9DQpkYXlzX2RldGVjX2FkbCA8LSBnbG0ubmIoZGF5X2ZpcnN0X0FETCB+IHRyZWF0bWVudCArIGF2Zy5wb2wgKyByb3VuZCwgZGF0YSA9IHExKQ0KZHJvcDEoZGF5c19kZXRlY19hZGwsIHRlc3QgPSAiQ2hpc3EiKQ0KZGFkbCA8LSB1cGRhdGUoZGF5c19kZXRlY19hZGwsIC5+LiAtYXZnLnBvbCkNCmRyb3AxKGRhZGwsIHRlc3QgPSAiQ2hpc3EiKQ0KZGFkbDIgPC0gdXBkYXRlKGRhZGwsIC5+LiAtcm91bmQpDQpBbm92YShkYWRsMikNCg0KcGxvdChxMSR0cmVhdG1lbnQsIHExJGRheV9maXJzdF9BREwpDQoNCmRheXMuYWRsIDwtIHExICU+JQ0KICBncm91cF9ieSh0cmVhdG1lbnQpICU+JQ0KICBzdW1tYXJpc2UobSA9IG1lYW4oZGF5X2ZpcnN0X0FETCkpDQoNCmRheXMuYWRsDQpgYGANCg0KDQojIyBIb3cgbG9uZyBkb2VzIGl0IHRha2UgZm9yIGluZmVjdGlvbiB0byByZWFjaCBBREwgaW4gbm9uLWlub2N1bGF0ZWQgYmVlcz8gDQoNCmBgYHtyfQ0KcTMuYWRsIDwtIHEzW2NvbXBsZXRlLmNhc2VzKHEzJGRheXNfZmlyc3RfYWRsKSwgXQ0KDQpkYXlzX2RldGVjX2FkbC5uaSA8LSBnbG1lci5uYihkYXlzX2ZpcnN0X2FkbCB+IHRyZWF0bWVudCArIGF2Zy5wb2wgKyAoMXxjb2xvbnkpICsgcm91bmQsIGRhdGEgPSBxMy5hZGwpDQpkcm9wMShkYXlzX2RldGVjX2FkbC5uaSwgdGVzdCA9ICJDaGlzcSIpDQpBbm92YShkYXlzX2RldGVjX2FkbC5uaSkNCg0KcGxvdChxMyR0cmVhdG1lbnQsIHEzJGRheXNfZmlyc3RfYWRsKQ0KDQpkYXlzLmFkbC5uaSA8LSBxMy5hZGwgJT4lDQogIGdyb3VwX2J5KHRyZWF0bWVudCkgJT4lDQogIHN1bW1hcmlzZShtID0gbWVhbihkYXlzX2ZpcnN0X2FkbCkpDQoNCmRheXMuYWRsLm5pDQoNCmBgYA0KDQoNCiMjIEhvdyBtYW55IGRheXMgb3V0IG9mIDE0IGRpZCBhbiBpbm9jIGJlZSB0ZXN0IGFib3ZlIGFkbCBmb3IgaW5mZWN0aW9uPyANCg0KYGBge3J9DQoNCnRvdGFsX2FkbCA8LSBnbG0ubmIobnVtX2RheXNfYWRsIH4gdHJlYXRtZW50ICsgYXZnLnBvbCArIHJvdW5kLCBkYXRhID0gcTEpDQpkcm9wMSh0b3RhbF9hZGwsIHRlc3QgPSAiQ2hpc3EiKQ0KdG90X2FkIDwtIHVwZGF0ZSh0b3RhbF9hZGwsIC5+LiAtYXZnLnBvbCkNCmRyb3AxKHRvdF9hZCwgdGVzdCA9ICJDaGlzcSIpDQp0b3RhZDIgPC0gdXBkYXRlKHRvdF9hZCwgLn4uIC1yb3VuZCkNCkFub3ZhKHRvdGFkMikNCg0KcGxvdChxMSR0cmVhdG1lbnQsIHExJG51bV9kYXlzX2FkbCkNCg0KbnVtX2FkbCA8LSBxMSAlPiUNCiAgZ3JvdXBfYnkodHJlYXRtZW50KSAlPiUNCiAgc3VtbWFyaXNlKG0gPSBtZWFuKG51bV9kYXlzX2FkbCkpDQpudW1fYWRsDQoNCmBgYA0KDQoNCg0KIyMgSG93IG1hbnkgZGF5cyBvdXQgb2YgMTQgZGlkIGEgbm9uLWlub2MgYmVlIHRlc3QgYWJvdmUgYWRsIGZvciBpbmZlY3Rpb24/DQoNCmBgYHtyfQ0KdG90YWxfYWRsLm5pIDwtIGdsbWVyLm5iKHRvdGFsX2RheXNfYWRsIH4gdHJlYXRtZW50ICsgYXZnLnBvbCArICgxfGNvbG9ueSkgKyByb3VuZCwgZGF0YSA9IHEzKQ0KZHJvcDEodG90YWxfYWRsLm5pLCB0ZXN0ID0gIkNoaXNxIikNCnRvdF9hZC5uaSA8LSB1cGRhdGUodG90YWxfYWRsLm5pLCAufi4gLWF2Zy5wb2wpDQpkcm9wMSh0b3RfYWQubmksIHRlc3QgPSAiQ2hpc3EiKQ0KQW5vdmEodG90X2FkLm5pKQ0KDQpwbG90KHEzJHRyZWF0bWVudCwgcTMkdG90YWxfZGF5c19hZGwpDQoNCm51bV9hZGwubmkgPC0gcTMgJT4lDQogIGdyb3VwX2J5KHRyZWF0bWVudCkgJT4lDQogIHN1bW1hcmlzZShtID0gbWVhbih0b3RhbF9kYXlzX2FkbCkpDQpudW1fYWRsLm5pDQoNCg0KYGBgDQoNCg0KIyMgSG93IG1hbnkgZGF5cyBvdXQgb2YgMTQgZGlkIGFuIGlub2MgYmVlIHRlc3QgcG9zaXRpdmUgZm9yIGluZmVjdGlvbj8gDQoNCmBgYHtyfQ0KdG90YWxfZGV0IDwtIGdsbShudW1fZGF5c19kZXQgfiB0cmVhdG1lbnQgKyBhdmcucG9sICsgcm91bmQsIGRhdGEgPSBxMSkNCmRyb3AxKHRvdGFsX2RldCwgdGVzdCA9ICJDaGlzcSIpDQp0b3RfZGV0MSA8LSB1cGRhdGUodG90YWxfZGV0LCAufi4gLWF2Zy5wb2wpDQpkcm9wMSh0b3RfZGV0MSwgdGVzdCA9ICJDaGlzcSIpDQoNCkFub3ZhKHRvdF9kZXQxKQ0KDQpwbG90KHExJHRyZWF0bWVudCwgcTEkbnVtX2RheXNfZGV0KQ0KDQpudW1fZGV0IDwtIHExICU+JQ0KICBncm91cF9ieSh0cmVhdG1lbnQpICU+JQ0KICBzdW1tYXJpc2UobSA9IG1lYW4obnVtX2RheXNfZGV0KSkNCm51bV9kZXQNCg0KYGBgDQoNCg0KDQojIyBIb3cgbWFueSBkYXlzIG91dCBvZiAxNCBkaWQgYSBub24taW5vYyBiZWUgdGVzdCBwb3NpdGl2ZSBmb3IgaW5mZWN0aW9uPyANCg0KYGBge3J9DQp0b3RhbF9kZXQubmkgPC0gZ2xtZXIubmIodG90YWxfZGF5c19kZXRlY3RlZCB+IHRyZWF0bWVudCArIGF2Zy5wb2wgKyAoMXxjb2xvbnkpICsgcm91bmQsIGRhdGEgPSBxMykNCmRyb3AxKHRvdGFsX2RldC5uaSwgdGVzdCA9ICJDaGlzcSIpDQp0b3RkZXRuaSA8LSB1cGRhdGUodG90YWxfZGV0Lm5pLCAufi4gLWF2Zy5wb2wpDQpkcm9wMSh0b3RkZXRuaSwgdGVzdCA9ICJDaGlzcSIpDQp0b3RkZXRuaTEgPC0gdXBkYXRlKHRvdGRldG5pLCAufi4gLXJvdW5kKQ0KQW5vdmEodG90ZGV0bmkxKQ0KDQpwbG90KHEzJHRyZWF0bWVudCwgcTMkdG90YWxfZGF5c19kZXRlY3RlZCkNCg0KbnVtX2RldG5pIDwtIHEzICU+JQ0KICBncm91cF9ieSh0cmVhdG1lbnQpICU+JQ0KICBzdW1tYXJpc2UobSA9IG1lYW4odG90YWxfZGF5c19kZXRlY3RlZCkpDQpudW1fZGV0bmkNCg0KYGBgDQoNCg0KIyMgSG93IG1hbnkgZGF5cyBmb3IgYW4gaW5vY3VsYXRlZCBiZWUgdG8gcmVhY2ggbWF4IHNwb3Jlcz8gDQoNCg0KYGBge3J9DQpkYXlzX21heCA8LSBnbG0ubmIoZGF5c19tYXhfc3BvcmVzIH4gdHJlYXRtZW50ICsgYXZnLnBvbCArIHJvdW5kLCBkYXRhID0gcTEpDQpkcm9wMShkYXlzX21heCwgdGVzdCA9ICJDaGlzcSIpDQpkbTEgPC0gdXBkYXRlKGRheXNfbWF4LCAufi4gLWF2Zy5wb2wpDQpkcm9wMShkbTEsIHRlc3QgPSAiQ2hpc3EiKQ0KZG0yIDwtIHVwZGF0ZShkbTEsIC5+LiAtcm91bmQpDQpBbm92YShkbTIpDQoNCnBsb3QocTEkdHJlYXRtZW50LCBxMSRkYXlzX21heF9zcG9yZXMpDQoNCm51bV9kZXQgPC0gcTEgJT4lDQogIGdyb3VwX2J5KHRyZWF0bWVudCkgJT4lDQogIHN1bW1hcmlzZShtID0gbWVhbihkYXlzX21heF9zcG9yZXMpKQ0KbnVtX2RldA0KDQoNCmBgYA0KDQoNCiMjIEhvdyBtYW55IGRheXMgZm9yIGEgbm9uLWlub2N1bGF0ZWQgYmVlIHRvIHJlYWNoIG1heCBzcG9yZXM/IA0KDQpgYGB7cn0NCm5vbi5tYXggPC0gZ2xtZXIubmIoZGF5c19tYXhfc3BvcmVzIH4gdHJlYXRtZW50ICsgcm91bmQgKyBhdmcucG9sICsgKDF8Y29sb255KSwgZGF0YSA9IHEzKQ0KZHJvcDEobm9uLm1heCwgdGVzdCA9ICJDaGlzcSIpDQpubTEgPC0gdXBkYXRlKG5vbi5tYXgsIC5+LiAtYXZnLnBvbCkNCmRyb3AxKG5tMSwgdGVzdCA9ICJDaGlzcSIpDQoNCkFub3ZhKG5tMSkNCg0KcGxvdChxMyR0cmVhdG1lbnQsIHEzJGRheXNfbWF4X3Nwb3JlcykNCg0KbnVtX21heF9uaSA8LSBxMyAlPiUNCiAgZ3JvdXBfYnkodHJlYXRtZW50KSAlPiUNCiAgc3VtbWFyaXNlKG0gPSBtZWFuKGRheXNfbWF4X3Nwb3JlcykpDQpudW1fbWF4X25pDQoNCg0KYGBgDQoNCg0KDQojIyBXaGF0IGlzIHRoZSBtYXggc3BvcmUgY291bnQgcGVyIHRyZWF0bWVudD8gDQoNCmBgYHtyfQ0KDQptYXguc3BvcmUgPC0gbG1lcihtYXhfc3BvcmVzIH4gdHJlYXRtZW50ICsgcm91bmQgKyBhdmcucG9sICsgKDF8Y29sb255KSwgZGF0YSA9IHE0KQ0KQW5vdmEobWF4LnNwb3JlKQ0KDQpwbG90KHE0JHRyZWF0bWVudCwgcTQkbWF4X3Nwb3JlcykNCg0KYGBgDQoNCg0KDQojIyBIb3cgbWFueSBwZWFrcyBvZiBpbmZlY3Rpb24gb2NjdXIgaW4gSUIgdnMuIE5JQiBwZXIgdHJlYXRtZW50PyANCg0K