1 - Packages

library(multcompView)
library(multcomp)
Warning: package ‘multcomp’ was built under R version 4.3.3Carregando pacotes exigidos: mvtnorm
Carregando pacotes exigidos: survival
Carregando pacotes exigidos: TH.data
Warning: package ‘TH.data’ was built under R version 4.3.3Carregando pacotes exigidos: MASS

Attaching package: ‘TH.data’

The following object is masked from ‘package:MASS’:

    geyser
library(dplyr)

Attaching package: ‘dplyr’

The following object is masked from ‘package:MASS’:

    select

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union
library(ggplot2)
library(gridExtra)
Warning: package ‘gridExtra’ was built under R version 4.3.3
Attaching package: ‘gridExtra’

The following object is masked from ‘package:dplyr’:

    combine

2 - DADOS

a=read.csv("D:/Armazenamento/DATA R/Jeraldine/dados.csv")
print(a)
a$Fermentador=as.factor(a$Fermentador)
a$Periodo=as.factor(a$Periodo)
a$Tempo=as.factor(a$Tempo)
str(a)
'data.frame':   64 obs. of  8 variables:
 $ Fermentador   : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ...
 $ Periodo       : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 2 2 2 2 3 3 ...
 $ Tempo         : Factor w/ 4 levels "24","48","72",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Efluente_total: num  350 475 33 410 400 390 400 400 400 370 ...
 $ Gas_total     : int  2830 2920 2353 2181 2394 2475 2227 2503 2377 2175 ...
 $ CH4           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ DMS_24        : num  0.431 0.407 0.417 0.477 0.546 ...
 $ DMS_48        : num  0.513 0.482 0.462 0.457 0.533 ...

3 - ANALISE DE VARIANCIA DE FERMENTADORES E PERIODOS

Efluente total

#Modelo
mod = aov(Efluente_total ~ Fermentador+Periodo+Fermentador*Periodo, data = a)
summary(mod)
                    Df Sum Sq Mean Sq F value Pr(>F)
Fermentador          3  11178    3726   0.543  0.655
Periodo              3  12955    4318   0.629  0.600
Fermentador:Periodo  9  14898    1655   0.241  0.986
Residuals           48 329474    6864               
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Efluente_total ~ Fermentador + Periodo + Fermentador * Periodo, data = a)

$Fermentador
          diff        lwr       upr     p adj
2-1  31.371875  -46.58430 109.32805 0.7086394
3-1   1.715625  -76.24055  79.67180 0.9999268
4-1  21.121875  -56.83430  99.07805 0.8882112
3-2 -29.656250 -107.61242  48.29992 0.7429712
4-2 -10.250000  -88.20617  67.70617 0.9851104
4-3  19.406250  -58.54992  97.36242 0.9105956

$Periodo
         diff        lwr      upr     p adj
2-1 -16.09688  -94.05305 61.85930 0.9462287
3-1 -12.47188  -90.42805 65.48430 0.9737889
4-1 -39.34688 -117.30305 38.60930 0.5405082
3-2   3.62500  -74.33117 81.58117 0.9993129
4-2 -23.25000 -101.20617 54.70617 0.8569315
4-3 -26.87500 -104.83117 51.08117 0.7956332

$`Fermentador:Periodo`
            diff       lwr      upr     p adj
2:1-1:1  39.9875 -171.6564 251.6314 0.9999973
3:1-1:1 -54.2625 -265.9064 157.3814 0.9998652
4:1-1:1  23.3625 -188.2814 235.0064 1.0000000
1:2-1:1 -29.2625 -240.9064 182.3814 1.0000000
2:2-1:1  -3.0125 -214.6564 208.6314 1.0000000
3:2-1:1 -14.2625 -225.9064 197.3814 1.0000000
4:2-1:1  -8.7625 -220.4064 202.8814 1.0000000
1:3-1:1 -33.0125 -244.6564 178.6314 0.9999998
2:3-1:1   0.7375 -210.9064 212.3814 1.0000000
3:3-1:1  -0.5125 -212.1564 211.1314 1.0000000
4:3-1:1  -8.0125 -219.6564 203.6314 1.0000000
1:4-1:1 -50.7625 -262.4064 160.8814 0.9999408
2:4-1:1 -25.2625 -236.9064 186.3814 1.0000000
3:4-1:1 -37.1375 -248.7814 174.5064 0.9999990
4:4-1:1 -35.1375 -246.7814 176.5064 0.9999995
3:1-2:1 -94.2500 -305.8939 117.3939 0.9588295
4:1-2:1 -16.6250 -228.2689 195.0189 1.0000000
1:2-2:1 -69.2500 -280.8939 142.3939 0.9977773
2:2-2:1 -43.0000 -254.6439 168.6439 0.9999930
3:2-2:1 -54.2500 -265.8939 157.3939 0.9998656
4:2-2:1 -48.7500 -260.3939 162.8939 0.9999644
1:3-2:1 -73.0000 -284.6439 138.6439 0.9961286
2:3-2:1 -39.2500 -250.8939 172.3939 0.9999979
3:3-2:1 -40.5000 -252.1439 171.1439 0.9999968
4:3-2:1 -48.0000 -259.6439 163.6439 0.9999708
1:4-2:1 -90.7500 -302.3939 120.8939 0.9698887
2:4-2:1 -65.2500 -276.8939 146.3939 0.9988393
3:4-2:1 -77.1250 -288.7689 134.5189 0.9932504
4:4-2:1 -75.1250 -286.7689 136.5189 0.9948099
4:1-3:1  77.6250 -134.0189 289.2689 0.9928060
1:2-3:1  25.0000 -186.6439 236.6439 1.0000000
2:2-3:1  51.2500 -160.3939 262.8939 0.9999333
3:2-3:1  40.0000 -171.6439 251.6439 0.9999973
4:2-3:1  45.5000 -166.1439 257.1439 0.9999853
1:3-3:1  21.2500 -190.3939 232.8939 1.0000000
2:3-3:1  55.0000 -156.6439 266.6439 0.9998412
3:3-3:1  53.7500 -157.8939 265.3939 0.9998800
4:3-3:1  46.2500 -165.3939 257.8939 0.9999819
1:4-3:1   3.5000 -208.1439 215.1439 1.0000000
2:4-3:1  29.0000 -182.6439 240.6439 1.0000000
3:4-3:1  17.1250 -194.5189 228.7689 1.0000000
4:4-3:1  19.1250 -192.5189 230.7689 1.0000000
1:2-4:1 -52.6250 -264.2689 159.0189 0.9999074
2:2-4:1 -26.3750 -238.0189 185.2689 1.0000000
3:2-4:1 -37.6250 -249.2689 174.0189 0.9999988
4:2-4:1 -32.1250 -243.7689 179.5189 0.9999999
1:3-4:1 -56.3750 -268.0189 155.2689 0.9997861
2:3-4:1 -22.6250 -234.2689 189.0189 1.0000000
3:3-4:1 -23.8750 -235.5189 187.7689 1.0000000
4:3-4:1 -31.3750 -243.0189 180.2689 0.9999999
1:4-4:1 -74.1250 -285.7689 137.5189 0.9954703
2:4-4:1 -48.6250 -260.2689 163.0189 0.9999656
3:4-4:1 -60.5000 -272.1439 151.1439 0.9995082
4:4-4:1 -58.5000 -270.1439 153.1439 0.9996680
2:2-1:2  26.2500 -185.3939 237.8939 1.0000000
3:2-1:2  15.0000 -196.6439 226.6439 1.0000000
4:2-1:2  20.5000 -191.1439 232.1439 1.0000000
1:3-1:2  -3.7500 -215.3939 207.8939 1.0000000
2:3-1:2  30.0000 -181.6439 241.6439 0.9999999
3:3-1:2  28.7500 -182.8939 240.3939 1.0000000
4:3-1:2  21.2500 -190.3939 232.8939 1.0000000
1:4-1:2 -21.5000 -233.1439 190.1439 1.0000000
2:4-1:2   4.0000 -207.6439 215.6439 1.0000000
3:4-1:2  -7.8750 -219.5189 203.7689 1.0000000
4:4-1:2  -5.8750 -217.5189 205.7689 1.0000000
3:2-2:2 -11.2500 -222.8939 200.3939 1.0000000
4:2-2:2  -5.7500 -217.3939 205.8939 1.0000000
1:3-2:2 -30.0000 -241.6439 181.6439 0.9999999
2:3-2:2   3.7500 -207.8939 215.3939 1.0000000
3:3-2:2   2.5000 -209.1439 214.1439 1.0000000
4:3-2:2  -5.0000 -216.6439 206.6439 1.0000000
1:4-2:2 -47.7500 -259.3939 163.8939 0.9999727
2:4-2:2 -22.2500 -233.8939 189.3939 1.0000000
3:4-2:2 -34.1250 -245.7689 177.5189 0.9999997
4:4-2:2 -32.1250 -243.7689 179.5189 0.9999999
4:2-3:2   5.5000 -206.1439 217.1439 1.0000000
1:3-3:2 -18.7500 -230.3939 192.8939 1.0000000
2:3-3:2  15.0000 -196.6439 226.6439 1.0000000
3:3-3:2  13.7500 -197.8939 225.3939 1.0000000
4:3-3:2   6.2500 -205.3939 217.8939 1.0000000
1:4-3:2 -36.5000 -248.1439 175.1439 0.9999992
2:4-3:2 -11.0000 -222.6439 200.6439 1.0000000
3:4-3:2 -22.8750 -234.5189 188.7689 1.0000000
4:4-3:2 -20.8750 -232.5189 190.7689 1.0000000
1:3-4:2 -24.2500 -235.8939 187.3939 1.0000000
2:3-4:2   9.5000 -202.1439 221.1439 1.0000000
3:3-4:2   8.2500 -203.3939 219.8939 1.0000000
4:3-4:2   0.7500 -210.8939 212.3939 1.0000000
1:4-4:2 -42.0000 -253.6439 169.6439 0.9999949
2:4-4:2 -16.5000 -228.1439 195.1439 1.0000000
3:4-4:2 -28.3750 -240.0189 183.2689 1.0000000
4:4-4:2 -26.3750 -238.0189 185.2689 1.0000000
2:3-1:3  33.7500 -177.8939 245.3939 0.9999997
3:3-1:3  32.5000 -179.1439 244.1439 0.9999998
4:3-1:3  25.0000 -186.6439 236.6439 1.0000000
1:4-1:3 -17.7500 -229.3939 193.8939 1.0000000
2:4-1:3   7.7500 -203.8939 219.3939 1.0000000
3:4-1:3  -4.1250 -215.7689 207.5189 1.0000000
4:4-1:3  -2.1250 -213.7689 209.5189 1.0000000
3:3-2:3  -1.2500 -212.8939 210.3939 1.0000000
4:3-2:3  -8.7500 -220.3939 202.8939 1.0000000
1:4-2:3 -51.5000 -263.1439 160.1439 0.9999292
2:4-2:3 -26.0000 -237.6439 185.6439 1.0000000
3:4-2:3 -37.8750 -249.5189 173.7689 0.9999987
4:4-2:3 -35.8750 -247.5189 175.7689 0.9999994
4:3-3:3  -7.5000 -219.1439 204.1439 1.0000000
1:4-3:3 -50.2500 -261.8939 161.3939 0.9999479
2:4-3:3 -24.7500 -236.3939 186.8939 1.0000000
3:4-3:3 -36.6250 -248.2689 175.0189 0.9999992
4:4-3:3 -34.6250 -246.2689 177.0189 0.9999996
1:4-4:3 -42.7500 -254.3939 168.8939 0.9999935
2:4-4:3 -17.2500 -228.8939 194.3939 1.0000000
3:4-4:3 -29.1250 -240.7689 182.5189 1.0000000
4:4-4:3 -27.1250 -238.7689 184.5189 1.0000000
2:4-1:4  25.5000 -186.1439 237.1439 1.0000000
3:4-1:4  13.6250 -198.0189 225.2689 1.0000000
4:4-1:4  15.6250 -196.0189 227.2689 1.0000000
3:4-2:4 -11.8750 -223.5189 199.7689 1.0000000
4:4-2:4  -9.8750 -221.5189 201.7689 1.0000000
4:4-3:4   2.0000 -209.6439 213.6439 1.0000000
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
  2   4   3   1 
"a" "a" "a" "a" 

$Fermentador$LetterMatrix
     a
2 TRUE
4 TRUE
3 TRUE
1 TRUE


$Periodo
$Periodo$Letters
  1   3   2   4 
"a" "a" "a" "a" 

$Periodo$LetterMatrix
     a
1 TRUE
3 TRUE
2 TRUE
4 TRUE


$`Fermentador:Periodo`
$`Fermentador:Periodo`$Letters
2:1 4:1 2:3 1:1 3:3 2:2 4:3 4:2 3:2 2:4 1:2 1:3 4:4 3:4 1:4 3:1 
"a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" 

$`Fermentador:Periodo`$LetterMatrix
       a
2:1 TRUE
4:1 TRUE
2:3 TRUE
1:1 TRUE
3:3 TRUE
2:2 TRUE
4:3 TRUE
4:2 TRUE
3:2 TRUE
2:4 TRUE
1:2 TRUE
1:3 TRUE
4:4 TRUE
3:4 TRUE
1:4 TRUE
3:1 TRUE
#Plot
summary = a %>% group_by(Fermentador, Periodo) %>% summarise(sd = sd(Efluente_total, na.rm = TRUE),Efluente_total = mean(Efluente_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary

g3=ggplot(summary, aes(x=Periodo, y=Efluente_total, fill=Fermentador))+
  geom_col(position = "dodge")+
  geom_errorbar(aes(ymin=Efluente_total-sd, ymax=Efluente_total+sd), width=.2, position=position_dodge(.9))+
  scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
  scale_y_continuous(name="Efluente total (mL)", breaks = seq(0,700,50), limits = c(0, 700))+
  scale_x_discrete(name="Periodo", labels=c("1"="P1","2"="P2","3"="P3","4"="P4"))
g3

g3.1=g3+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
 panel.background = element_rect(fill = "transparent"),
 legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
 legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
 legend.direction="horizontal",
 axis.ticks = element_line(colour = "black", size = 1),
 legend.text = element_text(size = 15),          
  legend.title = element_text(size = 15),
  axis.title.y = element_text(size = 13, color = "black"),
  axis.title.x = element_text(size = 13, color = "black"),
  axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
  axis.text.y = element_text(size = 12, color = "black"))+
annotate("text",size=5, x=4, y=700,label="P values")+
annotate("text",size=4, x=4, y=650,label= "Fermentadores = 0.655")+
annotate("text",size=4, x=4, y=600,label= "Periodos = 0.600")+
annotate("text",size=4, x=4, y=550,label= "F x P = 0.986")
Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
Please use the `linewidth` argument instead.Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
Please use the `linewidth` argument instead.Warning: A numeric `legend.position` argument in `theme()` was deprecated in ggplot2 3.5.0.
Please use the `legend.position.inside` argument of `theme()` instead.
g3.1

ggsave("Plot_Fermentador_periodo_Efluente.png", g3.1, width = 7, height = 5, units = "in", dpi = 300)

Gás total

#Modelo
mod = aov(Gas_total ~ Fermentador+Periodo+Fermentador*Periodo, data = a)
summary(mod)
                    Df  Sum Sq Mean Sq F value Pr(>F)  
Fermentador          3   30582   10194   0.056 0.9824  
Periodo              3 1904420  634807   3.489 0.0226 *
Fermentador:Periodo  9  628955   69884   0.384 0.9370  
Residuals           48 8732716  181932                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Gas_total ~ Fermentador + Periodo + Fermentador * Periodo, data = a)

$Fermentador
        diff       lwr      upr     p adj
2-1 -16.9375 -418.2796 384.4046 0.9994858
3-1   4.1875 -397.1546 405.5296 0.9999922
4-1 -51.3125 -452.6546 350.0296 0.9862745
3-2  21.1250 -380.2171 422.4671 0.9990051
4-2 -34.3750 -435.7171 366.9671 0.9957681
4-3 -55.5000 -456.8421 345.8421 0.9827663

$Periodo
         diff       lwr       upr     p adj
2-1 -340.5000 -741.8421  60.84207 0.1225317
3-1 -269.6875 -671.0296 131.65457 0.2913932
4-1 -472.8750 -874.2171 -71.53293 0.0149967
3-2   70.8125 -330.5296 472.15457 0.9653755
4-2 -132.3750 -533.7171 268.96707 0.8162973
4-3 -203.1875 -604.5296 198.15457 0.5379678

$`Fermentador:Periodo`
           diff        lwr       upr     p adj
2:1-1:1   11.25 -1078.3572 1100.8572 1.0000000
3:1-1:1 -185.25 -1274.8572  904.3572 0.9999994
4:1-1:1 -185.50 -1275.1072  904.1072 0.9999993
1:2-1:1 -389.75 -1479.3572  699.8572 0.9943922
2:2-1:1 -652.50 -1742.1072  437.1072 0.7163620
3:2-1:1 -350.00 -1439.6072  739.6072 0.9981783
4:2-1:1 -329.25 -1418.8572  760.3572 0.9990728
1:3-1:1 -302.50 -1392.1072  787.1072 0.9996504
2:3-1:1 -395.75 -1485.3572  693.8572 0.9934683
3:3-1:1 -331.25 -1420.8572  758.3572 0.9990075
4:3-1:1 -408.75 -1498.3572  680.8572 0.9910375
1:4-1:1 -686.25 -1775.8572  403.3572 0.6422810
2:4-1:1 -409.25 -1498.8572  680.3572 0.9909312
3:4-1:1 -495.25 -1584.8572  594.3572 0.9515349
4:4-1:1 -660.25 -1749.8572  429.3572 0.6997598
3:1-2:1 -196.50 -1286.1072  893.1072 0.9999986
4:1-2:1 -196.75 -1286.3572  892.8572 0.9999985
1:2-2:1 -401.00 -1490.6072  688.6072 0.9925612
2:2-2:1 -663.75 -1753.3572  425.8572 0.6921703
3:2-2:1 -361.25 -1450.8572  728.3572 0.9974418
4:2-2:1 -340.50 -1430.1072  749.1072 0.9986518
1:3-2:1 -313.75 -1403.3572  775.8572 0.9994649
2:3-2:1 -407.00 -1496.6072  682.6072 0.9914019
3:3-2:1 -342.50 -1432.1072  747.1072 0.9985620
4:3-2:1 -420.00 -1509.6072  669.6072 0.9883878
1:4-2:1 -697.50 -1787.1072  392.1072 0.6168146
2:4-2:1 -420.50 -1510.1072  669.1072 0.9882570
3:4-2:1 -506.50 -1596.1072  583.1072 0.9423033
4:4-2:1 -671.50 -1761.1072  418.1072 0.6751838
4:1-3:1   -0.25 -1089.8572 1089.3572 1.0000000
1:2-3:1 -204.50 -1294.1072  885.1072 0.9999976
2:2-3:1 -467.25 -1556.8572  622.3572 0.9698661
3:2-3:1 -164.75 -1254.3572  924.8572 0.9999999
4:2-3:1 -144.00 -1233.6072  945.6072 1.0000000
1:3-3:1 -117.25 -1206.8572  972.3572 1.0000000
2:3-3:1 -210.50 -1300.1072  879.1072 0.9999964
3:3-3:1 -146.00 -1235.6072  943.6072 1.0000000
4:3-3:1 -223.50 -1313.1072  866.1072 0.9999920
1:4-3:1 -501.00 -1590.6072  588.6072 0.9469577
2:4-3:1 -224.00 -1313.6072  865.6072 0.9999918
3:4-3:1 -310.00 -1399.6072  779.6072 0.9995345
4:4-3:1 -475.00 -1564.6072  614.6072 0.9654178
1:2-4:1 -204.25 -1293.8572  885.3572 0.9999976
2:2-4:1 -467.00 -1556.6072  622.6072 0.9700021
3:2-4:1 -164.50 -1254.1072  925.1072 0.9999999
4:2-4:1 -143.75 -1233.3572  945.8572 1.0000000
1:3-4:1 -117.00 -1206.6072  972.6072 1.0000000
2:3-4:1 -210.25 -1299.8572  879.3572 0.9999965
3:3-4:1 -145.75 -1235.3572  943.8572 1.0000000
4:3-4:1 -223.25 -1312.8572  866.3572 0.9999922
1:4-4:1 -500.75 -1590.3572  588.8572 0.9471628
2:4-4:1 -223.75 -1313.3572  865.8572 0.9999919
3:4-4:1 -309.75 -1399.3572  779.8572 0.9995388
4:4-4:1 -474.75 -1564.3572  614.8572 0.9655684
2:2-1:2 -262.75 -1352.3572  826.8572 0.9999367
3:2-1:2   39.75 -1049.8572 1129.3572 1.0000000
4:2-1:2   60.50 -1029.1072 1150.1072 1.0000000
1:3-1:2   87.25 -1002.3572 1176.8572 1.0000000
2:3-1:2   -6.00 -1095.6072 1083.6072 1.0000000
3:3-1:2   58.50 -1031.1072 1148.1072 1.0000000
4:3-1:2  -19.00 -1108.6072 1070.6072 1.0000000
1:4-1:2 -296.50 -1386.1072  793.1072 0.9997241
2:4-1:2  -19.50 -1109.1072 1070.1072 1.0000000
3:4-1:2 -105.50 -1195.1072  984.1072 1.0000000
4:4-1:2 -270.50 -1360.1072  819.1072 0.9999092
3:2-2:2  302.50  -787.1072 1392.1072 0.9996504
4:2-2:2  323.25  -766.3572 1412.8572 0.9992469
1:3-2:2  350.00  -739.6072 1439.6072 0.9981783
2:3-2:2  256.75  -832.8572 1346.3572 0.9999526
3:3-2:2  321.25  -768.3572 1410.8572 0.9992983
4:3-2:2  243.75  -845.8572 1333.3572 0.9999755
1:4-2:2  -33.75 -1123.3572 1055.8572 1.0000000
2:4-2:2  243.25  -846.3572 1332.8572 0.9999761
3:4-2:2  157.25  -932.3572 1246.8572 0.9999999
4:4-2:2   -7.75 -1097.3572 1081.8572 1.0000000
4:2-3:2   20.75 -1068.8572 1110.3572 1.0000000
1:3-3:2   47.50 -1042.1072 1137.1072 1.0000000
2:3-3:2  -45.75 -1135.3572 1043.8572 1.0000000
3:3-3:2   18.75 -1070.8572 1108.3572 1.0000000
4:3-3:2  -58.75 -1148.3572 1030.8572 1.0000000
1:4-3:2 -336.25 -1425.8572  753.3572 0.9988269
2:4-3:2  -59.25 -1148.8572 1030.3572 1.0000000
3:4-3:2 -145.25 -1234.8572  944.3572 1.0000000
4:4-3:2 -310.25 -1399.8572  779.3572 0.9995301
1:3-4:2   26.75 -1062.8572 1116.3572 1.0000000
2:3-4:2  -66.50 -1156.1072 1023.1072 1.0000000
3:3-4:2   -2.00 -1091.6072 1087.6072 1.0000000
4:3-4:2  -79.50 -1169.1072 1010.1072 1.0000000
1:4-4:2 -357.00 -1446.6072  732.6072 0.9977451
2:4-4:2  -80.00 -1169.6072 1009.6072 1.0000000
3:4-4:2 -166.00 -1255.6072  923.6072 0.9999999
4:4-4:2 -331.00 -1420.6072  758.6072 0.9990159
2:3-1:3  -93.25 -1182.8572  996.3572 1.0000000
3:3-1:3  -28.75 -1118.3572 1060.8572 1.0000000
4:3-1:3 -106.25 -1195.8572  983.3572 1.0000000
1:4-1:3 -383.75 -1473.3572  705.8572 0.9952058
2:4-1:3 -106.75 -1196.3572  982.8572 1.0000000
3:4-1:3 -192.75 -1282.3572  896.8572 0.9999989
4:4-1:3 -357.75 -1447.3572  731.8572 0.9976939
3:3-2:3   64.50 -1025.1072 1154.1072 1.0000000
4:3-2:3  -13.00 -1102.6072 1076.6072 1.0000000
1:4-2:3 -290.50 -1380.1072  799.1072 0.9997838
2:4-2:3  -13.50 -1103.1072 1076.1072 1.0000000
3:4-2:3  -99.50 -1189.1072  990.1072 1.0000000
4:4-2:3 -264.50 -1354.1072  825.1072 0.9999312
4:3-3:3  -77.50 -1167.1072 1012.1072 1.0000000
1:4-3:3 -355.00 -1444.6072  734.6072 0.9978769
2:4-3:3  -78.00 -1167.6072 1011.6072 1.0000000
3:4-3:3 -164.00 -1253.6072  925.6072 0.9999999
4:4-3:3 -329.00 -1418.6072  760.6072 0.9990807
1:4-4:3 -277.50 -1367.1072  812.1072 0.9998758
2:4-4:3   -0.50 -1090.1072 1089.1072 1.0000000
3:4-4:3  -86.50 -1176.1072 1003.1072 1.0000000
4:4-4:3 -251.50 -1341.1072  838.1072 0.9999635
2:4-1:4  277.00  -812.6072 1366.6072 0.9998785
3:4-1:4  191.00  -898.6072 1280.6072 0.9999990
4:4-1:4   26.00 -1063.6072 1115.6072 1.0000000
3:4-2:4  -86.00 -1175.6072 1003.6072 1.0000000
4:4-2:4 -251.00 -1340.6072  838.6072 0.9999644
4:4-3:4 -165.00 -1254.6072  924.6072 0.9999999
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
  3   1   2   4 
"a" "a" "a" "a" 

$Fermentador$LetterMatrix
     a
3 TRUE
1 TRUE
2 TRUE
4 TRUE


$Periodo
   1    3    2    4 
 "a" "ab" "ab"  "b" 

$`Fermentador:Periodo`
$`Fermentador:Periodo`$Letters
2:1 1:1 3:1 4:1 1:3 4:2 3:3 3:2 1:2 2:3 4:3 2:4 3:4 2:2 4:4 1:4 
"a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" 

$`Fermentador:Periodo`$LetterMatrix
       a
2:1 TRUE
1:1 TRUE
3:1 TRUE
4:1 TRUE
1:3 TRUE
4:2 TRUE
3:3 TRUE
3:2 TRUE
1:2 TRUE
2:3 TRUE
4:3 TRUE
2:4 TRUE
3:4 TRUE
2:2 TRUE
4:4 TRUE
1:4 TRUE
#Plot
summary = a %>% group_by(Fermentador, Periodo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary

g3=ggplot(summary, aes(x=Periodo, y=Gas_total, fill=Fermentador))+
  geom_col(position = "dodge")+
  geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
  scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
  scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3000,250), limits = c(0, 3000))+
  scale_x_discrete(name="Periodo", labels=c("1"="P1","2"="P2","3"="P3","4"="P4"))
g3

g3.1=g3+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
 panel.background = element_rect(fill = "transparent"),
 legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
 legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
 legend.direction="horizontal",
 axis.ticks = element_line(colour = "black", size = 1),
 legend.text = element_text(size = 15),          
  legend.title = element_text(size = 15),
  axis.title.y = element_text(size = 13, color = "black"),
  axis.title.x = element_text(size = 13, color = "black"),
  axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
  axis.text.y = element_text(size = 12, color = "black"))+
  annotate(geom="text", y=2350, x=1,label="a",size=7,color="black")+
  annotate(geom="text", y=2050, x=2,label="ab",size=7,color="black")+
  annotate(geom="text", y=2050, x=3,label="ab",size=7,color="black")+
  annotate(geom="text", y=2000, x=4,label="b",size=7,color="black")+
annotate("text",size=5, x=4, y=3000,label="P values")+
annotate("text",size=4, x=4, y=2750,label= "Fermentadores = 0.982")+
annotate("text",size=4, x=4, y=2550,label= "Periodos = 0.023")+
annotate("text",size=4, x=4, y=2350,label= "F x P = 0.937")
g3.1

ggsave("Plot_Fermentador_periodo_Gas.png", g3.1, width = 7, height = 5, units = "in", dpi = 300)

4 - ANALISE DE VARIANCIA PARA FERMENTADORES

Efluente total

#Modelo
mod = aov(Efluente_total ~ Fermentador+Tempo+Fermentador*Tempo, data = a)
summary(mod)
                  Df Sum Sq Mean Sq F value   Pr(>F)    
Fermentador        3  11178    3726   0.799 0.500715    
Tempo              3 115636   38545   8.262 0.000156 ***
Fermentador:Tempo  9  17764    1974   0.423 0.916272    
Residuals         48 223927    4665                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Efluente_total ~ Fermentador + Tempo + Fermentador * Tempo, data = a)

$Fermentador
          diff       lwr      upr     p adj
2-1  31.371875 -32.89592 95.63967 0.5679816
3-1   1.715625 -62.55217 65.98342 0.9998695
4-1  21.121875 -43.14592 85.38967 0.8178896
3-2 -29.656250 -93.92404 34.61154 0.6123453
4-2 -10.250000 -74.51779 54.01779 0.9740210
4-3  19.406250 -44.86154 83.67404 0.8523899

$Tempo
           diff       lwr       upr     p adj
48-24  -2.18750 -66.45529  62.08029 0.9997298
72-24  90.31250  26.04471 154.58029 0.0026790
96-24  76.34687  12.07908 140.61467 0.0139867
72-48  92.50000  28.23221 156.76779 0.0020385
96-48  78.53437  14.26658 142.80217 0.0109221
96-72 -13.96563 -78.23342  50.30217 0.9381066

$`Fermentador:Tempo`
              diff        lwr       upr     p adj
2:24-1:24  23.7500 -150.73119 198.23119 1.0000000
3:24-1:24 -55.8750 -230.35619 118.60619 0.9982379
4:24-1:24  35.8750 -138.60619 210.35619 0.9999918
1:48-1:24 -22.5000 -196.98119 151.98119 1.0000000
2:48-1:24  20.0000 -154.48119 194.48119 1.0000000
3:48-1:24   1.2500 -173.23119 175.73119 1.0000000
4:48-1:24  -3.7500 -178.23119 170.73119 1.0000000
1:72-1:24  62.5000 -111.98119 236.98119 0.9943118
2:72-1:24 107.5000  -66.98119 281.98119 0.6755803
3:72-1:24 100.0000  -74.48119 274.48119 0.7735453
4:72-1:24  95.0000  -79.48119 269.48119 0.8306424
1:96-1:24  74.0125 -100.46869 248.49369 0.9725271
2:96-1:24  88.2500  -86.23119 262.73119 0.8939916
3:96-1:24  75.5000  -98.98119 249.98119 0.9674915
4:96-1:24  71.3750 -103.10619 245.85619 0.9799819
3:24-2:24 -79.6250 -254.10619  94.85619 0.9499795
4:24-2:24  12.1250 -162.35619 186.60619 1.0000000
1:48-2:24 -46.2500 -220.73119 128.23119 0.9997983
2:48-2:24  -3.7500 -178.23119 170.73119 1.0000000
3:48-2:24 -22.5000 -196.98119 151.98119 1.0000000
4:48-2:24 -27.5000 -201.98119 146.98119 0.9999998
1:72-2:24  38.7500 -135.73119 213.23119 0.9999777
2:72-2:24  83.7500  -90.73119 258.23119 0.9266576
3:72-2:24  76.2500  -98.23119 250.73119 0.9647069
4:72-2:24  71.2500 -103.23119 245.73119 0.9802918
1:96-2:24  50.2625 -124.21869 224.74369 0.9994623
2:96-2:24  64.5000 -109.98119 238.98119 0.9922291
3:96-2:24  51.7500 -122.73119 226.23119 0.9992490
4:96-2:24  47.6250 -126.85619 222.10619 0.9997139
4:24-3:24  91.7500  -82.73119 266.23119 0.8632471
1:48-3:24  33.3750 -141.10619 207.85619 0.9999968
2:48-3:24  75.8750  -98.60619 250.35619 0.9661203
3:48-3:24  57.1250 -117.35619 231.60619 0.9977628
4:48-3:24  52.1250 -122.35619 226.60619 0.9991849
1:72-3:24 118.3750  -56.10619 292.85619 0.5215562
2:72-3:24 163.3750  -11.10619 337.85619 0.0888154
3:72-3:24 155.8750  -18.60619 330.35619 0.1275312
4:72-3:24 150.8750  -23.60619 325.35619 0.1602247
1:96-3:24 129.8875  -44.59369 304.36869 0.3666895
2:96-3:24 144.1250  -30.35619 318.60619 0.2141791
3:96-3:24 131.3750  -43.10619 305.85619 0.3484189
4:96-3:24 127.2500  -47.23119 301.73119 0.4002418
1:48-4:24 -58.3750 -232.85619 116.10619 0.9971839
2:48-4:24 -15.8750 -190.35619 158.60619 1.0000000
3:48-4:24 -34.6250 -209.10619 139.85619 0.9999949
4:48-4:24 -39.6250 -214.10619 134.85619 0.9999703
1:72-4:24  26.6250 -147.85619 201.10619 0.9999999
2:72-4:24  71.6250 -102.85619 246.10619 0.9793508
3:72-4:24  64.1250 -110.35619 238.60619 0.9926607
4:72-4:24  59.1250 -115.35619 233.60619 0.9967797
1:96-4:24  38.1375 -136.34369 212.61869 0.9999818
2:96-4:24  52.3750 -122.10619 226.85619 0.9991396
3:96-4:24  39.6250 -134.85619 214.10619 0.9999703
4:96-4:24  35.5000 -138.98119 209.98119 0.9999928
2:48-1:48  42.5000 -131.98119 216.98119 0.9999283
3:48-1:48  23.7500 -150.73119 198.23119 1.0000000
4:48-1:48  18.7500 -155.73119 193.23119 1.0000000
1:72-1:48  85.0000  -89.48119 259.48119 0.9183561
2:72-1:48 130.0000  -44.48119 304.48119 0.3652906
3:72-1:48 122.5000  -51.98119 296.98119 0.4638669
4:72-1:48 117.5000  -56.98119 291.98119 0.5339768
1:96-1:48  96.5125  -77.96869 270.99369 0.8142107
2:96-1:48 110.7500  -63.73119 285.23119 0.6301654
3:96-1:48  98.0000  -76.48119 272.48119 0.7973205
4:96-1:48  93.8750  -80.60619 268.35619 0.8423560
3:48-2:48 -18.7500 -193.23119 155.73119 1.0000000
4:48-2:48 -23.7500 -198.23119 150.73119 1.0000000
1:72-2:48  42.5000 -131.98119 216.98119 0.9999283
2:72-2:48  87.5000  -86.98119 261.98119 0.8999729
3:72-2:48  80.0000  -94.48119 254.48119 0.9481094
4:72-2:48  75.0000  -99.48119 249.48119 0.9692550
1:96-2:48  54.0125 -120.46869 228.49369 0.9987856
2:96-2:48  68.2500 -106.23119 242.73119 0.9866778
3:96-2:48  55.5000 -118.98119 229.98119 0.9983624
4:96-2:48  51.3750 -123.10619 225.85619 0.9993087
4:48-3:48  -5.0000 -179.48119 169.48119 1.0000000
1:72-3:48  61.2500 -113.23119 235.73119 0.9953629
2:72-3:48 106.2500  -68.23119 280.73119 0.6926832
3:72-3:48  98.7500  -75.73119 273.23119 0.7885431
4:72-3:48  93.7500  -80.73119 268.23119 0.8436300
1:96-3:48  72.7625 -101.71869 247.24369 0.9762843
2:96-3:48  87.0000  -87.48119 261.48119 0.9038407
3:96-3:48  74.2500 -100.23119 248.73119 0.9717653
4:96-3:48  70.1250 -104.35619 244.60619 0.9829169
1:72-4:48  66.2500 -108.23119 240.73119 0.9899344
2:72-4:48 111.2500  -63.23119 285.73119 0.6230882
3:72-4:48 103.7500  -70.73119 278.23119 0.7260676
4:72-4:48  98.7500  -75.73119 273.23119 0.7885431
1:96-4:48  77.7625  -96.71869 252.24369 0.9585637
2:96-4:48  92.0000  -82.48119 266.48119 0.8608750
3:96-4:48  79.2500  -95.23119 253.73119 0.9518014
4:96-4:48  75.1250  -99.35619 249.60619 0.9688210
2:72-1:72  45.0000 -129.48119 219.48119 0.9998551
3:72-1:72  37.5000 -136.98119 211.98119 0.9999854
4:72-1:72  32.5000 -141.98119 206.98119 0.9999978
1:96-1:72  11.5125 -162.96869 185.99369 1.0000000
2:96-1:72  25.7500 -148.73119 200.23119 0.9999999
3:96-1:72  13.0000 -161.48119 187.48119 1.0000000
4:96-1:72   8.8750 -165.60619 183.35619 1.0000000
3:72-2:72  -7.5000 -181.98119 166.98119 1.0000000
4:72-2:72 -12.5000 -186.98119 161.98119 1.0000000
1:96-2:72 -33.4875 -207.96869 140.99369 0.9999967
2:96-2:72 -19.2500 -193.73119 155.23119 1.0000000
3:96-2:72 -32.0000 -206.48119 142.48119 0.9999982
4:96-2:72 -36.1250 -210.60619 138.35619 0.9999910
4:72-3:72  -5.0000 -179.48119 169.48119 1.0000000
1:96-3:72 -25.9875 -200.46869 148.49369 0.9999999
2:96-3:72 -11.7500 -186.23119 162.73119 1.0000000
3:96-3:72 -24.5000 -198.98119 149.98119 1.0000000
4:96-3:72 -28.6250 -203.10619 145.85619 0.9999996
1:96-4:72 -20.9875 -195.46869 153.49369 1.0000000
2:96-4:72  -6.7500 -181.23119 167.73119 1.0000000
3:96-4:72 -19.5000 -193.98119 154.98119 1.0000000
4:96-4:72 -23.6250 -198.10619 150.85619 1.0000000
2:96-1:96  14.2375 -160.24369 188.71869 1.0000000
3:96-1:96   1.4875 -172.99369 175.96869 1.0000000
4:96-1:96  -2.6375 -177.11869 171.84369 1.0000000
3:96-2:96 -12.7500 -187.23119 161.73119 1.0000000
4:96-2:96 -16.8750 -191.35619 157.60619 1.0000000
4:96-3:96  -4.1250 -178.60619 170.35619 1.0000000
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
  2   4   3   1 
"a" "a" "a" "a" 

$Fermentador$LetterMatrix
     a
2 TRUE
4 TRUE
3 TRUE
1 TRUE


$Tempo
 72  96  24  48 
"a" "a" "b" "b" 

$`Fermentador:Tempo`
$`Fermentador:Tempo`$Letters
2:72 3:72 4:72 2:96 3:96 1:96 4:96 1:72 4:24 2:24 2:48 3:48 1:24 4:48 1:48 3:24 
 "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a"  "a" 

$`Fermentador:Tempo`$LetterMatrix
        a
2:72 TRUE
3:72 TRUE
4:72 TRUE
2:96 TRUE
3:96 TRUE
1:96 TRUE
4:96 TRUE
1:72 TRUE
4:24 TRUE
2:24 TRUE
2:48 TRUE
3:48 TRUE
1:24 TRUE
4:48 TRUE
1:48 TRUE
3:24 TRUE
#Plot
summary = a %>% group_by(Fermentador, Tempo) %>% summarise(sd = sd(Efluente_total, na.rm = TRUE),Efluente_total = mean(Efluente_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary

g4=ggplot(summary, aes(x=Tempo, y=Efluente_total, fill=Fermentador))+
  geom_col(position = "dodge")+
  geom_errorbar(aes(ymin=Efluente_total-sd, ymax=Efluente_total+sd), width=.2, position=position_dodge(.9))+
  scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
  scale_y_continuous(name="Efluente total (mL)", breaks = seq(0,700,50), limits = c(0, 700))+
  scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g4

g4.1=g4+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
 panel.background = element_rect(fill = "transparent"),
 legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
 legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
 legend.direction="horizontal",
 axis.ticks = element_line(colour = "black", size = 1),
 legend.text = element_text(size = 15),          
  legend.title = element_text(size = 15),
  axis.title.y = element_text(size = 13, color = "black"),
  axis.title.x = element_text(size = 13, color = "black"),
  axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
  axis.text.y = element_text(size = 12, color = "black"))+
  annotate(geom="text", y=400, x=1,label="b",size=8,color="black")+
  annotate(geom="text", y=400, x=2,label="b",size=8,color="black")+
  annotate(geom="text", y=480, x=3,label="a",size=8,color="black")+
  annotate(geom="text", y=480, x=4,label="a",size=8,color="black")+
annotate("text",size=5, x=4, y=700,label="P values")+
annotate("text",size=4, x=4, y=650,label= "Fermentadores = 0.501")+
annotate("text",size=4, x=4, y=600,label= "Tempo = <0.01")+
annotate("text",size=4, x=4, y=550,label= "F x T = 0.916")
g4.1

ggsave("Plot_Efluente.png", g4.1, width = 7, height = 5, units = "in", dpi = 300)

Gas total

#Modelo
mod = aov(Gas_total ~ Fermentador+Tempo+Fermentador*Tempo, data = a)
summary(mod)
                  Df  Sum Sq Mean Sq F value   Pr(>F)    
Fermentador        3   30582   10194   0.096    0.962    
Tempo              3 5569388 1856463  17.424 8.65e-08 ***
Fermentador:Tempo  9  582584   64732   0.608    0.784    
Residuals         48 5114118  106544                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Gas_total ~ Fermentador + Tempo + Fermentador * Tempo, data = a)

$Fermentador
        diff       lwr      upr     p adj
2-1 -16.9375 -324.0697 290.1947 0.9988567
3-1   4.1875 -302.9447 311.3197 0.9999826
4-1 -51.3125 -358.4447 255.8197 0.9703414
3-2  21.1250 -286.0072 328.2572 0.9977923
4-2 -34.3750 -341.5072 272.7572 0.9906935
4-3 -55.5000 -362.6322 251.6322 0.9629594

$Tempo
           diff         lwr         upr     p adj
48-24 -523.8750  -831.00724 -216.742758 0.0002164
72-24 -824.3125 -1131.44474 -517.180258 0.0000000
96-24 -454.6250  -761.75724 -147.492758 0.0014610
72-48 -300.4375  -607.56974    6.694742 0.0573222
96-48   69.2500  -237.88224  376.382242 0.9315376
96-72  369.6875    62.55526  676.819742 0.0124837

$`Fermentador:Tempo`
              diff       lwr         upr     p adj
2:24-1:24    28.50  -805.336  862.336049 1.0000000
3:24-1:24  -217.75 -1051.586  616.086049 0.9998315
4:24-1:24  -259.50 -1093.336  574.336049 0.9987118
1:48-1:24  -588.50 -1422.336  245.336049 0.4550305
2:48-1:24  -567.75 -1401.586  266.086049 0.5155074
3:48-1:24  -713.25 -1547.086  120.586049 0.1721633
4:48-1:24  -674.75 -1508.586  159.086049 0.2413228
1:72-1:24 -1039.00 -1872.836 -205.163951 0.0038929
2:72-1:24 -1001.50 -1835.336 -167.663951 0.0064063
3:72-1:24  -815.25 -1649.086   18.586049 0.0614450
4:72-1:24  -890.25 -1724.086  -56.413951 0.0259731
1:96-1:24  -560.00 -1393.836  273.836049 0.5385199
2:96-1:24  -714.50 -1548.336  119.336049 0.1701989
3:96-1:24  -424.50 -1258.336  409.336049 0.8892422
4:96-1:24  -568.25 -1402.086  265.586049 0.5140286
3:24-2:24  -246.25 -1080.086  587.586049 0.9992849
4:24-2:24  -288.00 -1121.836  545.836049 0.9960735
1:48-2:24  -617.00 -1450.836  216.836049 0.3764567
2:48-2:24  -596.25 -1430.086  237.586049 0.4330565
3:48-2:24  -741.75 -1575.586   92.086049 0.1315303
4:48-2:24  -703.25 -1537.086  130.586049 0.1885039
1:72-2:24 -1067.50 -1901.336 -233.663951 0.0026465
2:72-2:24 -1030.00 -1863.836 -196.163951 0.0043918
3:72-2:24  -843.75 -1677.586   -9.913951 0.0447026
4:72-2:24  -918.75 -1752.586  -84.913951 0.0183752
1:96-2:24  -588.50 -1422.336  245.336049 0.4550305
2:96-2:24  -743.00 -1576.836   90.836049 0.1299405
3:96-2:24  -453.00 -1286.836  380.836049 0.8328541
4:96-2:24  -596.75 -1430.586  237.086049 0.4316529
4:24-3:24   -41.75  -875.586  792.086049 1.0000000
1:48-3:24  -370.75 -1204.586  463.086049 0.9593439
2:48-3:24  -350.00 -1183.836  483.836049 0.9749045
3:48-3:24  -495.50 -1329.336  338.336049 0.7269324
4:48-3:24  -457.00 -1290.836  376.836049 0.8239155
1:72-3:24  -821.25 -1655.086   12.586049 0.0575216
2:72-3:24  -783.75 -1617.586   50.086049 0.0860890
3:72-3:24  -597.50 -1431.336  236.336049 0.4295508
4:72-3:24  -672.50 -1506.336  161.336049 0.2458922
1:96-3:24  -342.25 -1176.086  491.586049 0.9793732
2:96-3:24  -496.75 -1330.586  337.086049 0.7235011
3:96-3:24  -206.75 -1040.586  627.086049 0.9999106
4:96-3:24  -350.50 -1184.336  483.336049 0.9745929
1:48-4:24  -329.00 -1162.836  504.836049 0.9855658
2:48-4:24  -308.25 -1142.086  525.586049 0.9922271
3:48-4:24  -453.75 -1287.586  380.086049 0.8311964
4:48-4:24  -415.25 -1249.086  418.586049 0.9046669
1:72-4:24  -779.50 -1613.336   54.336049 0.0899862
2:72-4:24  -742.00 -1575.836   91.836049 0.1312111
3:72-4:24  -555.75 -1389.586  278.086049 0.5511947
4:72-4:24  -630.75 -1464.586  203.086049 0.3410686
1:96-4:24  -300.50 -1134.336  533.336049 0.9939561
2:96-4:24  -455.00 -1288.836  378.836049 0.8284147
3:96-4:24  -165.00  -998.836  668.836049 0.9999950
4:96-4:24  -308.75 -1142.586  525.086049 0.9921030
2:48-1:48    20.75  -813.086  854.586049 1.0000000
3:48-1:48  -124.75  -958.586  709.086049 0.9999999
4:48-1:48   -86.25  -920.086  747.586049 1.0000000
1:72-1:48  -450.50 -1284.336  383.336049 0.8383179
2:72-1:48  -413.00 -1246.836  420.836049 0.9082019
3:72-1:48  -226.75 -1060.586  607.086049 0.9997263
4:72-1:48  -301.75 -1135.586  532.086049 0.9937008
1:96-1:48    28.50  -805.336  862.336049 1.0000000
2:96-1:48  -126.00  -959.836  707.836049 0.9999999
3:96-1:48   164.00  -669.836  997.836049 0.9999954
4:96-1:48    20.25  -813.586  854.086049 1.0000000
3:48-2:48  -145.50  -979.336  688.336049 0.9999991
4:48-2:48  -107.00  -940.836  726.836049 1.0000000
1:72-2:48  -471.25 -1305.086  362.586049 0.7901988
2:72-2:48  -433.75 -1267.586  400.086049 0.8723880
3:72-2:48  -247.50 -1081.336  586.336049 0.9992424
4:72-2:48  -322.50 -1156.336  511.336049 0.9880122
1:96-2:48     7.75  -826.086  841.586049 1.0000000
2:96-2:48  -146.75  -980.586  687.086049 0.9999990
3:96-2:48   143.25  -690.586  977.086049 0.9999993
4:96-2:48    -0.50  -834.336  833.336049 1.0000000
4:48-3:48    38.50  -795.336  872.336049 1.0000000
1:72-3:48  -325.75 -1159.586  508.086049 0.9868339
2:72-3:48  -288.25 -1122.086  545.586049 0.9960382
3:72-3:48  -102.00  -935.836  731.836049 1.0000000
4:72-3:48  -177.00 -1010.836  656.836049 0.9999875
1:96-3:48   153.25  -680.586  987.086049 0.9999982
2:96-3:48    -1.25  -835.086  832.586049 1.0000000
3:96-3:48   288.75  -545.086 1122.586049 0.9959668
4:96-3:48   145.00  -688.836  978.836049 0.9999991
1:72-4:48  -364.25 -1198.086  469.586049 0.9648225
2:72-4:48  -326.75 -1160.586  507.086049 0.9864535
3:72-4:48  -140.50  -974.336  693.336049 0.9999994
4:72-4:48  -215.50 -1049.336  618.336049 0.9998514
1:96-4:48   114.75  -719.086  948.586049 1.0000000
2:96-4:48   -39.75  -873.586  794.086049 1.0000000
3:96-4:48   250.25  -583.586 1084.086049 0.9991414
4:96-4:48   106.50  -727.336  940.336049 1.0000000
2:72-1:72    37.50  -796.336  871.336049 1.0000000
3:72-1:72   223.75  -610.086 1057.586049 0.9997664
4:72-1:72   148.75  -685.086  982.586049 0.9999988
1:96-1:72   479.00  -354.836 1312.836049 0.7707211
2:96-1:72   324.50  -509.336 1158.336049 0.9872975
3:96-1:72   614.50  -219.336 1448.336049 0.3830831
4:96-1:72   470.75  -363.086 1304.586049 0.7914290
3:72-2:72   186.25  -647.586 1020.086049 0.9999760
4:72-2:72   111.25  -722.586  945.086049 1.0000000
1:96-2:72   441.50  -392.336 1275.336049 0.8571825
2:96-2:72   287.00  -546.836 1120.836049 0.9962121
3:96-2:72   577.00  -256.836 1410.836049 0.4882986
4:96-2:72   433.25  -400.586 1267.086049 0.8733352
4:72-3:72   -75.00  -908.836  758.836049 1.0000000
1:96-3:72   255.25  -578.586 1089.086049 0.9989278
2:96-3:72   100.75  -733.086  934.586049 1.0000000
3:96-3:72   390.75  -443.086 1224.586049 0.9386463
4:96-3:72   247.00  -586.836 1080.836049 0.9992597
1:96-4:72   330.25  -503.586 1164.086049 0.9850532
2:96-4:72   175.75  -658.086 1009.586049 0.9999886
3:96-4:72   465.75  -368.086 1299.586049 0.8035475
4:96-4:72   322.00  -511.836 1155.836049 0.9881858
2:96-1:96  -154.50  -988.336  679.336049 0.9999979
3:96-1:96   135.50  -698.336  969.336049 0.9999997
4:96-1:96    -8.25  -842.086  825.586049 1.0000000
3:96-2:96   290.00  -543.836 1123.836049 0.9957837
4:96-2:96   146.25  -687.586  980.086049 0.9999990
4:96-3:96  -143.75  -977.586  690.086049 0.9999992
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Fermentador
$Fermentador$Letters
  3   1   2   4 
"a" "a" "a" "a" 

$Fermentador$LetterMatrix
     a
3 TRUE
1 TRUE
2 TRUE
4 TRUE


$Tempo
  24   96   48   72 
 "a"  "b" "bc"  "c" 

$`Fermentador:Tempo`
 2:24  1:24  3:24  4:24  3:96  1:96  2:48  4:96  1:48  4:48  3:48  2:96  3:72  4:72  2:72  1:72 
  "a"  "ab" "abc" "abc" "abc" "abc" "abc" "abc" "abc" "abc" "abc" "abc"  "bc"   "c"   "c"   "c" 
#Plot
summary = a %>% group_by(Fermentador, Tempo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
`summarise()` has grouped output by 'Fermentador'. You can override using the `.groups` argument.
summary

g4=ggplot(summary, aes(x=Tempo, y=Gas_total, fill=Fermentador))+
  geom_col(position = "dodge")+
  geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
  scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Fermentadores:")+
  scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3500,250), limits = c(0, 3500))+
  scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g4

g4.1=g4+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
 panel.background = element_rect(fill = "transparent"),
 legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
 legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
 legend.direction="horizontal",
 axis.ticks = element_line(colour = "black", size = 1),
 legend.text = element_text(size = 15),          
  legend.title = element_text(size = 15),
  axis.title.y = element_text(size = 13, color = "black"),
  axis.title.x = element_text(size = 13, color = "black"),
  axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
  axis.text.y = element_text(size = 12, color = "black"))+
  annotate(geom="text", y=2600, x=1,label="a",size=8,color="black")+
  annotate(geom="text", y=2250, x=2,label="bc",size=8,color="black")+
  annotate(geom="text", y=2000, x=3,label="c",size=8,color="black")+
  annotate(geom="text", y=2100, x=4,label="b",size=8,color="black")+
annotate("text",size=5, x=4, y=3500,label="P values")+
annotate("text",size=4, x=4, y=3250,label= "Fermentadores = 0.962")+
annotate("text",size=4, x=4, y=3000,label= "Tempo = <0.01")+
annotate("text",size=4, x=4, y=2750,label= "F x T = 0.784")
g4.1

ggsave("Plot_Gas.png", g4.1, width = 7, height = 5, units = "in", dpi = 300)

5 - ANALISE DE VARIANCIA PARA PERIODO

Efluente total

#Modelo
mod = aov(Efluente_total ~ Periodo+Tempo+Periodo*Tempo, data = a)
summary(mod)
              Df Sum Sq Mean Sq F value   Pr(>F)    
Periodo        3  12955    4318   1.347  0.27041    
Tempo          3 115636   38545  12.019 5.45e-06 ***
Periodo:Tempo  9  85975    9553   2.979  0.00674 ** 
Residuals     48 153939    3207                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Efluente_total ~ Periodo + Tempo + Periodo * Tempo, data = a)

$Periodo
         diff       lwr      upr     p adj
2-1 -16.09687 -69.38298 37.18923 0.8522362
3-1 -12.47187 -65.75798 40.81423 0.9242339
4-1 -39.34687 -92.63298 13.93923 0.2154429
3-2   3.62500 -49.66110 56.91110 0.9978633
4-2 -23.25000 -76.53610 30.03610 0.6538537
4-3 -26.87500 -80.16110 26.41110 0.5411321

$Tempo
           diff       lwr       upr     p adj
48-24  -2.18750 -55.47360  51.09860 0.9995266
72-24  90.31250  37.02640 143.59860 0.0002378
96-24  76.34687  23.06077 129.63298 0.0021486
72-48  92.50000  39.21390 145.78610 0.0001661
96-48  78.53437  25.24827 131.82048 0.0015396
96-72 -13.96562 -67.25173  39.32048 0.8975339

$`Periodo:Tempo`
               diff         lwr        upr     p adj
2:24-1:24   80.5000  -64.166918 225.166918 0.8077351
3:24-1:24   95.5000  -49.166918 240.166918 0.5670431
4:24-1:24  -70.2500 -214.916918  74.416918 0.9202143
1:48-1:24   40.5000 -104.166918 185.166918 0.9996144
2:48-1:24   -2.0000 -146.666918 142.666918 1.0000000
3:48-1:24    8.0000 -136.666918 152.666918 1.0000000
4:48-1:24   50.5000  -94.166918 195.166918 0.9956210
1:72-1:24  150.5000    5.833082 295.166918 0.0340127
2:72-1:24  100.5000  -44.166918 245.166918 0.4816907
3:72-1:24  118.0000  -26.666918 262.666918 0.2306298
4:72-1:24   98.0000  -46.666918 242.666918 0.5240830
1:96-1:24  147.1375    2.470582 291.804418 0.0425521
2:96-1:24   94.7500  -49.916918 239.416918 0.5799689
3:96-1:24   66.7500  -77.916918 211.416918 0.9455064
4:96-1:24  102.5000  -42.166918 247.166918 0.4484881
3:24-2:24   15.0000 -129.666918 159.666918 1.0000000
4:24-2:24 -150.7500 -295.416918  -6.083082 0.0334443
1:48-2:24  -40.0000 -184.666918 104.666918 0.9996667
2:48-2:24  -82.5000 -227.166918  62.166918 0.7795701
3:48-2:24  -72.5000 -217.166918  72.166918 0.9004307
4:48-2:24  -30.0000 -174.666918 114.666918 0.9999908
1:72-2:24   70.0000  -74.666918 214.666918 0.9222396
2:72-2:24   20.0000 -124.666918 164.666918 1.0000000
3:72-2:24   37.5000 -107.166918 182.166918 0.9998460
4:72-2:24   17.5000 -127.166918 162.166918 1.0000000
1:96-2:24   66.6375  -78.029418 211.304418 0.9462126
2:96-2:24   14.2500 -130.416918 158.916918 1.0000000
3:96-2:24  -13.7500 -158.416918 130.916918 1.0000000
4:96-2:24   22.0000 -122.666918 166.666918 0.9999999
4:24-3:24 -165.7500 -310.416918 -21.083082 0.0116263
1:48-3:24  -55.0000 -199.666918  89.666918 0.9898105
2:48-3:24  -97.5000 -242.166918  47.166918 0.5326448
3:48-3:24  -87.5000 -232.166918  57.166918 0.7023807
4:48-3:24  -45.0000 -189.666918  99.666918 0.9987188
1:72-3:24   55.0000  -89.666918 199.666918 0.9898105
2:72-3:24    5.0000 -139.666918 149.666918 1.0000000
3:72-3:24   22.5000 -122.166918 167.166918 0.9999998
4:72-3:24    2.5000 -142.166918 147.166918 1.0000000
1:96-3:24   51.6375  -93.029418 196.304418 0.9945103
2:96-3:24   -0.7500 -145.416918 143.916918 1.0000000
3:96-3:24  -28.7500 -173.416918 115.916918 0.9999948
4:96-3:24    7.0000 -137.666918 151.666918 1.0000000
1:48-4:24  110.7500  -33.916918 255.416918 0.3223354
2:48-4:24   68.2500  -76.416918 212.916918 0.9354655
3:48-4:24   78.2500  -66.416918 222.916918 0.8371893
4:48-4:24  120.7500  -23.916918 265.416918 0.2010857
1:72-4:24  220.7500   76.083082 365.416918 0.0001436
2:72-4:24  170.7500   26.083082 315.416918 0.0080315
3:72-4:24  188.2500   43.583082 332.916918 0.0020810
4:72-4:24  168.2500   23.583082 312.916918 0.0096728
1:96-4:24  217.3875   72.720582 362.054418 0.0001908
2:96-4:24  165.0000   20.333082 309.666918 0.0122810
3:96-4:24  137.0000   -7.666918 281.666918 0.0809210
4:96-4:24  172.7500   28.083082 317.416918 0.0069118
2:48-1:48  -42.5000 -187.166918 102.166918 0.9993264
3:48-1:48  -32.5000 -177.166918 112.166918 0.9999741
4:48-1:48   10.0000 -134.666918 154.666918 1.0000000
1:72-1:48  110.0000  -34.666918 254.666918 0.3329250
2:72-1:48   60.0000  -84.666918 204.666918 0.9773920
3:72-1:48   77.5000  -67.166918 222.166918 0.8464444
4:72-1:48   57.5000  -87.166918 202.166918 0.9845604
1:96-1:48  106.6375  -38.029418 251.304418 0.3827084
2:96-1:48   54.2500  -90.416918 198.916918 0.9910688
3:96-1:48   26.2500 -118.416918 170.916918 0.9999984
4:96-1:48   62.0000  -82.666918 206.666918 0.9700164
3:48-2:48   10.0000 -134.666918 154.666918 1.0000000
4:48-2:48   52.5000  -92.166918 197.166918 0.9935219
1:72-2:48  152.5000    7.833082 297.166918 0.0297005
2:72-2:48  102.5000  -42.166918 247.166918 0.4484881
3:72-2:48  120.0000  -24.666918 264.666918 0.2088561
4:72-2:48  100.0000  -44.666918 244.666918 0.4901015
1:96-2:48  149.1375    4.470582 293.804418 0.0372669
2:96-2:48   96.7500  -47.916918 241.416918 0.5455220
3:96-2:48   68.7500  -75.916918 213.416918 0.9318551
4:96-2:48  104.5000  -40.166918 249.166918 0.4161388
4:48-3:48   42.5000 -102.166918 187.166918 0.9993264
1:72-3:48  142.5000   -2.166918 287.166918 0.0574605
2:72-3:48   92.5000  -52.166918 237.166918 0.6186456
3:72-3:48  110.0000  -34.666918 254.666918 0.3329250
4:72-3:48   90.0000  -54.666918 234.666918 0.6610673
1:96-3:48  139.1375   -5.529418 283.804418 0.0709715
2:96-3:48   86.7500  -57.916918 231.416918 0.7144778
3:96-3:48   58.7500  -85.916918 203.416918 0.9812402
4:96-3:48   94.5000  -50.166918 239.166918 0.5842766
1:72-4:48  100.0000  -44.666918 244.666918 0.4901015
2:72-4:48   50.0000  -94.666918 194.666918 0.9960465
3:72-4:48   67.5000  -77.166918 212.166918 0.9406326
4:72-4:48   47.5000  -97.166918 192.166918 0.9976931
1:96-4:48   96.6375  -48.029418 241.304418 0.5474565
2:96-4:48   44.2500 -100.416918 188.916918 0.9989372
3:96-4:48   16.2500 -128.416918 160.916918 1.0000000
4:96-4:48   52.0000  -92.666918 196.666918 0.9941112
2:72-1:72  -50.0000 -194.666918  94.666918 0.9960465
3:72-1:72  -32.5000 -177.166918 112.166918 0.9999741
4:72-1:72  -52.5000 -197.166918  92.166918 0.9935219
1:96-1:72   -3.3625 -148.029418 141.304418 1.0000000
2:96-1:72  -55.7500 -200.416918  88.916918 0.9884140
3:96-1:72  -83.7500 -228.416918  60.916918 0.7611081
4:96-1:72  -48.0000 -192.666918  96.666918 0.9974209
3:72-2:72   17.5000 -127.166918 162.166918 1.0000000
4:72-2:72   -2.5000 -147.166918 142.166918 1.0000000
1:96-2:72   46.6375  -98.029418 191.304418 0.9981057
2:96-2:72   -5.7500 -150.416918 138.916918 1.0000000
3:96-2:72  -33.7500 -178.416918 110.916918 0.9999582
4:96-2:72    2.0000 -142.666918 146.666918 1.0000000
4:72-3:72  -20.0000 -164.666918 124.666918 1.0000000
1:96-3:72   29.1375 -115.529418 173.804418 0.9999937
2:96-3:72  -23.2500 -167.916918 121.416918 0.9999997
3:96-3:72  -51.2500 -195.916918  93.416918 0.9949121
4:96-3:72  -15.5000 -160.166918 129.166918 1.0000000
1:96-4:72   49.1375  -95.529418 193.804418 0.9966996
2:96-4:72   -3.2500 -147.916918 141.416918 1.0000000
3:96-4:72  -31.2500 -175.916918 113.416918 0.9999844
4:96-4:72    4.5000 -140.166918 149.166918 1.0000000
2:96-1:96  -52.3875 -197.054418  92.279418 0.9936585
3:96-1:96  -80.3875 -225.054418  64.279418 0.8092658
4:96-1:96  -44.6375 -189.304418 100.029418 0.9988287
3:96-2:96  -28.0000 -172.666918 116.666918 0.9999963
4:96-2:96    7.7500 -136.916918 152.416918 1.0000000
4:96-3:96   35.7500 -108.916918 180.416918 0.9999142
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Periodo
$Periodo$Letters
  1   3   2   4 
"a" "a" "a" "a" 

$Periodo$LetterMatrix
     a
1 TRUE
3 TRUE
2 TRUE
4 TRUE


$Tempo
 72  96  24  48 
"a" "a" "b" "b" 

$`Periodo:Tempo`
 1:72  1:96  3:72  4:96  2:72  4:72  3:24  2:96  2:24  3:96  4:48  1:48  3:48  1:24  2:48  4:24 
  "a"   "a"  "ab"  "ab"  "ab"  "ab"  "ab"  "ab"  "ab" "abc" "abc" "abc" "abc"  "bc"  "bc"   "c" 
#Plot
summary = a %>% group_by(Periodo, Tempo) %>% summarise(sd = sd(Efluente_total, na.rm = TRUE),Efluente_total = mean(Efluente_total))
`summarise()` has grouped output by 'Periodo'. You can override using the `.groups` argument.
summary

g5=ggplot(summary, aes(x=Tempo, y=Efluente_total, fill=Periodo))+
  geom_col(position = "dodge")+
  geom_errorbar(aes(ymin=Efluente_total-sd, ymax=Efluente_total+sd), width=.2, position=position_dodge(.9))+
  scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Periodos:")+
  scale_y_continuous(name="Efluente total (mL)", breaks = seq(0,700,50), limits = c(0, 700))+
  scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g5

g5.1=g5+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
 panel.background = element_rect(fill = "transparent"),
 legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
 legend.position = c(0.30, 0.95),legend.key.size = unit(0.42, 'cm'),
 legend.direction="horizontal",
 axis.ticks = element_line(colour = "black", size = 1),
 legend.text = element_text(size = 15),          
  legend.title = element_text(size = 15),
  axis.title.y = element_text(size = 13, color = "black"),
  axis.title.x = element_text(size = 13, color = "black"),
  axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
  axis.text.y = element_text(size = 12, color = "black"))+
  annotate(geom="text", y=450, x=1,label="b",size=8,color="black")+
  annotate(geom="text", y=400, x=2,label="b",size=8,color="black")+
  annotate(geom="text", y=480, x=3,label="a",size=8,color="black")+
  annotate(geom="text", y=480, x=4,label="a",size=8,color="black")+
annotate("text",size=5, x=4, y=700,label="P values")+
annotate("text",size=4, x=4, y=650,label= "Periodo = 0.270")+
annotate("text",size=4, x=4, y=600,label= "Tempo = <0.01")+
annotate("text",size=4, x=4, y=550,label= "F x T = 0.007")
g5.1

ggsave("Plot_Efluente_Periodo.png", g5.1, width = 7, height = 5, units = "in", dpi = 300)

Gas total

#Modelo
mod = aov(Gas_total ~ Periodo+Tempo+Periodo*Tempo, data = a)
summary(mod)
              Df  Sum Sq Mean Sq F value   Pr(>F)    
Periodo        3 1904420  634807  11.126 1.16e-05 ***
Tempo          3 5569388 1856463  32.537 1.26e-11 ***
Periodo:Tempo  9 1084169  120463   2.111   0.0468 *  
Residuals     48 2738695   57056                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Função para gerar e extrair as letras de Tukey
tukey_result = TukeyHSD(mod)
print(tukey_result)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Gas_total ~ Periodo + Tempo + Periodo * Tempo, data = a)

$Periodo
         diff       lwr       upr     p adj
2-1 -340.5000 -565.2563 -115.7437 0.0010972
3-1 -269.6875 -494.4438  -44.9312 0.0128293
4-1 -472.8750 -697.6313 -248.1187 0.0000060
3-2   70.8125 -153.9438  295.5688 0.8358521
4-2 -132.3750 -357.1313   92.3813 0.4065147
4-3 -203.1875 -427.9438   21.5688 0.0895248

$Tempo
           diff        lwr       upr     p adj
48-24 -523.8750  -748.6313 -299.1187 0.0000007
72-24 -824.3125 -1049.0688 -599.5562 0.0000000
96-24 -454.6250  -679.3813 -229.8687 0.0000126
72-48 -300.4375  -525.1938  -75.6812 0.0045931
96-48   69.2500  -155.5063  294.0063 0.8447243
96-72  369.6875   144.9312  594.4438 0.0003664

$`Periodo:Tempo`
              diff         lwr         upr     p adj
2:24-1:24  -171.25  -781.44288  438.942883 0.9996030
3:24-1:24  -346.75  -956.94288  263.442883 0.7837787
4:24-1:24  -688.75 -1298.94288  -78.557117 0.0139035
1:48-1:24  -754.00 -1364.19288 -143.807117 0.0043713
2:48-1:24  -787.25 -1397.44288 -177.057117 0.0023630
3:48-1:24  -817.50 -1427.69288 -207.307117 0.0013337
4:48-1:24  -943.50 -1553.69288 -333.307117 0.0001120
1:72-1:24  -918.00 -1528.19288 -307.807117 0.0001867
2:72-1:24 -1330.50 -1940.69288 -720.307117 0.0000000
3:72-1:24  -998.25 -1608.44288 -388.057117 0.0000369
4:72-1:24 -1257.25 -1867.44288 -647.057117 0.0000002
1:96-1:24  -254.50  -864.69288  355.692883 0.9762550
2:96-1:24  -999.50 -1609.69288 -389.307117 0.0000360
3:96-1:24  -842.75 -1452.94288 -232.557117 0.0008209
4:96-1:24  -928.50 -1538.69288 -318.307117 0.0001513
3:24-2:24  -175.50  -785.69288  434.692883 0.9994721
4:24-2:24  -517.50 -1127.69288   92.692883 0.1819650
1:48-2:24  -582.75 -1192.94288   27.442883 0.0753796
2:48-2:24  -616.00 -1226.19288   -5.807117 0.0457180
3:48-2:24  -646.25 -1256.44288  -36.057117 0.0282829
4:48-2:24  -772.25 -1382.44288 -162.057117 0.0031246
1:72-2:24  -746.75 -1356.94288 -136.557117 0.0049883
2:72-2:24 -1159.25 -1769.44288 -549.057117 0.0000013
3:72-2:24  -827.00 -1437.19288 -216.807117 0.0011120
4:72-2:24 -1086.00 -1696.19288 -475.807117 0.0000061
1:96-2:24   -83.25  -693.44288  526.942883 1.0000000
2:96-2:24  -828.25 -1438.44288 -218.057117 0.0010856
3:96-2:24  -671.50 -1281.69288  -61.307117 0.0186340
4:96-2:24  -757.25 -1367.44288 -147.057117 0.0041190
4:24-3:24  -342.00  -952.19288  268.192883 0.7997132
1:48-3:24  -407.25 -1017.44288  202.942883 0.5489198
2:48-3:24  -440.50 -1050.69288  169.692883 0.4171674
3:48-3:24  -470.75 -1080.94288  139.442883 0.3104744
4:48-3:24  -596.75 -1206.94288   13.442883 0.0612997
1:72-3:24  -571.25 -1181.44288   38.942883 0.0889448
2:72-3:24  -983.75 -1593.94288 -373.557117 0.0000496
3:72-3:24  -651.50 -1261.69288  -41.307117 0.0259629
4:72-3:24  -910.50 -1520.69288 -300.307117 0.0002168
1:96-3:24    92.25  -517.94288  702.442883 0.9999999
2:96-3:24  -652.75 -1262.94288  -42.557117 0.0254368
3:96-3:24  -496.00 -1106.19288  114.192883 0.2352419
4:96-3:24  -581.75 -1191.94288   28.442883 0.0764843
1:48-4:24   -65.25  -675.44288  544.942883 1.0000000
2:48-4:24   -98.50  -708.69288  511.692883 0.9999997
3:48-4:24  -128.75  -738.94288  481.442883 0.9999885
4:48-4:24  -254.75  -864.94288  355.442883 0.9760511
1:72-4:24  -229.25  -839.44288  380.942883 0.9909063
2:72-4:24  -641.75 -1251.94288  -31.557117 0.0304202
3:72-4:24  -309.50  -919.69288  300.692883 0.8919518
4:72-4:24  -568.50 -1178.69288   41.692883 0.0924792
1:96-4:24   434.25  -175.94288 1044.442883 0.4410682
2:96-4:24  -310.75  -920.94288  299.442883 0.8889913
3:96-4:24  -154.00  -764.19288  456.192883 0.9998888
4:96-4:24  -239.75  -849.94288  370.442883 0.9861150
2:48-1:48   -33.25  -643.44288  576.942883 1.0000000
3:48-1:48   -63.50  -673.69288  546.692883 1.0000000
4:48-1:48  -189.50  -799.69288  420.692883 0.9987415
1:72-1:48  -164.00  -774.19288  446.192883 0.9997619
2:72-1:48  -576.50 -1186.69288   33.692883 0.0825143
3:72-1:48  -244.25  -854.44288  365.942883 0.9835324
4:72-1:48  -503.25 -1113.44288  106.942883 0.2161679
1:96-1:48   499.50  -110.69288 1109.692883 0.2258919
2:96-1:48  -245.50  -855.69288  364.692883 0.9827523
3:96-1:48   -88.75  -698.94288  521.442883 0.9999999
4:96-1:48  -174.50  -784.69288  435.692883 0.9995058
3:48-2:48   -30.25  -640.44288  579.942883 1.0000000
4:48-2:48  -156.25  -766.44288  453.942883 0.9998672
1:72-2:48  -130.75  -740.94288  479.442883 0.9999859
2:72-2:48  -543.25 -1153.44288   66.942883 0.1307554
3:72-2:48  -211.00  -821.19288  399.192883 0.9960263
4:72-2:48  -470.00 -1080.19288  140.192883 0.3129131
1:96-2:48   532.75   -77.44288 1142.942883 0.1500516
2:96-2:48  -212.25  -822.44288  397.942883 0.9957774
3:96-2:48   -55.50  -665.69288  554.692883 1.0000000
4:96-2:48  -141.25  -751.44288  468.942883 0.9999621
4:48-3:48  -126.00  -736.19288  484.192883 0.9999913
1:72-3:48  -100.50  -710.69288  509.692883 0.9999996
2:72-3:48  -513.00 -1123.19288   97.192883 0.1922996
3:72-3:48  -180.75  -790.94288  429.442883 0.9992598
4:72-3:48  -439.75 -1049.94288  170.442883 0.4200071
1:96-3:48   563.00   -47.19288 1173.192883 0.0999032
2:96-3:48  -182.00  -792.19288  428.192883 0.9991995
3:96-3:48   -25.25  -635.44288  584.942883 1.0000000
4:96-3:48  -111.00  -721.19288  499.192883 0.9999984
1:72-4:48    25.50  -584.69288  635.692883 1.0000000
2:72-4:48  -387.00  -997.19288  223.192883 0.6314309
3:72-4:48   -54.75  -664.94288  555.442883 1.0000000
4:72-4:48  -313.75  -923.94288  296.442883 0.8816873
1:96-4:48   689.00    78.80712 1299.192883 0.0138440
2:96-4:48   -56.00  -666.19288  554.192883 1.0000000
3:96-4:48   100.75  -509.44288  710.942883 0.9999996
4:96-4:48    15.00  -595.19288  625.192883 1.0000000
2:72-1:72  -412.50 -1022.69288  197.692883 0.5275546
3:72-1:72   -80.25  -690.44288  529.942883 1.0000000
4:72-1:72  -339.25  -949.44288  270.942883 0.8086785
1:96-1:72   663.50    53.30712 1273.692883 0.0213000
2:96-1:72   -81.50  -691.69288  528.692883 1.0000000
3:96-1:72    75.25  -534.94288  685.442883 1.0000000
4:96-1:72   -10.50  -620.69288  599.692883 1.0000000
3:72-2:72   332.25  -277.94288  942.442883 0.8305894
4:72-2:72    73.25  -536.94288  683.442883 1.0000000
1:96-2:72  1076.00   465.80712 1686.192883 0.0000075
2:96-2:72   331.00  -279.19288  941.192883 0.8343594
3:96-2:72   487.75  -122.44288 1097.942883 0.2583288
4:96-2:72   402.00  -208.19288 1012.192883 0.5703566
4:72-3:72  -259.00  -869.19288  351.192883 0.9723773
1:96-3:72   743.75   133.55712 1353.942883 0.0052672
2:96-3:72    -1.25  -611.44288  608.942883 1.0000000
3:96-3:72   155.50  -454.69288  765.692883 0.9998748
4:96-3:72    69.75  -540.44288  679.942883 1.0000000
1:96-4:72  1002.75   392.55712 1612.942883 0.0000337
2:96-4:72   257.75  -352.44288  867.942883 0.9734992
3:96-4:72   414.50  -195.69288 1024.692883 0.5194470
4:96-4:72   328.75  -281.44288  938.942883 0.8410333
2:96-1:96  -745.00 -1355.19288 -134.807117 0.0051492
3:96-1:96  -588.25 -1198.44288   21.942883 0.0695460
4:96-1:96  -674.00 -1284.19288  -63.807117 0.0178664
3:96-2:96   156.75  -453.44288  766.942883 0.9998620
4:96-2:96    71.00  -539.19288  681.192883 1.0000000
4:96-3:96   -85.75  -695.94288  524.442883 1.0000000
tukey_letters = multcompLetters4(mod, tukey_result)
tukey_letters
$Periodo
  1   3   2   4 
"a" "b" "b" "b" 

$Tempo
 24  96  48  72 
"a" "b" "b" "c" 

$`Periodo:Tempo`
   1:24    2:24    1:96    3:24    4:24    1:48    2:48    3:48    3:96    1:72    4:96    4:48    3:72    2:96 
    "a"    "ab"   "abc"  "abcd"  "bcde" "bcdef"  "cdef"  "cdef"  "cdef"   "def"   "def"   "def"    "ef"    "ef" 
   4:72    2:72 
   "ef"     "f" 
#Plot
summary = a %>% group_by(Periodo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
summary

#Periodo
g5=ggplot(summary, aes(x=Periodo, y=Gas_total, fill=Periodo))+
  geom_col(position = "dodge")+
  geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
  scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Periodo:")+
  scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3000,250), limits = c(0, 3100))+
  scale_x_discrete(name="Periodo", labels=c("1"="P1","2"="P2","3"="P3","4"="P4"))
g5

g5.1=g5+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
 panel.background = element_rect(fill = "transparent"),
 legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
 legend.position = c(0.30, 0.93),legend.key.size = unit(0.42, 'cm'),
 legend.direction="horizontal",
 axis.ticks = element_line(colour = "black", size = 1),
 legend.text = element_text(size = 14),          
  legend.title = element_text(size = 14),
  axis.title.y = element_text(size = 13, color = "black"),
  axis.title.x = element_text(size = 13, color = "black"),
  axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
  axis.text.y = element_text(size = 12, color = "black"))+
  annotate(geom="text", y=2250, x=1.2,label="a",size=8,color="black")+
  annotate(geom="text", y=2000, x=2.2,label="b",size=8,color="black")+
  annotate(geom="text", y=2000, x=3.2,label="b",size=8,color="black")+
  annotate(geom="text", y=2000, x=4.2,label="b",size=8,color="black")+
annotate("text",size=6, x=4, y=3000,label="P value")+
annotate("text",size=5, x=4, y=2750,label= "Periodo = <0.01")+
annotate("text",size=8, x=0.3, y=3000,label= "A")+
geom_rect(aes(xmin = 0.2, xmax = 0.4, ymin = 3100, ymax = 2900), fill = NA, color = "black", size = 0.5)
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
Please use `linewidth` instead.
g5.1


#Tempo
summary = a %>% group_by(Tempo) %>% summarise(sd = sd(Gas_total, na.rm = TRUE),Gas_total = mean(Gas_total))
summary

g5.2=ggplot(summary, aes(x=Tempo, y=Gas_total, fill=Tempo))+
  geom_col(position = "dodge")+
  geom_errorbar(aes(ymin=Gas_total-sd, ymax=Gas_total+sd), width=.2, position=position_dodge(.9))+
  scale_fill_manual(values = c("#a6cee3","#b2df8a","#fdbf6f","#cab2d6"),name= "Tempo:")+
  scale_y_continuous(name="Gás total (mL)", breaks = seq(0,3000,250), limits = c(0, 3100))+
  scale_x_discrete(name="Tempo (h)", labels=c("24"="24h","48"="48h","72"="72h","96"="96h"))
g5.2


g5.2=g5.2+theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"),
 panel.background = element_rect(fill = "transparent"),
 legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),
 legend.position = c(0.33, 0.93),legend.key.size = unit(0.42, 'cm'),
 legend.direction="horizontal",
 axis.ticks = element_line(colour = "black", size = 1),
 legend.text = element_text(size = 14),          
  legend.title = element_text(size = 14),
  axis.title.y = element_text(size = 13, color = "black"),
  axis.title.x = element_text(size = 13, color = "black"),
  axis.text.x = element_text(size = 12, angle = 0, hjust = 1, color = "black"),
  axis.text.y = element_text(size = 12, color = "black"))+
  annotate(geom="text", y=2500, x=1.2,label="a",size=8,color="black")+
  annotate(geom="text", y=2000, x=2.2,label="b",size=8,color="black")+
  annotate(geom="text", y=1700, x=3.2,label="c",size=8,color="black")+
  annotate(geom="text", y=2000, x=4.2,label="b",size=8,color="black")+
annotate("text",size=6, x=4, y=3000,label="P value")+
annotate("text",size=5, x=4, y=2750,label= "Tempo = <0.01")+
annotate("text",size=8, x=0.3, y=3000,label= "B")+
geom_rect(aes(xmin = 0.2, xmax = 0.4, ymin = 3100, ymax = 2900), fill = NA, color = "black", size = 0.5)
g5.2


all = grid.arrange(g5.1, g5.2, ncol = 1, nrow = 2)

ggsave("Plot_Gas_periodo.png", all, width = 7, height = 10, units = "in", dpi = 300)

6 - ANALISE DE VARIANCIA DE FERMENTADORES E PERIODOS PARA DMO E CH4

CH4

summary(mod)
                    Df Sum Sq Mean Sq F value Pr(>F)
Fermentador          3  12.84   4.280   0.848  0.496
Periodo              2  10.26   5.128   1.016  0.394
Fermentador:Periodo  6  21.01   3.502   0.694  0.660
Residuals           11  55.55   5.050               
25 observations deleted due to missingness

DMS24

DMS48

LS0tDQp0aXRsZTogIkRhZG9zIGRvIFJVU0lURUMgLSBKZXJhbGRpbmUiDQphdXRob3I6ICJWYWduZXIgT3ZhbmkiDQpkYXRlOiAiMTAvMTIvMjAyNCINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0aGVtZTogdW5pdGVkDQotLS0NCg0KIyBfKjEgLSBQYWNrYWdlcypfDQoNCmBgYHtyfQ0KbGlicmFyeShtdWx0Y29tcFZpZXcpDQpsaWJyYXJ5KG11bHRjb21wKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KYGBgDQoNCiMgXyoyIC0gREFET1MqXw0KDQpgYGB7cn0NCmE9cmVhZC5jc3YoIkQ6L0FybWF6ZW5hbWVudG8vREFUQSBSL0plcmFsZGluZS9kYWRvcy5jc3YiKQ0KcHJpbnQoYSkNCmEkRmVybWVudGFkb3I9YXMuZmFjdG9yKGEkRmVybWVudGFkb3IpDQphJFBlcmlvZG89YXMuZmFjdG9yKGEkUGVyaW9kbykNCmEkVGVtcG89YXMuZmFjdG9yKGEkVGVtcG8pDQpzdHIoYSkNCmBgYA0KIyBfKjMgLSBBTkFMSVNFIERFIFZBUklBTkNJQSBERSBGRVJNRU5UQURPUkVTIEUgUEVSSU9ET1MqXw0KDQojIF8qRWZsdWVudGUgdG90YWwqXw0KDQpgYGB7cn0NCiNNb2RlbG8NCm1vZCA9IGFvdihFZmx1ZW50ZV90b3RhbCB+IEZlcm1lbnRhZG9yK1BlcmlvZG8rRmVybWVudGFkb3IqUGVyaW9kbywgZGF0YSA9IGEpDQpzdW1tYXJ5KG1vZCkNCg0KIyBGdW7Dp8OjbyBwYXJhIGdlcmFyIGUgZXh0cmFpciBhcyBsZXRyYXMgZGUgVHVrZXkNCnR1a2V5X3Jlc3VsdCA9IFR1a2V5SFNEKG1vZCkNCnByaW50KHR1a2V5X3Jlc3VsdCkNCnR1a2V5X2xldHRlcnMgPSBtdWx0Y29tcExldHRlcnM0KG1vZCwgdHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycw0KDQojUGxvdA0Kc3VtbWFyeSA9IGEgJT4lIGdyb3VwX2J5KEZlcm1lbnRhZG9yLCBQZXJpb2RvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoRWZsdWVudGVfdG90YWwsIG5hLnJtID0gVFJVRSksRWZsdWVudGVfdG90YWwgPSBtZWFuKEVmbHVlbnRlX3RvdGFsKSkNCnN1bW1hcnkNCg0KZzM9Z2dwbG90KHN1bW1hcnksIGFlcyh4PVBlcmlvZG8sIHk9RWZsdWVudGVfdG90YWwsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1FZmx1ZW50ZV90b3RhbC1zZCwgeW1heD1FZmx1ZW50ZV90b3RhbCtzZCksIHdpZHRoPS4yLCBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSguOSkpKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjYTZjZWUzIiwiI2IyZGY4YSIsIiNmZGJmNmYiLCIjY2FiMmQ2IiksbmFtZT0gIkZlcm1lbnRhZG9yZXM6IikrDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lPSJFZmx1ZW50ZSB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsNzAwLDUwKSwgbGltaXRzID0gYygwLCA3MDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJQZXJpb2RvIiwgbGFiZWxzPWMoIjEiPSJQMSIsIjIiPSJQMiIsIjMiPSJQMyIsIjQiPSJQNCIpKQ0KZzMNCmczLjE9ZzMrdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAwLjUsIGxpbmV0eXBlID0gInNvbGlkIiksDQogcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksDQogbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIHNpemU9MC41LCBsaW5ldHlwZT0ic29saWQiLGNvbG91ciA9ImJsYWNrIiksDQogbGVnZW5kLnBvc2l0aW9uID0gYygwLjMwLCAwLjk1KSxsZWdlbmQua2V5LnNpemUgPSB1bml0KDAuNDIsICdjbScpLA0KIGxlZ2VuZC5kaXJlY3Rpb249Imhvcml6b250YWwiLA0KIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDEpLA0KIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksICAgICAgICAgIA0KICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBhbmdsZSA9IDAsIGhqdXN0ID0gMSwgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBjb2xvciA9ICJibGFjayIpKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTUsIHg9NCwgeT03MDAsbGFiZWw9IlAgdmFsdWVzIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9NjUwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuNjU1IikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9NjAwLGxhYmVsPSAiUGVyaW9kb3MgPSAwLjYwMCIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD00LCB5PTU1MCxsYWJlbD0gIkYgeCBQID0gMC45ODYiKQ0KZzMuMQ0KDQpnZ3NhdmUoIlBsb3RfRmVybWVudGFkb3JfcGVyaW9kb19FZmx1ZW50ZS5wbmciLCBnMy4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCiMgXypHw6FzIHRvdGFsKl8NCg0KYGBge3J9DQojTW9kZWxvDQptb2QgPSBhb3YoR2FzX3RvdGFsIH4gRmVybWVudGFkb3IrUGVyaW9kbytGZXJtZW50YWRvcipQZXJpb2RvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoRmVybWVudGFkb3IsIFBlcmlvZG8pICU+JSBzdW1tYXJpc2Uoc2QgPSBzZChHYXNfdG90YWwsIG5hLnJtID0gVFJVRSksR2FzX3RvdGFsID0gbWVhbihHYXNfdG90YWwpKQ0Kc3VtbWFyeQ0KDQpnMz1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9UGVyaW9kbywgeT1HYXNfdG90YWwsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1HYXNfdG90YWwtc2QsIHltYXg9R2FzX3RvdGFsK3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiRmVybWVudGFkb3JlczoiKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWU9IkfDoXMgdG90YWwgKG1MKSIsIGJyZWFrcyA9IHNlcSgwLDMwMDAsMjUwKSwgbGltaXRzID0gYygwLCAzMDAwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iUGVyaW9kbyIsIGxhYmVscz1jKCIxIj0iUDEiLCIyIj0iUDIiLCIzIj0iUDMiLCI0Ij0iUDQiKSkNCmczDQpnMy4xPWczK3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMCwgMC45NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIzNTAsIHg9MSxsYWJlbD0iYSIsc2l6ZT03LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT0yMDUwLCB4PTIsbGFiZWw9ImFiIixzaXplPTcsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIwNTAsIHg9MyxsYWJlbD0iYWIiLHNpemU9Nyxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD00LGxhYmVsPSJiIixzaXplPTcsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9MzAwMCxsYWJlbD0iUCB2YWx1ZXMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0yNzUwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuOTgyIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9MjU1MCxsYWJlbD0gIlBlcmlvZG9zID0gMC4wMjMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0yMzUwLGxhYmVsPSAiRiB4IFAgPSAwLjkzNyIpDQpnMy4xDQoNCmdnc2F2ZSgiUGxvdF9GZXJtZW50YWRvcl9wZXJpb2RvX0dhcy5wbmciLCBnMy4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCg0KIyBfKjQgLSBBTkFMSVNFIERFIFZBUklBTkNJQSBQQVJBIEZFUk1FTlRBRE9SRVMqXw0KDQojIF8qRWZsdWVudGUgdG90YWwqXw0KDQpgYGB7cn0NCiNNb2RlbG8NCm1vZCA9IGFvdihFZmx1ZW50ZV90b3RhbCB+IEZlcm1lbnRhZG9yK1RlbXBvK0Zlcm1lbnRhZG9yKlRlbXBvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoRmVybWVudGFkb3IsIFRlbXBvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoRWZsdWVudGVfdG90YWwsIG5hLnJtID0gVFJVRSksRWZsdWVudGVfdG90YWwgPSBtZWFuKEVmbHVlbnRlX3RvdGFsKSkNCnN1bW1hcnkNCg0KZzQ9Z2dwbG90KHN1bW1hcnksIGFlcyh4PVRlbXBvLCB5PUVmbHVlbnRlX3RvdGFsLCBmaWxsPUZlcm1lbnRhZG9yKSkrDQogIGdlb21fY29sKHBvc2l0aW9uID0gImRvZGdlIikrDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49RWZsdWVudGVfdG90YWwtc2QsIHltYXg9RWZsdWVudGVfdG90YWwrc2QpLCB3aWR0aD0uMiwgcG9zaXRpb249cG9zaXRpb25fZG9kZ2UoLjkpKSsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2E2Y2VlMyIsIiNiMmRmOGEiLCIjZmRiZjZmIiwiI2NhYjJkNiIpLG5hbWU9ICJGZXJtZW50YWRvcmVzOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iRWZsdWVudGUgdG90YWwgKG1MKSIsIGJyZWFrcyA9IHNlcSgwLDcwMCw1MCksIGxpbWl0cyA9IGMoMCwgNzAwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iVGVtcG8gKGgpIiwgbGFiZWxzPWMoIjI0Ij0iMjRoIiwiNDgiPSI0OGgiLCI3MiI9IjcyaCIsIjk2Ij0iOTZoIikpDQpnNA0KZzQuMT1nNCt0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNSwgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSwNCiBsZWdlbmQucG9zaXRpb24gPSBjKDAuMzAsIDAuOTUpLGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC40MiwgJ2NtJyksDQogbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMSksDQogbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwgICAgICAgICAgDQogIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGNvbG9yID0gImJsYWNrIikpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00MDAsIHg9MSxsYWJlbD0iYiIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00MDAsIHg9MixsYWJlbD0iYiIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00ODAsIHg9MyxsYWJlbD0iYSIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT00ODAsIHg9NCxsYWJlbD0iYSIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NSwgeD00LCB5PTcwMCxsYWJlbD0iUCB2YWx1ZXMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT02NTAsbGFiZWw9ICJGZXJtZW50YWRvcmVzID0gMC41MDEiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT02MDAsbGFiZWw9ICJUZW1wbyA9IDwwLjAxIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9NTUwLGxhYmVsPSAiRiB4IFQgPSAwLjkxNiIpDQpnNC4xDQoNCmdnc2F2ZSgiUGxvdF9FZmx1ZW50ZS5wbmciLCBnNC4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCiMgXypHYXMgdG90YWwqXw0KDQpgYGB7cn0NCiNNb2RlbG8NCm1vZCA9IGFvdihHYXNfdG90YWwgfiBGZXJtZW50YWRvcitUZW1wbytGZXJtZW50YWRvcipUZW1wbywgZGF0YSA9IGEpDQpzdW1tYXJ5KG1vZCkNCg0KIyBGdW7Dp8OjbyBwYXJhIGdlcmFyIGUgZXh0cmFpciBhcyBsZXRyYXMgZGUgVHVrZXkNCnR1a2V5X3Jlc3VsdCA9IFR1a2V5SFNEKG1vZCkNCnByaW50KHR1a2V5X3Jlc3VsdCkNCnR1a2V5X2xldHRlcnMgPSBtdWx0Y29tcExldHRlcnM0KG1vZCwgdHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycw0KDQojUGxvdA0Kc3VtbWFyeSA9IGEgJT4lIGdyb3VwX2J5KEZlcm1lbnRhZG9yLCBUZW1wbykgJT4lIHN1bW1hcmlzZShzZCA9IHNkKEdhc190b3RhbCwgbmEucm0gPSBUUlVFKSxHYXNfdG90YWwgPSBtZWFuKEdhc190b3RhbCkpDQpzdW1tYXJ5DQoNCmc0PWdncGxvdChzdW1tYXJ5LCBhZXMoeD1UZW1wbywgeT1HYXNfdG90YWwsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1HYXNfdG90YWwtc2QsIHltYXg9R2FzX3RvdGFsK3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiRmVybWVudGFkb3JlczoiKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWU9IkfDoXMgdG90YWwgKG1MKSIsIGJyZWFrcyA9IHNlcSgwLDM1MDAsMjUwKSwgbGltaXRzID0gYygwLCAzNTAwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iVGVtcG8gKGgpIiwgbGFiZWxzPWMoIjI0Ij0iMjRoIiwiNDgiPSI0OGgiLCI3MiI9IjcyaCIsIjk2Ij0iOTZoIikpDQpnNA0KZzQuMT1nNCt0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNSwgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSwNCiBsZWdlbmQucG9zaXRpb24gPSBjKDAuMzAsIDAuOTUpLGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC40MiwgJ2NtJyksDQogbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMSksDQogbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwgICAgICAgICAgDQogIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGNvbG9yID0gImJsYWNrIikpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT0yNjAwLCB4PTEsbGFiZWw9ImEiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjI1MCwgeD0yLGxhYmVsPSJiYyIsc2l6ZT04LGNvbG9yPSJibGFjayIpKw0KICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT0yMDAwLCB4PTMsbGFiZWw9ImMiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjEwMCwgeD00LGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9MzUwMCxsYWJlbD0iUCB2YWx1ZXMiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0zMjUwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuOTYyIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTQsIHk9MzAwMCxsYWJlbD0gIlRlbXBvID0gPDAuMDEiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT0yNzUwLGxhYmVsPSAiRiB4IFQgPSAwLjc4NCIpDQpnNC4xDQoNCmdnc2F2ZSgiUGxvdF9HYXMucG5nIiwgZzQuMSwgd2lkdGggPSA3LCBoZWlnaHQgPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkNCmBgYA0KDQojIF8qNSAtIEFOQUxJU0UgREUgVkFSSUFOQ0lBIFBBUkEgUEVSSU9ETypfDQoNCiMgXypFZmx1ZW50ZSB0b3RhbCpfDQoNCmBgYHtyfQ0KI01vZGVsbw0KbW9kID0gYW92KEVmbHVlbnRlX3RvdGFsIH4gUGVyaW9kbytUZW1wbytQZXJpb2RvKlRlbXBvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoUGVyaW9kbywgVGVtcG8pICU+JSBzdW1tYXJpc2Uoc2QgPSBzZChFZmx1ZW50ZV90b3RhbCwgbmEucm0gPSBUUlVFKSxFZmx1ZW50ZV90b3RhbCA9IG1lYW4oRWZsdWVudGVfdG90YWwpKQ0Kc3VtbWFyeQ0KDQpnNT1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9VGVtcG8sIHk9RWZsdWVudGVfdG90YWwsIGZpbGw9UGVyaW9kbykpKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPUVmbHVlbnRlX3RvdGFsLXNkLCB5bWF4PUVmbHVlbnRlX3RvdGFsK3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiUGVyaW9kb3M6IikrDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lPSJFZmx1ZW50ZSB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsNzAwLDUwKSwgbGltaXRzID0gYygwLCA3MDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJUZW1wbyAoaCkiLCBsYWJlbHM9YygiMjQiPSIyNGgiLCI0OCI9IjQ4aCIsIjcyIj0iNzJoIiwiOTYiPSI5NmgiKSkNCmc1DQpnNS4xPWc1K3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMCwgMC45NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQ1MCwgeD0xLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQwMCwgeD0yLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQ4MCwgeD0zLGxhYmVsPSJhIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTQ4MCwgeD00LGxhYmVsPSJhIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9NzAwLGxhYmVsPSJQIHZhbHVlcyIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD00LCB5PTY1MCxsYWJlbD0gIlBlcmlvZG8gPSAwLjI3MCIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD00LCB5PTYwMCxsYWJlbD0gIlRlbXBvID0gPDAuMDEiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9NCwgeT01NTAsbGFiZWw9ICJGIHggVCA9IDAuMDA3IikNCmc1LjENCg0KZ2dzYXZlKCJQbG90X0VmbHVlbnRlX1BlcmlvZG8ucG5nIiwgZzUuMSwgd2lkdGggPSA3LCBoZWlnaHQgPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkNCmBgYA0KDQojIF8qR2FzIHRvdGFsKl8NCg0KYGBge3J9DQojTW9kZWxvDQptb2QgPSBhb3YoR2FzX3RvdGFsIH4gUGVyaW9kbytUZW1wbytQZXJpb2RvKlRlbXBvLCBkYXRhID0gYSkNCnN1bW1hcnkobW9kKQ0KDQojIEZ1bsOnw6NvIHBhcmEgZ2VyYXIgZSBleHRyYWlyIGFzIGxldHJhcyBkZSBUdWtleQ0KdHVrZXlfcmVzdWx0ID0gVHVrZXlIU0QobW9kKQ0KcHJpbnQodHVrZXlfcmVzdWx0KQ0KdHVrZXlfbGV0dGVycyA9IG11bHRjb21wTGV0dGVyczQobW9kLCB0dWtleV9yZXN1bHQpDQp0dWtleV9sZXR0ZXJzDQoNCiNQbG90DQpzdW1tYXJ5ID0gYSAlPiUgZ3JvdXBfYnkoUGVyaW9kbykgJT4lIHN1bW1hcmlzZShzZCA9IHNkKEdhc190b3RhbCwgbmEucm0gPSBUUlVFKSxHYXNfdG90YWwgPSBtZWFuKEdhc190b3RhbCkpDQpzdW1tYXJ5DQoNCiNQZXJpb2RvDQpnNT1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9UGVyaW9kbywgeT1HYXNfdG90YWwsIGZpbGw9UGVyaW9kbykpKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPUdhc190b3RhbC1zZCwgeW1heD1HYXNfdG90YWwrc2QpLCB3aWR0aD0uMiwgcG9zaXRpb249cG9zaXRpb25fZG9kZ2UoLjkpKSsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2E2Y2VlMyIsIiNiMmRmOGEiLCIjZmRiZjZmIiwiI2NhYjJkNiIpLG5hbWU9ICJQZXJpb2RvOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iR8OhcyB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsMzAwMCwyNTApLCBsaW1pdHMgPSBjKDAsIDMxMDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJQZXJpb2RvIiwgbGFiZWxzPWMoIjEiPSJQMSIsIjIiPSJQMiIsIjMiPSJQMyIsIjQiPSJQNCIpKQ0KZzUNCmc1LjE9ZzUrdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAwLjUsIGxpbmV0eXBlID0gInNvbGlkIiksDQogcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksDQogbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIHNpemU9MC41LCBsaW5ldHlwZT0ic29saWQiLGNvbG91ciA9ImJsYWNrIiksDQogbGVnZW5kLnBvc2l0aW9uID0gYygwLjMwLCAwLjkzKSxsZWdlbmQua2V5LnNpemUgPSB1bml0KDAuNDIsICdjbScpLA0KIGxlZ2VuZC5kaXJlY3Rpb249Imhvcml6b250YWwiLA0KIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDEpLA0KIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCksICAgICAgICAgIA0KICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0KSwNCiAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBhbmdsZSA9IDAsIGhqdXN0ID0gMSwgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBjb2xvciA9ICJibGFjayIpKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjI1MCwgeD0xLjIsbGFiZWw9ImEiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD0yLjIsbGFiZWw9ImIiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD0zLjIsbGFiZWw9ImIiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MjAwMCwgeD00LjIsbGFiZWw9ImIiLHNpemU9OCxjb2xvcj0iYmxhY2siKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTYsIHg9NCwgeT0zMDAwLGxhYmVsPSJQIHZhbHVlIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTQsIHk9Mjc1MCxsYWJlbD0gIlBlcmlvZG8gPSA8MC4wMSIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9OCwgeD0wLjMsIHk9MzAwMCxsYWJlbD0gIkEiKSsNCmdlb21fcmVjdChhZXMoeG1pbiA9IDAuMiwgeG1heCA9IDAuNCwgeW1pbiA9IDMxMDAsIHltYXggPSAyOTAwKSwgZmlsbCA9IE5BLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjUpDQpnNS4xDQoNCiNUZW1wbw0Kc3VtbWFyeSA9IGEgJT4lIGdyb3VwX2J5KFRlbXBvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoR2FzX3RvdGFsLCBuYS5ybSA9IFRSVUUpLEdhc190b3RhbCA9IG1lYW4oR2FzX3RvdGFsKSkNCnN1bW1hcnkNCg0KZzUuMj1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9VGVtcG8sIHk9R2FzX3RvdGFsLCBmaWxsPVRlbXBvKSkrDQogIGdlb21fY29sKHBvc2l0aW9uID0gImRvZGdlIikrDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49R2FzX3RvdGFsLXNkLCB5bWF4PUdhc190b3RhbCtzZCksIHdpZHRoPS4yLCBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSguOSkpKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjYTZjZWUzIiwiI2IyZGY4YSIsIiNmZGJmNmYiLCIjY2FiMmQ2IiksbmFtZT0gIlRlbXBvOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iR8OhcyB0b3RhbCAobUwpIiwgYnJlYWtzID0gc2VxKDAsMzAwMCwyNTApLCBsaW1pdHMgPSBjKDAsIDMxMDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJUZW1wbyAoaCkiLCBsYWJlbHM9YygiMjQiPSIyNGgiLCI0OCI9IjQ4aCIsIjcyIj0iNzJoIiwiOTYiPSI5NmgiKSkNCmc1LjINCg0KZzUuMj1nNS4yK3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMywgMC45MyksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTI1MDAsIHg9MS4yLGxhYmVsPSJhIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIwMDAsIHg9Mi4yLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTE3MDAsIHg9My4yLGxhYmVsPSJjIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIwMDAsIHg9NC4yLGxhYmVsPSJiIixzaXplPTgsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT02LCB4PTQsIHk9MzAwMCxsYWJlbD0iUCB2YWx1ZSIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NSwgeD00LCB5PTI3NTAsbGFiZWw9ICJUZW1wbyA9IDwwLjAxIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT04LCB4PTAuMywgeT0zMDAwLGxhYmVsPSAiQiIpKw0KZ2VvbV9yZWN0KGFlcyh4bWluID0gMC4yLCB4bWF4ID0gMC40LCB5bWluID0gMzEwMCwgeW1heCA9IDI5MDApLCBmaWxsID0gTkEsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuNSkNCmc1LjINCg0KYWxsID0gZ3JpZC5hcnJhbmdlKGc1LjEsIGc1LjIsIG5jb2wgPSAxLCBucm93ID0gMikNCmdnc2F2ZSgiUGxvdF9HYXNfcGVyaW9kby5wbmciLCBhbGwsIHdpZHRoID0gNywgaGVpZ2h0ID0gMTAsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCiMgXyo2IC0gQU5BTElTRSBERSBWQVJJQU5DSUEgREUgRkVSTUVOVEFET1JFUyBFIFBFUklPRE9TIFBBUkEgRE1PIEUgQ0g0Kl8NCg0KIyBfKkNINCpfDQoNCmBgYHtyfQ0Kc3RyKGEpDQphMT1zdWJzZXQoYSwgUGVyaW9kbyE9ICI0IikNCnByaW50KGExKQ0KI01vZGVsbw0KbW9kID0gYW92KENINCB+IEZlcm1lbnRhZG9yK1BlcmlvZG8rRmVybWVudGFkb3IqUGVyaW9kbywgZGF0YSA9IGExKQ0Kc3VtbWFyeShtb2QpDQoNCiNQbG90DQpzdW1tYXJ5ID0gYTEgJT4lIGdyb3VwX2J5KEZlcm1lbnRhZG9yLCBQZXJpb2RvKSAlPiUgc3VtbWFyaXNlKHNkID0gc2QoQ0g0LCBuYS5ybSA9IFRSVUUpLENINCA9IG1lYW4oQ0g0LG5hLnJtID0gVFJVRSkpDQpzdW1tYXJ5DQoNCmc2PWdncGxvdChzdW1tYXJ5LCBhZXMoeD1QZXJpb2RvLCB5PUNINCwgZmlsbD1GZXJtZW50YWRvcikpKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluPUNINC1zZCwgeW1heD1DSDQrc2QpLCB3aWR0aD0uMiwgcG9zaXRpb249cG9zaXRpb25fZG9kZ2UoLjkpKSsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiI2E2Y2VlMyIsIiNiMmRmOGEiLCIjZmRiZjZmIiwiI2NhYjJkNiIpLG5hbWU9ICJGZXJtZW50YWRvcmVzOiIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iQ0g0IChtTC9nIE1TKSIsIGJyZWFrcyA9IHNlcSgwLDEwLDEpLCBsaW1pdHMgPSBjKDAsIDEwKSkrDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZT0iUGVyaW9kbyIsIGxhYmVscz1jKCIxIj0iUDEiLCIyIj0iUDIiLCIzIj0iUDMiLCI0Ij0iUDQiKSkNCmc2DQpnNi4xPWc2K3RoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMC41LCBsaW5ldHlwZSA9ICJzb2xpZCIpLA0KIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLA0KIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIixjb2xvdXIgPSJibGFjayIpLA0KIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4zMCwgMC45NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSwNCiBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAxKSwNCiBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLCAgICAgICAgICANCiAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgYW5nbGUgPSAwLCBoanVzdCA9IDEsIGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiYmxhY2siKSkrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT01LCB4PTMsIHk9MTAsbGFiZWw9IlAgdmFsdWVzIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9OS41LGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuNDk2IikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9OSxsYWJlbD0gIlBlcmlvZG9zID0gMC4zOTQiKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTQsIHg9MywgeT04LjUsbGFiZWw9ICJGIHggUCA9IDAuNjYwIikNCmc2LjENCg0KZ2dzYXZlKCJQbG90X0Zlcm1lbnRhZG9yX3BlcmlvZG9fQ0g0LnBuZyIsIGc2LjEsIHdpZHRoID0gNywgaGVpZ2h0ID0gNSwgdW5pdHMgPSAiaW4iLCBkcGkgPSAzMDApDQpgYGANCg0KIyBfKkRNUzI0Kl8NCg0KYGBge3J9DQphMSRETVNfMjQ9YTEkRE1TXzI0KjEwMDANClZpZXcoYTEpDQojTW9kZWxvDQptb2QgPSBhb3YoRE1TXzI0IH4gRmVybWVudGFkb3IsIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KbW9kID0gYW92KERNU18yNCB+IFBlcmlvZG8sIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KI1Bsb3QNCnN1bW1hcnkgPSBhMSAlPiUgZ3JvdXBfYnkoRmVybWVudGFkb3IsIFBlcmlvZG8pICU+JSBzdW1tYXJpc2Uoc2QgPSBzZChETVNfMjQsIG5hLnJtID0gVFJVRSksRE1TXzI0ID0gbWVhbihETVNfMjQsbmEucm0gPSBUUlVFKSkNCnN1bW1hcnkNCg0KZzc9Z2dwbG90KHN1bW1hcnksIGFlcyh4PVBlcmlvZG8sIHk9RE1TXzI0LCBmaWxsPUZlcm1lbnRhZG9yKSkrDQogIGdlb21fY29sKHBvc2l0aW9uID0gImRvZGdlIikrDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49RE1TXzI0LXNkLCB5bWF4PURNU18yNCtzZCksIHdpZHRoPS4yLCBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSguOSkpKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjYTZjZWUzIiwiI2IyZGY4YSIsIiNmZGJmNmYiLCIjY2FiMmQ2IiksbmFtZT0gIkZlcm1lbnRhZG9yZXM6IikrDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lPSJETVMgMjQgSG9yYXMgKGcva2cgTVMpIiwgYnJlYWtzID0gc2VxKDAsMTAwMCwxMDApLCBsaW1pdHMgPSBjKDAsIDEwMDApKSsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lPSJQZXJpb2RvIiwgbGFiZWxzPWMoIjEiPSJQMSIsIjIiPSJQMiIsIjMiPSJQMyIsIjQiPSJQNCIpKQ0KZzcNCmc3LjE9ZzcrdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAwLjUsIGxpbmV0eXBlID0gInNvbGlkIiksDQogcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksDQogbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIHNpemU9MC41LCBsaW5ldHlwZT0ic29saWQiLGNvbG91ciA9ImJsYWNrIiksDQogbGVnZW5kLnBvc2l0aW9uID0gYygwLjMwLCAwLjk1KSxsZWdlbmQua2V5LnNpemUgPSB1bml0KDAuNDIsICdjbScpLA0KIGxlZ2VuZC5kaXJlY3Rpb249Imhvcml6b250YWwiLA0KIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDEpLA0KIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksICAgICAgICAgIA0KICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMywgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBhbmdsZSA9IDAsIGhqdXN0ID0gMSwgY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBjb2xvciA9ICJibGFjayIpKSsNCmFubm90YXRlKCJ0ZXh0IixzaXplPTUsIHg9MywgeT0xMDAwLGxhYmVsPSJQIHZhbHVlcyIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD0zLCB5PTkwMCxsYWJlbD0gIkZlcm1lbnRhZG9yZXMgPSAwLjUxNyIpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NCwgeD0zLCB5PTgwMCxsYWJlbD0gIlBlcmlvZG9zID0gMC4zNTQiKQ0KZzcuMQ0KDQpnZ3NhdmUoIlBsb3RfRmVybWVudGFkb3JfcGVyaW9kb19ETVMyNGgucG5nIiwgZzcuMSwgd2lkdGggPSA3LCBoZWlnaHQgPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkNCmBgYA0KDQojIF8qRE1TNDgqXw0KDQpgYGB7cn0NCmExJERNU180OD1hMSRETVNfNDgqMTAwMA0KcHJpbnQoYTEpDQojTW9kZWxvDQptb2QgPSBhb3YoRE1TXzQ4IH4gRmVybWVudGFkb3IsIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KbW9kID0gYW92KERNU180OCB+IFBlcmlvZG8sIGRhdGEgPSBhMSkNCnN1bW1hcnkobW9kKQ0KDQojUGxvdA0Kc3VtbWFyeSA9IGExICU+JSBncm91cF9ieShGZXJtZW50YWRvciwgUGVyaW9kbykgJT4lIHN1bW1hcmlzZShzZCA9IHNkKERNU180OCwgbmEucm0gPSBUUlVFKSxETVNfNDggPSBtZWFuKERNU180OCxuYS5ybSA9IFRSVUUpKQ0Kc3VtbWFyeQ0KDQpnOD1nZ3Bsb3Qoc3VtbWFyeSwgYWVzKHg9UGVyaW9kbywgeT1ETVNfNDgsIGZpbGw9RmVybWVudGFkb3IpKSsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbj1ETVNfNDgtc2QsIHltYXg9RE1TXzQ4K3NkKSwgd2lkdGg9LjIsIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKC45KSkrDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiNhNmNlZTMiLCIjYjJkZjhhIiwiI2ZkYmY2ZiIsIiNjYWIyZDYiKSxuYW1lPSAiRmVybWVudGFkb3JlczoiKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWU9IkRNUyA0OCBIb3JhcyAoZy9rZyBNUykiLCBicmVha3MgPSBzZXEoMCwxMDAwLDEwMCksIGxpbWl0cyA9IGMoMCwgMTAwMCkpKw0KICBzY2FsZV94X2Rpc2NyZXRlKG5hbWU9IlBlcmlvZG8iLCBsYWJlbHM9YygiMSI9IlAxIiwiMiI9IlAyIiwiMyI9IlAzIiwiNCI9IlA0IikpDQpnOA0KZzguMT1nOCt0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNSwgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSwNCiBsZWdlbmQucG9zaXRpb24gPSBjKDAuMzAsIDAuOTUpLGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC40MiwgJ2NtJyksDQogbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLCBzaXplID0gMSksDQogbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwgICAgICAgICAgDQogIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGNvbG9yID0gImJsYWNrIikpKw0KYW5ub3RhdGUoInRleHQiLHNpemU9NSwgeD0zLCB5PTEwMDAsbGFiZWw9IlAgdmFsdWVzIikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9OTAwLGxhYmVsPSAiRmVybWVudGFkb3JlcyA9IDAuNTI3IikrDQphbm5vdGF0ZSgidGV4dCIsc2l6ZT00LCB4PTMsIHk9ODAwLGxhYmVsPSAiUGVyaW9kb3MgPSAwLjc3MCIpDQpnOC4xDQoNCmdnc2F2ZSgiUGxvdF9GZXJtZW50YWRvcl9wZXJpb2RvX0RNUzQ4aC5wbmciLCBnOC4xLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCg==