library(readr)
MRSA <- read_csv("~/Desktop/MRSA.csv")
Rows: 5190 Columns: 21
── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (8): image, root_name, root, root_ontology, parent_name, parent, first_child, last_child
dbl (13): length, vector_length, surface, volume, direction, diameter, root_order, insertion_position, insertion_angle, n_child, c...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
MRSA
#MRSA <- na.omit(MRSA)
#MRSA
MRSA$root_order
   [1] 0 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1
  [65] 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1
 [129] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1
 [193] 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0
 [257] 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
 [321] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1
 [385] 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1
 [449] 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1
 [513] 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 1
 [577] 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0
 [641] 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1
 [705] 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
 [769] 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 1 1
 [833] 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0
 [897] 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
 [961] 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 1
 [ reached getOption("max.print") -- omitted 4190 entries ]
MRSA_MR <- subset(MRSA, MRSA$root_order == 0)
MRSA_LR <- subset(MRSA, MRSA$root_order != 0)
dim(MRSA_MR)
[1] 1342   21
dim(MRSA_LR)
[1] 3848   21
#subsetting MR between ones with lateral roots and without
MRSA_MR_noLR <- subset(MRSA_MR, MRSA_MR$n_child == 0)
MRSA_MR_LR <- subset(MRSA_MR, MRSA_MR$n_child != 0)
MRSA_MR_LR$root[1]
[1] "8cae30f1-14ab-4479-9106-cfe92381948a"
MRSA_LR$parent[1]
[1] "8cae30f1-14ab-4479-9106-cfe92381948a"
MRSA_LR$parent[2]
[1] "574b2ce2-8705-4285-9a99-6a184b49c424"
MRSA_LR$parent %in% MRSA_MR_LR$root
   [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [26] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [51] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [76] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [101] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [126] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [151] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [176] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [201] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [226] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [251] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [276] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [301] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [326] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [351] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [376] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [401] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [426] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [451] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [476] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [501] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [526] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [551] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [576] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [601] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [626] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [651] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [676] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [701] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [726] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [751] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [776] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [801] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [826] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [851] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [876] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [901] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [926] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [951] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [976] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [ reached getOption("max.print") -- omitted 2848 entries ]
MRSA_LR

temp <- subset(MRSA_LR, MRSA_LR$parent == MRSA_MR_LR$root[1])
temp
LRL <- sum(temp$length)
temp$LRno <- 1
sum(temp$LRno)
[1] 3
LRL <- sum(temp$length)
temp$LRno <- 1
sum(temp$LRno)
[1] 3
MRSA
LRL
[1] 0.755542
dim(temp)
[1]  3 22
LRno <- dim(temp)[1]
LRno
[1] 3
MRSA_MR_LR$LRL <- 0
MRSA_MR_LR$LRno <- 0
MRSA_MR_LR
MRSA_MR_LR$LRL[1] <- LRL
MRSA_MR_LR$LRno[1] <- LRno
MRSA_MR_LR
for(i in 1:nrow(MRSA_MR_LR)){
  temp <- subset(MRSA_LR, MRSA_LR$parent == MRSA_MR_LR$root[i])
  MRSA_MR_LR$LRL[i]  <- sum(temp$length)
  MRSA_MR_LR$LRno[i]  <- dim(temp)[1]
}

MRSA_MR_LR
colnames(MRSA_MR_LR)
 [1] "image"                 "root_name"             "root"                  "length"                "vector_length"        
 [6] "surface"               "volume"                "direction"             "diameter"              "root_order"           
[11] "root_ontology"         "parent_name"           "parent"                "insertion_position"    "insertion_angle"      
[16] "n_child"               "child_density"         "first_child"           "insertion_first_child" "last_child"           
[21] "insertion_last_child"  "LRL"                   "LRno"                 
MRSA_MR_LR2 <- MRSA_MR_LR[,c(1:2,4,19,21,22:23)]
MRSA_MR_LR2
MRSA_MR_noLR$LRL <- 0
MRSA_MR_noLR$LRno <- 0
MRSA_MR_noLR2 <- MRSA_MR_noLR[,c(1:2,4,19,21,22:23)]
MRSA_MR_noLR2$insertion_first_child <- 0
MRSA_MR_noLR2$insertion_last_child <- 0
MRSA_MR_noLR2
MRSA_MR <- rbind(MRSA_MR_noLR2, MRSA_MR_LR2)
dim(MRSA_MR_noLR2)
[1] 530   7
dim(MRSA_MR_LR2)
[1] 812   7
dim(MRSA_MR)
[1] 1342    7
MRSA_MR

there are some MR where we have a suspicion that they are lost LR:

lets remove all that are smaller than 0.5 of MR length

MRSA_MR2 <- subset(MRSA_MR, MRSA_MR$length > 0.5)
MRSA_MR2

there are still some random roots that we have to remove:

unique(MRSA_MR3$root_name)
   [1] "11_S_m4_2"    "11_S_m4_1"    "11_S_m3_1"    "46_S_m16_4"  
   [5] "46_S_m16_1"   "85_S_m32_4"   "85_S_m31_3"   "85_S_m31_1"  
   [9] "85_S_m30_3"   "85_S_m30_1"   "85_S_m29_3"   "m21; 1"      
  [13] "79_C_m40_2"   "79_C_m40_1"   "79_C_m39_4"   "79_C_m39_2"  
  [17] "38_C_m11_3"   "38_C_m11_2"   "38_C_m11_1"   "38_C_m9_2"   
  [21] "43_C_m5_3"    "43_C_m5_2"    "43_C_m5_1"    "13_S_m36_3"  
  [25] "13_S_m36_2"   "13_S_m36_1"   "13_S_m34_3"   "13_S_m33_4"  
  [29] "13_S_m33_2"   "13_S_m33_1"   "55_C_m45_4"   "55_C_m45_1"  
  [33] "55_C_m45_3"   "55_C_m47_1"   "55_C_m46_1"   "67_S_m28_4"  
  [37] "67_S_m28_1"   "67_S_m27_3"   "67_S_m27_4"   "67_S_m26_4"  
  [41] "67_S_m26_1"   "67_S_m25_4"   "67_S_m25_2"   "88_S_m31_3"  
  [45] "88_S_m31_1"   "88_S_m30_3"   "88_S_m30_2"   "88_S_m30_1"  
  [49] "88_S_m29_4"   "88_S_m29_3"   "30_S_m39_4"   "30_S_m39_2"  
  [53] "30_S_m37_2"   "30_S_m37_1"   "3_C_m36_3"    "3_C_m36_2"   
  [57] "3_C_m35_2"    "3_C_m35_1"    "3_C_m34_2"    "3_C_m34_1"   
  [61] "3_C_m33_4"    "15_C_m16_1"   "15_C_m15_1"   "15_C_m13_3"  
  [65] "71_S_m12_4"   "71_S_m12_3"   "71_S_m12_2"   "71_S_m12_1"  
  [69] "71_S_m10_2"   "42_C_m3_3"    "1_S_m24_3"    "1_S_m21_1"   
  [73] "1_S_m22_4"    "58_C_m48_4"   "58_C_m48_2"   "58_C_m47_1"  
  [77] "58_C_m46_1"   "19_C_m12_4"   "19_C_m12_3"   "19_C_m10_2"  
  [81] "92_S_m12_4"   "92_S_m12_3"   "92_S_m12_2"   "92_S_m12_1"  
  [85] "92_S_m11_2"   "92_S_m10_1"   "92_S_m9_3"    "92_S_m9_2"   
  [89] "35_C_m16_2"   "35_C_m14_1"   "62_C_m31_4"   "62_C_m31_2"  
  [93] "62_C_m31_1"   "62_C_m30_3"   "62_C_m30_2"   "62_C_m30_1"  
  [97] "74_C_m30_3"   "74_C_m30_2"   "47_S_m5_2"    "47_S_m5_1"   
 [101] "23_C_m44_4"   "23_C_m43_4"   "23_C_m43_2"   "23_C_m41_4"  
 [105] "28_C_m4_4"    "28_C_m3_3"    "28_C_m3_1"    "28_C_m2_1"   
 [109] "90_C_m31_4"   "90_C_m31_3"   "90_C_m31_2"   "90_C_m31_1"  
 [113] "90_C_m30_4"   "90_C_m30_3"   "90_C_m30_2"   "90_C_m30_1"  
 [117] "76_S_m28_4"   "76_S_m28_2"   "76_S_m28_1"   "76_S_m27_4"  
 [121] "76_S_m26_1"   "76_S_m25_3"   "76_S_m25_2"   "76_S_m25_1"  
 [125] "12_C_m20_1"   "m3; 1"        "m2; 3"        "21_S_m40_1"  
 [129] "4_C_m18_4"    "4_C_m18_1"    "17_S_m23_2"   "17_S_m23_1"  
 [133] "17_S_m22_4"   "24_C_m2_4"    "24_C_m2_1"    "24_C_m1_1"   
 [137] "40_S_m16_2"   "40_S_m16_1"   "40_S_m15_4"   "40_S_m15_2"  
 [141] "40_S_m13_4"   "40_S_m13_3"   "40_S_m13_2"   "73_C_m27_4"  
 [145] "73_C_m27_3"   "73_C_m26_4"   "73_C_m26_3"   "73_C_m26_1"  
 [149] "65_C_m48_4"   "65_C_m48_3"   "65_C_m48_1"   "65_C_m47_4"  
 [153] "65_C_m47_3"   "65_C_m47_1"   "65_C_m46_1"   "32_C_m19_1"  
 [157] "32_C_m18_4"   "32_C_m17_2"   "49_C_m44_4"   "49_C_m44_3"  
 [161] "49_C_m44_2"   "49_C_m44_1"   "49_C_m42_3"   "49_C_m42_2"  
 [165] "49_C_m42_1"   "49_C_m41_4"   "49_C_m41_1"   "8_C_m12_4"   
 [169] "8_C_m12_1"    "8_C_m11_3"    "8_C_m10_1"    "8_C_m9_2"    
 [173] "82_S_m27_4"   "82_S_27_3"    "82_S_m26_3"   "m23; 2"      
 [177] "m23; 1"       "m22; 4"       "52_C_m22_3"   "52_C_m21_4"  
 [181] "m5_4"         "m5_3"         "m5_2"         "m5_1"        
 [185] "44_C_m3_1"    "5_S_m4_4"     "5_S_m4_1"     "5_S_m2_3"    
 [189] "5_S_m2_2"     "51_C_m28_2"   "51_C_m27_4"   "51_C_m27_3"  
 [193] "51_C_m27_1"   "51_C_m25_4"   "51_C_m25_1"   "6_C_m16_2"   
 [197] "6_C_m16_1"    "6_C_m15_4"    "6_C_m15_2"    "6_C_m15_1"   
 [201] "6_C_m14_3"    "6_C_m14_1"    "6_C_m13_1"    "10_C_m7_2"   
 [205] "10_C_m5_3"    "10_C_m5_2"    "10_C_m5_1"    "81_S_m32_2"  
 [209] "81_S_m30_3"   "81_S_m30_2"   "81_S_m29_2"   "39_S_m44_2"  
 [213] "39_S_m44_1"   "39_S_m43_1"   "m42; 4"       "m41; 1"      
 [217] "78_S_m12_3"   "54_S_m47_2"   "54_S_m46_3"   "54_S_m46_2"  
 [221] "26_C_m14_4"   "26_C_m14_3"   "26_C_m14_2"   "26_C_m13_4"  
 [225] "26_C_m13_3"   "26_C_m13_2"   "26_C_m13_1"   "27_C_m7_4"   
 [229] "27_C_m7_3"    "27_C_m6_3"    "27_C_m5_2"    "70_C_m39_4"  
 [233] "70_C_m39_3"   "70_C_m39_1"   "70_C_m37_1"   "66_C_m22_3"  
 [237] "66_C_m22_2"   "66_C_m22_1"   "66_C_m21_1"   "89_C_m28_1"  
 [241] "89_C_m27_3"   "89_C_m27_2"   "89_C_m27_1"   "89_C_m26_4"  
 [245] "89_C_m25_4"   "89_C_m25_3"   "89_C_m25_2"   "89_C_m25_1"  
 [249] "31_C_m18_1"   "93_C_m22_2"   "59_S_m47_1"   "75_S_m28_4"  
 [253] "75_S_m28_3"   "75_S_m28_2"   "75_S_m28_1"   "75_S_m27_4"  
 [257] "75_S_m27_3"   "75_S_m27_2"   "75_S_m27_1"   "75_S_m25_3"  
 [261] "75_S_m25_2"   "m39; 1"       "2_S_m22_1"    "34_S_m44_4"  
 [265] "34_S_m43_3"   "34_S_m42_2"   "34_S_m41_3"   "50_C_m38_3"  
 [269] "3_C_m36_1"    "63_S_m8_1"    "63_S_m7_1"    "68_S_m22_4"  
 [273] "68_S_m22_2"   "29_S_m39_4"   "29_S_m39_2"   "29_S_m39_1"  
 [277] "m38; 1"       "29_S_m37_4"   "29_S_m37_3"   "91_S_m12_4"  
 [281] "91_S_m12_3"   "91_S_m11_4"   "91_S_m11_1"   "91_S_m9_2"   
 [285] "61_C_m28_4"   "61_C_m28_3"   "61_C_m28_1"   "61_C_m27_4"  
 [289] "61_C_m27_3"   "61_C_m27_2"   "61_C_m27_1"   "61_C_m26_3"  
 [293] "61_C_m25_3"   "61_C_m25_2"   "61_C_m25_"    "20_C_m46_3"  
 [297] "13_S_m8_3"    "13_S_m7_1"    "13_S_m6_4"    "13_S_m6_1"   
 [301] "13_S_m5_4"    "13_S_m5_2"    "13_S_m5_1"    "64_S_m16_2"  
 [305] "64_S_m15_1"   "64_S_m13_4"   "64_S_m13_1"   "57_C_m44_3"  
 [309] "57_C_m44_2"   "57_C_m42_1"   "57_C_m41_3"   "57_C_m41_2"  
 [313] "57_C_m41_1"   "33_S_m17_4"   "33_S_m17_3"   "25_S_m8_1"   
 [317] "25_S_m7_4"    "25_S_m7_1"    "25_S_m5_4"    "25_S_m5_3"   
 [321] "25_S_m5_2"    "16_C_m40_2"   "16_C_m40_1"   "16_C_m39_4"  
 [325] "16_C_m39_1"   "16_C_m38_4"   "16_C_m38_3"   "16_C_m38_1"  
 [329] "16_C_m37_4"   "72_S_m18_2"   "72_S_m17_4"   "72_S_m17_3"  
 [333] "72_S_m17_1"   "41_C_m5_4"    "41_C_m5_2"    "41_C_m5_1"   
 [337] "9_S_m4_3"     "48_S_m20_2"   "48_S_m17_3"   "48_S_m17_2"  
 [341] "48_S_m17_1"   "94_C_m30_3"   "94_C_m30_2"   "94_C_m30_1"  
 [345] "94_C_m29_3"   "94_C_m29_1"   "83_C_m36_1"   "83_C_m35_2"  
 [349] "83_C_m35_1"   "83_C_m33_4"   "83_C_m33_2"   "55_C_m44_3"  
 [353] "55_C_m44_2"   "56_C_m44_1"   "55_C_m43_4"   "55_C_m43_3"  
 [357] "55_C_m46_4"   "56_C_m45_3"   "45_S_m44_3"   "45_S_m44_2"  
 [361] "45_S_m44_1"   "45_S_m43_4"   "m17; 3"       "m17; 2"      
 [365] "37_C_m12_4"   "37_C_m12_3"   "37_C_m12_2"   "37_C_m12_1"  
 [369] "37_C_m11_4"   "37_C_m11_2"   "86_S_m31_2"   "86_S_m31_1"  
 [373] "86_S_m30_4"   "86_S_m30_1"   "11_S_m3_4"    "11_S_m3_3"   
 [377] "11_S_m3_2"    "46_S_m16_3"   "46_S_m16_2"   "46_S_m15_4"  
 [381] "46_S_m15_3"   "46_S_m15_2"   "46_S_m15_1"   "46_S_m14_4"  
 [385] "46_S_m14_3"   "46_S_m14_2"   "46_S_m14_1"   "46_S_m13_4"  
 [389] "46_S_m13_3"   "46_S_m13_2"   "46_S_m13_1"   "7_S_m4_4"    
 [393] "7_S_m4_3"     "7_S_m4_2"     "7_S_m4_1"     "7_S_m3_4"    
 [397] "7_S_m3_3"     "7_S_m3_2"     "7_S_m3_1"     "7_S_m2_4"    
 [401] "7_S_m2_3"     "7_S_m2_2"     "7_S_m2_1"     "7_S_m1_1"    
 [405] "85_S_m32_3"   "85_S_m32_2"   "85_S_m32_1"   "85_S_m31_4"  
 [409] "85_S_m31_2"   "85_S_m30_4"   "85_S_m30_2"   "85_S_m29_4"  
 [413] "85_S_m29_2"   "85_S_m29_1"   "m21; 4"       "m21; 3"      
 [417] "m21; 2"       "79_C_m39_3"   "79_C_m39_1"   "79_C_m38_4"  
 [421] "79_C_m38_3"   "79_C_m38_2"   "79_C_m38_1"   "79_C_m37_4"  
 [425] "79_C_m37_3"   "79_C_m37_2"   "79_C_m37_1"   "80_C_m24_2"  
 [429] "80_C_m24_1"   "80_C_m21_4"   "80_C_m21_3"   "80_C_m21_2"  
 [433] "80_C_m21_1"   "38_C_m9_1"    "43_C_m8_4"    "43_C_m8_3"   
 [437] "43_C_m8_2"    "43_C_m8_1"    "13_S_m35_2"   "13_S_m35_1"  
 [441] "13_S_m34_4"   "13_S_m34_2"   "13_S_m34_1"   "55_C_m45_2"  
 [445] "67_S_m28_3"   "67_S_m28_2"   "67_S_m27_2"   "67_S_m27_1"  
 [449] "67_S_m26_3"   "67_S_m26_2"   "67_S_m25_3"   "67_S_m25_1"  
 [453] "88_S_m32_4"   "88_S_m32_3"   "88_S_m32_2"   "88_S_m32_1"  
 [457] "88_S_m31_4"   "88_S_m31_2"   "88_S_m30_4"   "88_S_m29_2"  
 [461] "88_S_m29_1"   "30_S_m39_3"   "30_S_m39_1"   "30_S_m38_4"  
 [465] "30_S_m38_3"   "30_S_m38_2"   "30_S_m38_1"   "30_S_m37_4"  
 [469] "30_S_m37_3"   "3_C_m35_3"    "3_C_m34_4"    "3_C_m34_3"   
 [473] "3_C_m33_3"    "3_C_m33_2"    "3_C_m33_1"    "15_C_m16_4"  
 [477] "15_C_m16_3"   "15_C_m15_4"   "15_C_m15_3"   "15_C_m14_4"  
 [481] "15_C_m14_3"   "15_C_m14_2"   "15_C_m14_1"   "15_C_m13_4"  
 [485] "15_C_m13_2"   "15_C_m13_1"   "71_S_m11_4"   "71_S_m11_3"  
 [489] "71_S_m11_2"   "71_S_m11_"    "71_S_m10_4"   "71_S_m10_1"  
 [493] "71_S_m9_4"    "71_S_m9_3"    "71_S_m9_2"    "71_S_m9_1"   
 [497] "42_C_m4_1"    "42_C_m3_4"    "42_C_m3_2"    "42_C_m3_1"   
 [501] "1_S_m24_4"    "1_S_m24_2"    "1_S_m24_1"    "1_S_m23_4"   
 [505] "1_S_m23_3"    "1_S_m23_2"    "1_S_m23_1"    "1_S_m22_3"   
 [509] "1_S_m22_2"    "1_S_m22_1"    "1_S_m21_4"    "1_S_m21_3"   
 [513] "1_S_m21_2"    "58_C_m48_3"   "58_C_m48_1"   "58_C_m47_2"  
 [517] "58_C_m45_3"   "58_C_m45_1"   "19_C_m12_2"   "19_C_m12_1"  
 [521] "19_C_m11_4"   "19_C_m11_3"   "19_C_m11_2"   "19_C_m11_1"  
 [525] "19_C_m10_4"   "19_C_m10_3"   "19_C_m10_1"   "19_C_m9_4"   
 [529] "19_C_m9_3"    "19_C_m9_2"    "19_C_m9_1"    "92_S_m11_4"  
 [533] "92_S_m11_3"   "92_S_m11_1"   "92_S_m9_4"    "92_S_m9_1"   
 [537] "35_C_m16_1"   "35_C_m14_4"   "35_C_m14_3"   "35_C_m14_2"  
 [541] "62_C_m32_4"   "62_C_m32_3"   "62_C_m32_2"   "62_C_m31_3"  
 [545] "62_C_m30_4"   "62_C_m29_4"   "62_C_m29_3"   "62_C_m29_2"  
 [549] "62_C_m29_1"   "74_C_m32_4"   "74_C_m32_3"   "74_C_m32_2"  
 [553] "74_C_m32_1"   "74_C_m30_4"   "74_C_m30_1"   "74_C_m29_4"  
 [557] "74_C_m29_3"   "74_C_m29_2"   "74_C_m29_1"   "47_S_m8_4"   
 [561] "47_S_m8_3"    "47_S_m8_2"    "47_S_m8_1"    "47_S_m7_4"   
 [565] "47_S_m7_3"    "47_S_m7_2"    "47_S_m7_1"    "47_S_m5_4"   
 [569] "47_S_m5_3"    "23_C_m44_3"   "23_C_m44_1"   "23_C_m43_3"  
 [573] "23_C_m43_1"   "23_C_m42_4"   "23_C_m42_3"   "23_C_m42_2"  
 [577] "23_C_m42_1"   "23_C_m41_3"   "23_C_m41_2"   "23_C_m41_1"  
 [581] "28_C_m4_3"    "28_C_m4_2"    "28_C_m4_1"    "28_C_m3_4"   
 [585] "28_C_m3_2"    "28_C_m2_2"    "90_C_m32_4"   "90_C_m32_3"  
 [589] "90_C_m32_2"   "90_C_m32_1"   "90_C_m29_4"   "90_C_m29_3"  
 [593] "90_C_m29_2"   "90_C_m29_1"   "69_C_m34_4"   "69_C_m34_3"  
 [597] "69_C_m34_2"   "69_C_m34_1"   "76_S_m28_3"   "76_S_m27_3"  
 [601] "76_S_m27_2"   "76_S_m27_1"   "76_S_m26_4"   "76_S_m26_2"  
 [605] "76_S_m25_4"   "12_C_m20_2"   "12_C_m19_4"   "12_C_m19_2"  
 [609] "12_C_m19_1"   "12_C_m18_4"   "12_C_m18_3"   "12_C_m18_2"  
 [613] "12_C_m18_1"   "12_C_m17_4"   "12_C_m17_3"   "12_C_m17_2"  
 [617] "12_C_m17_1"   "m4; 4"        "m4; 3"        "m4; 2"       
 [621] "m4; 1"        "m3; 4"        "m3; 3"        "m3; 2"       
 [625] "m2; 4"        "m2; 2"        "m2; 1"        "m1; 1"       
 [629] "21_S_m40_3"   "21_S_m40_2"   "21_S_m39_4"   "21_S_m39_3"  
 [633] "21_S_m39_2"   "21_S_m39_1"   "21_S_m38_4"   "21_S_m38_3"  
 [637] "21_S_m38_2"   "21_S_m38_1"   "21_S_m37_4"   "21_S_m37_3"  
 [641] "21_S_m37_2"   "21_S_m37_1"   "4_C_m19_4"    "4_C_m19_3"   
 [645] "4_C_m19_2"    "4_C_m19_1"    "4_C_m18_3"    "4_C_m18_2"   
 [649] "4_C_m17_4"    "4_C_m17_3"    "4_C_m17_2"    "4_C_m17_1"   
 [653] "17_S_m24_1"   "17_S_m24_4"   "17_S_m24_3"   "17_S_m24_2"  
 [657] "17_S_m23_4"   "17_S_m23_3"   "17_S_m22_3"   "17_S_m22_2"  
 [661] "17_S_m22_1"   "17_S_m21_4"   "17_S_m21_3"   "17_S_m21_2"  
 [665] "17_S_m21_1"   "24_C_m4_3"    "24_C_m4_2"    "24_C_m4_1"   
 [669] "24_C_m3_4"    "24_C_m3_3"    "24_C_m3_2"    "24_C_m3_1"   
 [673] "24_C_m2_3"    "24_C_m2_2"    "24_C_m1_2"    "40_S_m16_4"  
 [677] "40_S_m16_3"   "40_S_m15_3"   "40_S_m15_1"   "40_S_m14_4"  
 [681] "40_S_m14_3"   "40_S_m14_2"   "40_S_m14_1"   "40_S_m13_1"  
 [685] "73_C_m27_2"   "73_C_m26_2"   "65_C_m48_2"   "65_C_m47_2"  
 [689] "65_C_m46_3"   "65_C_m46_2"   "65_C_m45_4"   "65_C_m45_2"  
 [693] "65_C_m45_1"   "32_C_m19_4"   "32_C_m19_3"   "32_C_m18_3"  
 [697] "32_C_m18_2"   "32_C_m18_1"   "32_C_m17_4"   "32_C_m17_3"  
 [701] "32_C_m17_1"   "49_C_m43_4"   "49_C_m43_3"   "49_C_m43_2"  
 [705] "49_C_m43_1"   "49_C_m42_4"   "49_C_m41_3"   "49_C_m41_2"  
 [709] "8_C_m12_3"    "8_C_m12_2"    "8_C_m11_4"    "8_C_m11_2"   
 [713] "8_C_m11_1"    "8_C_m10_2"    "8_C_m9_4"     "8_C_m9_3"    
 [717] "8_C_m9_1"     "82_S_m27_2"   "82_S_m27_1"   "82_S_m26_4"  
 [721] "82_S_m26_2"   "82_S_m26_1"   "m24; 4"       "m24; 3"      
 [725] "m24; 2"       "m23; 4"       "m23; 3"       "m22; 3"      
 [729] "m22; 2"       "m22; 1"       "52_C_m24_4"   "52_C_m24_3"  
 [733] "52_C_m24_2"   "52_C_m24_1"   "52_C_m23_4"   "52_C_m23_3"  
 [737] "52_C_m23_2"   "52_C_m23_1"   "52_C_m22_4"   "52_C_m22_2"  
 [741] "52_C_m22_1"   "52_C_m21_3"   "52_C_m21_2"   "52_C_m21_1"  
 [745] "m6_2"         "m6_1"         "77_S_m34_4"   "77_S_m34_3"  
 [749] "77_S_m34_2"   "77_S_m34_1"   "44_C_m3_4"    "44_C_m3_3"   
 [753] "44_C_m3_2"    "5_S_m4_3"     "5_S_m4_2"     "5_S_m3_4"    
 [757] "5_S_m3_2"     "5_S_m3_1"     "5_S_m2_1"     "5_S_m3_3"    
 [761] "51_C_m28_3"   "51_C_m28_1"   "51_C_m27_2"   "51_C_m26_4"  
 [765] "51_C_m26_3"   "51_C_m26_2"   "51_C_m26_1"   "51_C_m25_3"  
 [769] "51_C_m25_2"   "6_C_m16_4"    "6_C_m16_3"    "6_C_m15_3"   
 [773] "6_C_m14_4"    "6_C_m14_2"    "6_C_m13_4"    "6_C_m13_3"   
 [777] "6_C_m13_2"    "10_C_m8_4"    "10_C_m8_3"    "10_C_m8_2"   
 [781] "10_C_m8_1"    "10_C_m7_4"    "10_C_m7_3"    "10_C_m7_1"   
 [785] "10_C_m6_1"    "81_S_m32_4"   "81_S_m32_3"   "81_S_m32_1"  
 [789] "81_S_m31_4"   "81_S_m31_3"   "81_S_m31_2"   "81_S_m31_1"  
 [793] "81_S_m30_1"   "81_S_m29_4"   "81_S_m29_3"   "81_S_m29_1"  
 [797] "39_S_m44_4"   "39_S_m44_3"   "39_S_m43_4"   "39_S_m43_3"  
 [801] "39_S_m43_2"   "39_S_m42_3"   "m42; 2"       "m42; 1"      
 [805] "m41; 4"       "m41; 3"       "m41; 2"       "78_S_m12_2"  
 [809] "78_S_m12_1"   "78_S_m11_4"   "78_S_m11_3"   "78_S_m11_2"  
 [813] "78_S_m11_1"   "78_S_m10_4"   "78_S_m10_3"   "78_S_m10_2"  
 [817] "78_S_m10_1"   "78_S_m9_4"    "78_S_m9_3"    "78_S_m9_2"   
 [821] "78_S_m9_1"    "54_S_m48_4"   "54_S_m48_3"   "54_S_m48_2"  
 [825] "54_S_m48_1"   "54_S_m47_4"   "54_S_m47_1"   "54_S_m46_4"  
 [829] "54_S_m46_1"   "54_S_m45_4"   "54_S_m45_3"   "54_S_m45_2"  
 [833] "54_S_m45_1"   "26_C_m14_1"   "27_C_m8_4"    "27_C_m8_3"   
 [837] "27_C_m8_2"    "27_C_m8_1"    "27_C_m7_2"    "27_C_m7_1"   
 [841] "27_C_m6_4"    "27_C_m6_2"    "27_C_m6_1"    "27_C_m5_4"   
 [845] "27_C_m5_1"    "70_C_m39_2\\" "70_C_m38_4"   "70_C_m38_3"  
 [849] "70_C_m38_2"   "70_C_m38_1"   "70_C_m37_4"   "70_C_m37_3"  
 [853] "70_C_m37_2"   "66_C_m24_4\\" "66_C_m24_3"   "66_C_m24_2"  
 [857] "66_C_m24_1"   "66_C_m23_4"   "66_C_m23_3"   "66_C_m23_2"  
 [861] "66_C_m23_1"   "66_C_m21_4"   "66_C_m21_3"   "66_C_m21_2"  
 [865] "89_C_m27_4"   "89_C_m26_3"   "89_C_m26_2"   "89_C_m26_1"  
 [869] "31_C_m19_2"   "31_C_m19_1"   "31_C_m18_4"   "31_C_m18_3"  
 [873] "31_C_m18_2"   "31_C_m17_4"   "31_C_m17_3"   "31_C_m17_2"  
 [877] "31_C_m17_1"   "18_S_m34_4"   "18_S_m34_3"   "18_S_m34_2"  
 [881] "18_S_m34_1"   "93_C_m24_4"   "93_C_m24_3"   "93_C_m24_1"  
 [885] "93_C_m23_4"   "93_C_m23_3"   "93_C_m23_2"   "93_C_m23_1"  
 [889] "93_C_m22_4"   "93_C_m22_3"   "93_C_m22_1"   "93_C_m21_4"  
 [893] "93_C_m21_3"   "93_C_m21_2"   "93_C_m21_1"   "59_S_m48_4"  
 [897] "59_S_m48_3"   "59_S_m48_2"   "59_S_m48_1"   "59_S_m45_4"  
 [901] "59_S_m45_3"   "59_S_m45_2"   "59_S_m45_1"   "75_S_m26_4"  
 [905] "75_S_m26_3"   "75_S_m26_2"   "75_S_m26_1"   "75_S_m25_4"  
 [909] "75_S_m25_1"   "22_S_m39_4"   "m39; 3"       "m39; 2"      
 [913] "22_S_m39_3"   "m38; 3"       "m38; 2"       "m37; 4"      
 [917] "m37; 3"       "m37; 2"       "m37; 1"       "2_S_m24_4"   
 [921] "2_S_m24_3"    "2_S_m24_2"    "2_S_m24_1"    "2_S_m23_3"   
 [925] "2_S_m23_2"    "2_S_m23_1"    "2_S_m22_4"    "2_S_m22_3"   
 [929] "2_S_m22_2"    "2_S_m21_4"    "2_S_m21_3"    "2_S_m21_2"   
 [933] "2_S_m21_1"    "2_S_m23_4"    "34_S_m44_3"   "34_S_m44_2"  
 [937] "34_S_m44_1"   "34_S_m43_4"   "34_S_m43_2"   "34_S_m43_1"  
 [941] "34_S_m42_4"   "34_S_m42_3"   "34_S_m42_1"   "34_S_m41_4"  
 [945] "34_S_m41_2"   "34_S_m41_1"   "50_C_m39_4"   "50_C_m39_3"  
 [949] "50_C_m39_"    "50_C_m39_1"   "50_C_m38_4"   "50_C_m38_2"  
 [953] "50_C_m38_1"   "50_C_m37_4"   "50_C_m37_3"   "50_C_m37_2"  
 [957] "50_C_m37_1"   "3_C_m35_4"    "63_S_m8_4"    "63_S_m8_3"   
 [961] "63_S_m8_2"    "63_S_m7_3"    "63_S_m7_2"    "87_S_m34_4"  
 [965] "87_S_m34_3"   "87_S_m34_2"   "87_S_m34_1"   "68_S_m24_4"  
 [969] "68_S_m24_3"   "68_S_m24_2"   "68_S_m24_1"   "68_S_m22_3"  
 [973] "68_S_m22_1"   "68_S_m21_4"   "68_S_m21_3"   "68_S_m21_2"  
 [977] "68_S_m21_1"   "29_S_m39_3"   "29_S_m38_4"   "29_S_m38_3"  
 [981] "29_S_m38_2"   "29_S_m38_1"   "29_S_m37_2"   "29_S_m37_1"  
 [985] "91_S_m12_2"   "91_S_m12_1"   "91_S_m11_3"   "91_S_m11_2"  
 [989] "91_S_m9_1"    "61_C_m28_2"   "61_C_m26_4"   "61_C_m26_2"  
 [993] "61_C_m26_1"   "61_C_m25_4"   "20_C_m48_4"   "20_C_m48_3"  
 [997] "20_C_m48_2"   "20_C_m48_1"   "20_C_m47_4"   "20_C_m47_3"  
 [ reached getOption("max.print") -- omitted 130 entries ]

Check - everything is fine now - lets move on to calculate remaining traits:

TRS
Error: object 'TRS' not found

OK - now let’s decode the information into genotype, conditions and so on:

# plant number
strsplit(MRSA_MR3$root_name[1], "_")[[1]][4]
[1] "2"

Lets loop the above for all of the data into the entire dataset:

OK there are still some mistakes here that we need to fix

corrected <- read.csv("~/Desktop/corrected.csv")
MRSA_MR4 <- na.omit(MRSA_MR3, MRSA_MR3$Plant.no != NA)
all_data <- rbind(MRSA_MR4, corrected)
all_data
#corrected data for mislabeling of roots and removal of some repeat roots
MRSA_MR3
unique(MRSA_MR4$Genotype)
 [1] "m4"  "m3"  "m16" "m32" "m31" "m30" "m29" "m40" "m39" "m11"
[11] "m9"  "m5"  "m36" "m34" "m33" "m45" "m47" "m46" "m28" "m27"
[21] "m26" "m25" "m37" "m35" "m15" "m13" "m12" "m10" "m24" "m21"
[31] "m22" "m48" "m14" "m44" "m43" "m41" "m2"  "m20" "m18" "m23"
[41] "m1"  "m19" "m17" "m42" "27"  "m7"  "m6"  "m38" "m8" 
unique(MRSA_MR4$Plate.no)
 [1] "11" "46" "85" "79" "38" "43" "13" "55" "67" "88" "30" "3" 
[13] "15" "71" "42" "1"  "58" "19" "92" "35" "62" "74" "47" "23"
[25] "28" "90" "76" "12" "21" "4"  "17" "24" "40" "73" "65" "32"
[37] "49" "8"  "82" "52" "44" "5"  "51" "6"  "10" "81" "39" "78"
[49] "54" "26" "27" "70" "66" "89" "31" "93" "59" "75" "2"  "34"
[61] "50" "63" "68" "29" "91" "61" "20" "64" "57" "33" "25" "16"
[73] "72" "41" "9"  "48" "94" "83" "56" "45" "37" "86" "7"  "80"
[85] "69" "77" "18" "22" "87"
unique(MRSA_MR4$Condition)
[1] "S" "C"
unique(MRSA_MR4$Plant.no)
[1] "2"   "1"   "4"   "3"   "2\\" "4\\"
MRSA_MR4$Plate.no <- gsub("p", "P", MRSA_MR4$Plate.no)
MRSA_MR4$Plate.no <- gsub("Pl", "", MRSA_MR4$Plate.no)
MRSA_MR4$Plate.no <- as.numeric(as.character(MRSA_MR4$Plate.no))
# same for genotype
MRSA_MR4$Genotype <- gsub("m10", "PC_2.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m11", "Sweet_12.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m12", "Sweet_12.3", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m13", "PC_11.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m14", "PC_7.5", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m15", "PC_7.3", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m16", "PC_6.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m17", "PC_1.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m18", "PC_3.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m19", "PC_10.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m20", "PC_11.3", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m21", "PC_4.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m22", "PC_7.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m23", "PC_16.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m24", "PC_10.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m25", "PC_6.3", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m26", "PC_7.4", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m27", "PC_14.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m28", "PC_15.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m29", "Sweet_12.4", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m31", "PC_5.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m32", "PC_16.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m33", "PC_6.4", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m34", "PC_9.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m35", "PC_8.4", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m36", "PC_12.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m37", "PC_8.3", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m38", "PC_4.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m39", "PC_7.6", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m40", "PC_15.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m41", "PC_13.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m42", "PC_2.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m43", "PC_3.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m44", "Sweet_12.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m45", "PC_9.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m46", "PC_14.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m47", "PC_6.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m48", "PC_4.3", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m30", "Col", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m1", "PC_8.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m2", "PC_4.4", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m3", "PC_8.5", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m4", "PC_8.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m5", "PC_5.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m6", "PC_11.1", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m7", "PC_7.2", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m8", "PC_12.3", MRSA_MR4$Genotype)
MRSA_MR4$Genotype <- gsub("m9", "PC_14.3", MRSA_MR4$Genotype)
unique(MRSA_MR4$Genotype)
 [1] "PC_8.1"     "PC_8.5"     "PC_6.2"     "PC_16.1"   
 [5] "PC_5.2"     "Col"        "Sweet_12.4" "PC_15.1"   
 [9] "PC_7.6"     "Sweet_12.2" "PC_14.3"    "PC_5.1"    
[13] "PC_12.1"    "PC_9.1"     "PC_6.4"     "PC_9.2"    
[17] "PC_6.1"     "PC_14.2"    "PC_15.2"    "PC_14.1"   
[21] "PC_7.4"     "PC_6.3"     "PC_8.3"     "PC_8.4"    
[25] "PC_7.3"     "PC_11.2"    "Sweet_12.3" "PC_2.1"    
[29] "PC_10.2"    "PC_4.1"     "PC_7.1"     "PC_4.3"    
[33] "PC_7.5"     "Sweet_12.1" "PC_3.1"     "PC_13.1"   
[37] "PC_4.4"     "PC_11.3"    "PC_3.2"     "PC_16.2"   
[41] "PC_8.2"     "PC_10.1"    "PC_1.1"     "PC_2.2"    
[45] "27"         "PC_7.2"     "PC_11.1"    "PC_4.2"    
[49] "PC_12.3"   

there is still one genotype that I would like to remove:

bye <- c("27")
MRSA_MR5 <- subset(MRSA_MR4, !(MRSA_MR4$Genotype %in% bye))
unique(MRSA_MR5$Genotype)
 [1] "PC_8.1"     "PC_8.5"     "PC_6.2"     "PC_16.1"    "PC_5.2"     "Col"        "Sweet_12.4" "PC_15.1"    "PC_7.6"     "Sweet_12.2"
[11] "PC_14.3"    "PC_5.1"     "PC_12.1"    "PC_9.1"     "PC_6.4"     "PC_9.2"     "PC_6.1"     "PC_14.2"    "PC_15.2"    "PC_14.1"   
[21] "PC_7.4"     "PC_6.3"     "PC_8.3"     "PC_8.4"     "PC_7.3"     "PC_11.2"    "Sweet_12.3" "PC_2.1"     "PC_10.2"    "PC_4.1"    
[31] "PC_7.1"     "PC_4.3"     "PC_7.5"     "Sweet_12.1" "PC_3.1"     "PC_13.1"    "PC_4.4"     "PC_11.3"    "PC_3.2"     "PC_16.2"   
[41] "PC_8.2"     "PC_10.1"    "PC_1.1"     "PC_2.2"     "PC_7.2"     "PC_11.1"    "PC_4.2"     "PC_12.3"   
MRSA_MR5
unique(MRSA_MR5$Condition)
[1] NA
# something wrong with condition - lets re-extract it from the root_name again:
for(i in 1:nrow(MRSA_MR5)){
  MRSA_MR5$Condition[i] <- strsplit(MRSA_MR5$root_name[i], "_")[[1]][2]
}
unique(MRSA_MR5$Condition)
[1] "S" "C"
MRSA_MR5
# same for condition
MRSA_MR5$Condition <- gsub("C", "0", MRSA_MR5$Condition)
MRSA_MR5$Condition <- gsub("S", "75", MRSA_MR5$Condition)
MRSA_MR5$Condition
   [1] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75"
  [26] "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
  [51] "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "0"  "75" "75" "75" "0"  "0"  "0" 
  [76] "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "0" 
 [101] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "0"  "75"
 [126] "0"  "0"  "75" "75" "75" "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [151] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "0"  "0"  "0"  "75"
 [176] "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75"
 [201] "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [226] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [251] "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [276] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0" 
 [301] "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "0"  "0" 
 [326] "0"  "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75"
 [351] "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [376] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [401] "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75"
 [426] "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [451] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [476] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "75" "75" "75"
 [501] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [526] "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [551] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [576] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75"
 [601] "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75"
 [626] "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [651] "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "0" 
 [676] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [701] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [726] "0"  "0"  "75" "75" "75" "75" "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [751] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75"
 [776] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [801] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [826] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [851] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0" 
 [876] "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [901] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0" 
 [926] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [951] "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "0"  "0"  "0"  "0"  "0"  "0" 
 [976] "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "0"  "75" "75" "75" "75" "75" "75" "75" "75" "75" "75" "75"
 [ reached getOption("max.print") -- omitted 113 entries ]
MRSA_MR5

lets clean up

MRSA_MR5$insertion_first_child <- as.numeric(as.character(MRSA_MR5$insertion_first_child))
MRSA_MR5$insertion_last_child <- as.numeric(as.character(MRSA_MR5$insertion_last_child))

MRSA_MR5$Branched <- MRSA_MR5$insertion_last_child - MRSA_MR5$insertion_first_child
MRSA_MR5$Basal <- MRSA_MR5$length - MRSA_MR5$insertion_last_child
MRSA_MR5$Apical <- MRSA_MR5$insertion_first_child
MRSA_MR5
#same for plant
MRSA_MR5$plant <- gsub("p.", "P.", MRSA_MR5$Plant.no)
MRSA_MR5$plant <- gsub("P.", "", MRSA_MR5$Plant.no)
unique(MRSA_MR5$Plate.no)
 [1] 11 46 85 79 38 43 13 55 67 88 30  3 15 71 42  1 58 19 92 35 62 74 47 23 28 90 76 12 21  4 17 24 40 73 65 32 49  8 82 52 44  5 51
[44]  6 10 81 39 78 54 26 27 70 66 89 31 93 59 75  2 34 50 63 68 29 91 61 20 64 57 33 25 16 72 41  9 48 94 83 56 45 37 86  7 80 69 77
[87] 18 22 87
unique(MRSA_MR5$Plant.no)
[1] "2"   "1"   "4"   "3"   "2\\" "4\\"
unique(MRSA_MR5$Condition)
[1] "75" "0" 

Lets Analyze!

install.packages("ggplot2")
Error in install.packages : Updating loaded packages
install.packages("ggpubr")
Error in install.packages : Updating loaded packages
library(ggplot2)
library(ggpubr)
TRS <- ggplot(MRSA_MR5, aes(x = Genotype, y = TRS))
TRS <- TRS + geom_boxplot() + theme(axis.text.x = element_text(angle = 90))
TRS <- TRS + facet_grid(~ Condition)
TRS

TRS <- ggplot(MRSA_MR5, aes(x = Genotype, y = TRS, fill = Genotype))
TRS <- TRS + geom_boxplot() + theme(axis.text.x = element_text(angle = 90)) + rremove("legend")
TRS <- TRS + facet_grid(~ Condition)
TRS

MRSA_MR5 <- MRSA_MR5 %>% 
  rename("length" = "MRL")
Error in rename(., length = "MRL") : could not find function "rename"

MRSA_MR5$Condition <- as.factor(MRSA_MR5$Condition)
library(ggpubr)

bye <- c("PC_11.3", "PC_12.1", "PC_8.2")

MRSA_MR6 <- subset(MRSA_MR5, !(MRSA_MR5$Genotype %in% bye))


LRL_d0_errorplot <- ggerrorplot(MRSA_MR6, y="LRL", x="Genotype", fill="Genotype", ncol = 3, facet.by = "Condition",
                                desc_stat = "mean_sd", add="jitter", add.params = list(color = "darkgray"),
                                xlab="", ylab="Lateral Root Length (cm)", main = "") + theme(axis.text.x = element_text(angle = 90))
LRL_d0_errorplot <- LRL_d0_errorplot + rremove("legend") + stat_compare_means(method = "t.test", ref = "Col", label = "p.signif")
LRL_d0_errorplot



MRSA_C <- subset(MRSA_MR6, MRSA_MR6$Condition == "0")
MRSA_S <- subset(MRSA_MR6, MRSA_MR6$Condition == "75")

TRS_C <- ggerrorplot(MRSA_C, y="TRS", x="Genotype", fill="Genotype", ncol = 3, 
                                desc_stat = "mean_sd", add="jitter", add.params = list(color = "darkgray"),
                                xlab="", ylab="Total Root Size (cm)", main = "") + theme(axis.text.x = element_text(angle = 90))
TRS_C <- TRS_C + rremove("legend") + stat_compare_means(method = "t.test", ref.group = "Col", label = "p.signif")
TRS_C


TRS_S <- ggerrorplot(MRSA_S, y="TRS", x="Genotype", fill="Genotype", ncol = 3, 
                                desc_stat = "mean_sd", add="jitter", add.params = list(color = "darkgray"),
                                xlab="", ylab="Total Root Size (cm)", main = "") + theme(axis.text.x = element_text(angle = 90))
TRS_S <- TRS_S + rremove("legend") + stat_compare_means(method = "t.test", ref.group = "Col", label = "p.signif")
TRS_S

The above is great - but messssyyyyy - lets try to unmess it:

First - lets order the mutants in some kind of logical order:

library(cowplot)
plot_grid(TRS_C, TRS_S, labels = "AUTO", ncol = 1)

pdf("TotalRootSize_Graph.pdf", width = 15, heigh = 15)
plot_grid(TRS_C, TRS_S, labels = "AUTO", ncol = 1)
dev.off()
quartz_off_screen 
                2 

getwd()
[1] "/Users/katiecarson/rootanalysis"
LRL_d0_errorplot <- ggerrorplot(MRSA_MR6, y="LRL", x="Genotype", fill="Genotype", ncol = 3, facet.by = "Condition",
                                desc_stat = "mean_sd", add="jitter", add.params = list(color = "darkgray"),
                                xlab="", ylab="Lateral Root Length (cm)", main = "") + theme(axis.text.x = element_text(angle = 90))
LRL_d0_errorplot <- LRL_d0_errorplot + rremove("legend") + stat_compare_means(method = "t.test", ref = "Col-0", label = "p.signif")
LRL_d0_errorplot
Warning: Computation failed in `stat_compare_means()`.
Caused by error in `if (ref.group == ".all.") ...`:
! missing value where TRUE/FALSE needed
Warning: Computation failed in `stat_compare_means()`.
Caused by error in `if (ref.group == ".all.") ...`:
! missing value where TRUE/FALSE needed

LRL_C <- ggerrorplot(MRSA_C, y="LRL", x="Genotype", fill="Genotype", ncol = 3, 
                                desc_stat = "mean_sd", add="jitter", add.params = list(color = "darkgray"),
                                xlab="", ylab="Lateral Root Length (cm)", main = "") + theme(axis.text.x = element_text(angle = 90))
LRL_C <- LRL_C + rremove("legend") + stat_compare_means(method = "t.test", ref.group = "Col", label = "p.signif")
LRL_C


LRL_S <- ggerrorplot(MRSA_S, y="LRL", x="Genotype", fill="Genotype", ncol = 3, 
                                desc_stat = "mean_sd", add="jitter", add.params = list(color = "darkgray"),
                                xlab="", ylab="Lateral Root Length (cm)", main = "") + theme(axis.text.x = element_text(angle = 90))
LRL_S <- LRL_S + rremove("legend") + stat_compare_means(method = "t.test", ref.group = "Col", label = "p.signif")
LRL_S

library(cowplot)
plot_grid(LRL_C, LRL_S, labels = "AUTO", ncol = 1)

pdf("LateralRootLength_Graph.pdf", width = 15, heigh = 15)
plot_grid(LRL_C, LRL_S, labels = "AUTO", ncol = 1)
dev.off()
quartz_off_screen 
                2 

library(cowplot)
plot_grid(MRL_C, MRL_S, labels = "AUTO", ncol = 1)

pdf("MainRootLength_Graph.pdf", width = 15, heigh = 15)
plot_grid(MRL_C, MRL_S, labels = "AUTO", ncol = 1)
dev.off()
quartz_off_screen 
                2 

library(cowplot)
plot_grid(LRno_C, LRno_S, labels = "AUTO", ncol = 1)

pdf("LateralRootNumber_Graph.pdf", width = 15, heigh = 15)
plot_grid(LRno_C, LRno_S, labels = "AUTO", ncol = 1)
dev.off()
quartz_off_screen 
                2 

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkocmVhZHIpCk1SU0EgPC0gcmVhZF9jc3YoIn4vRGVza3RvcC9NUlNBLmNzdiIpCk1SU0EKYGBgCmBgYHtyfQpNUlNBJHJvb3Rfb3JkZXIKCk1SU0FfTVIgPC0gc3Vic2V0KE1SU0EsIE1SU0Ekcm9vdF9vcmRlciA9PSAwKQpNUlNBX0xSIDwtIHN1YnNldChNUlNBLCBNUlNBJHJvb3Rfb3JkZXIgIT0gMCkKZGltKE1SU0FfTVIpCmRpbShNUlNBX0xSKQpgYGAKYGBge3J9CiNzdWJzZXR0aW5nIE1SIGJldHdlZW4gb25lcyB3aXRoIGxhdGVyYWwgcm9vdHMgYW5kIHdpdGhvdXQKTVJTQV9NUl9ub0xSIDwtIHN1YnNldChNUlNBX01SLCBNUlNBX01SJG5fY2hpbGQgPT0gMCkKTVJTQV9NUl9MUiA8LSBzdWJzZXQoTVJTQV9NUiwgTVJTQV9NUiRuX2NoaWxkICE9IDApCmBgYAoKYGBge3J9Ck1SU0FfTVJfTFIkcm9vdFsxXQpgYGAKYGBge3J9Ck1SU0FfTFIkcGFyZW50WzFdCmBgYApgYGB7cn0KTVJTQV9MUiRwYXJlbnRbMl0KYGBgCmBgYHtyfQpNUlNBX0xSJHBhcmVudCAlaW4lIE1SU0FfTVJfTFIkcm9vdApNUlNBX0xSCgp0ZW1wIDwtIHN1YnNldChNUlNBX0xSLCBNUlNBX0xSJHBhcmVudCA9PSBNUlNBX01SX0xSJHJvb3RbMV0pCnRlbXAKYGBgCmBgYHtyfQpMUkwgPC0gc3VtKHRlbXAkbGVuZ3RoKQp0ZW1wJExSbm8gPC0gMQpzdW0odGVtcCRMUm5vKQpgYGAKYGBge3J9CkxSTCA8LSBzdW0odGVtcCRsZW5ndGgpCnRlbXAkTFJubyA8LSAxCnN1bSh0ZW1wJExSbm8pCk1SU0EKYGBgCmBgYHtyfQpMUkwKYGBgCmBgYHtyfQpkaW0odGVtcCkKYGBgCmBgYHtyfQpMUm5vIDwtIGRpbSh0ZW1wKVsxXQpMUm5vCmBgYApgYGB7cn0KTVJTQV9NUl9MUiRMUkwgPC0gMApNUlNBX01SX0xSJExSbm8gPC0gMApNUlNBX01SX0xSCmBgYApgYGB7cn0KTVJTQV9NUl9MUiRMUkxbMV0gPC0gTFJMCk1SU0FfTVJfTFIkTFJub1sxXSA8LSBMUm5vCk1SU0FfTVJfTFIKYGBgCmBgYHtyfQpmb3IoaSBpbiAxOm5yb3coTVJTQV9NUl9MUikpewogIHRlbXAgPC0gc3Vic2V0KE1SU0FfTFIsIE1SU0FfTFIkcGFyZW50ID09IE1SU0FfTVJfTFIkcm9vdFtpXSkKICBNUlNBX01SX0xSJExSTFtpXSAgPC0gc3VtKHRlbXAkbGVuZ3RoKQogIE1SU0FfTVJfTFIkTFJub1tpXSAgPC0gZGltKHRlbXApWzFdCn0KCk1SU0FfTVJfTFIKYGBgCmBgYHtyfQpjb2xuYW1lcyhNUlNBX01SX0xSKQpgYGAKYGBge3J9Ck1SU0FfTVJfTFIyIDwtIE1SU0FfTVJfTFJbLGMoMToyLDQsMTksMjEsMjI6MjMpXQpNUlNBX01SX0xSMgpgYGAKYGBge3J9Ck1SU0FfTVJfbm9MUiRMUkwgPC0gMApNUlNBX01SX25vTFIkTFJubyA8LSAwCk1SU0FfTVJfbm9MUjIgPC0gTVJTQV9NUl9ub0xSWyxjKDE6Miw0LDE5LDIxLDIyOjIzKV0KTVJTQV9NUl9ub0xSMiRpbnNlcnRpb25fZmlyc3RfY2hpbGQgPC0gMApNUlNBX01SX25vTFIyJGluc2VydGlvbl9sYXN0X2NoaWxkIDwtIDAKTVJTQV9NUl9ub0xSMgpgYGAKYGBge3J9Ck1SU0FfTVIgPC0gcmJpbmQoTVJTQV9NUl9ub0xSMiwgTVJTQV9NUl9MUjIpCmRpbShNUlNBX01SX25vTFIyKQpgYGAKCmBgYHtyfQpkaW0oTVJTQV9NUl9MUjIpCmBgYApgYGB7cn0KZGltKE1SU0FfTVIpCmBgYApgYGB7cn0KTVJTQV9NUgpgYGAKdGhlcmUgYXJlIHNvbWUgTVIgd2hlcmUgd2UgaGF2ZSBhIHN1c3BpY2lvbiB0aGF0IHRoZXkgYXJlIGxvc3QgTFI6CgpsZXRzIHJlbW92ZSBhbGwgdGhhdCBhcmUgc21hbGxlciB0aGFuIDAuNSBvZiBNUiBsZW5ndGgKCmBgYHtyfQpNUlNBX01SMiA8LSBzdWJzZXQoTVJTQV9NUiwgTVJTQV9NUiRsZW5ndGggPiAwLjUpCk1SU0FfTVIyCmBgYAoKdGhlcmUgYXJlIHN0aWxsIHNvbWUgcmFuZG9tIHJvb3RzIHRoYXQgd2UgaGF2ZSB0byByZW1vdmU6CgpgYGB7cn0KTVJTQV9NUjMgPC0gTVJTQV9NUjJbIWdyZXBsKCJyb290XyIsIE1SU0FfTVIyJHJvb3RfbmFtZSksXQpNUlNBX01SMwpgYGAKYGBge3J9CnVuaXF1ZShNUlNBX01SMyRyb290X25hbWUpCmBgYAoKQ2hlY2sgLSBldmVyeXRoaW5nIGlzIGZpbmUgbm93IC0gbGV0cyBtb3ZlIG9uIHRvIGNhbGN1bGF0ZSByZW1haW5pbmcgdHJhaXRzOgoKYGBge3J9Ck1SU0FfTVIzJFRSUyA8LSBNUlNBX01SMyRsZW5ndGggKyBNUlNBX01SMyRMUkwKI01SU0FfTVIzJGFMUkwgPC0gTVJTQV9NUjMkTFJMIC8gTVJTQV9NUjMkTFJubwpNUlNBX01SMwpgYGAKCk9LIC0gbm93IGxldCdzIGRlY29kZSB0aGUgaW5mb3JtYXRpb24gaW50byBnZW5vdHlwZSwgY29uZGl0aW9ucyBhbmQgc28gb246CgpgYGB7cn0KI1BsYXRlIG51bWJlcgpzdHJzcGxpdChNUlNBX01SMyRyb290X25hbWVbMV0sICJfIilbWzFdXVsxXQojIGNvbmRpdGlvbgpzdHJzcGxpdChNUlNBX01SMyRyb290X25hbWVbMV0sICJfIilbWzFdXVsyXQojIGdlbm90eXBlCnN0cnNwbGl0KE1SU0FfTVIzJHJvb3RfbmFtZVsxXSwgIl8iKVtbMV1dWzNdCiMgcGxhbnQgbnVtYmVyCnN0cnNwbGl0KE1SU0FfTVIzJHJvb3RfbmFtZVsxXSwgIl8iKVtbMV1dWzRdCgpgYGAKTGV0cyBsb29wIHRoZSBhYm92ZSBmb3IgYWxsIG9mIHRoZSBkYXRhIGludG8gdGhlIGVudGlyZSBkYXRhc2V0OgoKYGBge3J9Ck1SU0FfTVIzJFBsYXRlLm5vIDwtICJub25lIgpNUlNBX01SMyRDb25kaXRpb24gPC0gIm5vbmUiCk1SU0FfTVIzJEdlbm90eXBlIDwtICJub25lIgpNUlNBX01SMyRQbGFudC5ubyA8LSAibm9uZSIKCmZvcihpIGluIDE6bnJvdyhNUlNBX01SMykpewogIE1SU0FfTVIzJFBsYXRlLm5vW2ldIDwtIHN0cnNwbGl0KE1SU0FfTVIzJHJvb3RfbmFtZVtpXSwgIl8iKVtbMV1dWzFdCiAgTVJTQV9NUjMkQ29uZGl0aW9uW2ldIDwtIHN0cnNwbGl0KE1SU0FfTVIzJHJvb3RfbmFtZVtpXSwgIl8iKVtbMV1dWzJdCiAgTVJTQV9NUjMkR2Vub3R5cGVbaV0gPC0gc3Ryc3BsaXQoTVJTQV9NUjMkcm9vdF9uYW1lW2ldLCAiXyIpW1sxXV1bM10KICBNUlNBX01SMyRQbGFudC5ub1tpXSA8LSBzdHJzcGxpdChNUlNBX01SMyRyb290X25hbWVbaV0sICJfIilbWzFdXVs0XQp9CgpNUlNBX01SMwpgYGAKCk9LIHRoZXJlIGFyZSBzdGlsbCBzb21lIG1pc3Rha2VzIGhlcmUgdGhhdCB3ZSBuZWVkIHRvIGZpeAoKYGBge3J9Cm9lcHNpZSA8LSBzdWJzZXQoTVJTQV9NUjMsICFjb21wbGV0ZS5jYXNlcyhNUlNBX01SMykpCm9lcHNpZQpgYGAKCmBgYHtyfQpvZXBzaWUgPC0gc3Vic2V0KG9lcHNpZSwgb2Vwc2llJGltYWdlICE9ICJleGFtcGxlcG9zdGVyLnJzbWwiKQpvZXBzaWUKYGBgCgpgYGB7cn0Kd3JpdGUuY3N2KG9lcHNpZSwgInRvX2JlX2NvcnJlY3RlZC5jc3YiLCByb3cubmFtZXMgPSBGKQpgYGAKCmBgYHtyfQpjb3JyZWN0ZWQgPC0gcmVhZC5jc3YoIn4vRGVza3RvcC9jb3JyZWN0ZWQuY3N2IikKTVJTQV9NUjQgPC0gbmEub21pdChNUlNBX01SMywgTVJTQV9NUjMkUGxhbnQubm8gIT0gTkEpCmFsbF9kYXRhIDwtIHJiaW5kKE1SU0FfTVI0LCBjb3JyZWN0ZWQpCmFsbF9kYXRhCiNjb3JyZWN0ZWQgZGF0YSBmb3IgbWlzbGFiZWxpbmcgb2Ygcm9vdHMgYW5kIHJlbW92YWwgb2Ygc29tZSByZXBlYXQgcm9vdHMKTVJTQV9NUjMKYGBgCmBgYHtyfQp3cml0ZS5jc3YoTVJTQV9NUjMsICJNUlNBX01SMy5jc3YiLCByb3cubmFtZXM9RikKYGBgCgpgYGB7cn0KdW5pcXVlKE1SU0FfTVI0JEdlbm90eXBlKQpgYGAKYGBge3J9CnVuaXF1ZShNUlNBX01SNCRQbGF0ZS5ubykKYGBgCmBgYHtyfQp1bmlxdWUoTVJTQV9NUjQkQ29uZGl0aW9uKQpgYGAKYGBge3J9CnVuaXF1ZShNUlNBX01SNCRQbGFudC5ubykKYGBgCmBgYHtyfQpNUlNBX01SNCRQbGF0ZS5ubyA8LSBnc3ViKCJwIiwgIlAiLCBNUlNBX01SNCRQbGF0ZS5ubykKTVJTQV9NUjQkUGxhdGUubm8gPC0gZ3N1YigiUGwiLCAiIiwgTVJTQV9NUjQkUGxhdGUubm8pCk1SU0FfTVI0JFBsYXRlLm5vIDwtIGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKE1SU0FfTVI0JFBsYXRlLm5vKSkKYGBgCgoKYGBge3J9CiMgc2FtZSBmb3IgZ2Vub3R5cGUKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTEwIiwgIlBDXzIuMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMTEiLCAiU3dlZXRfMTIuMiIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMTIiLCAiU3dlZXRfMTIuMyIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMTMiLCAiUENfMTEuMiIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMTQiLCAiUENfNy41IiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0xNSIsICJQQ183LjMiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTE2IiwgIlBDXzYuMiIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMTciLCAiUENfMS4xIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0xOCIsICJQQ18zLjIiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTE5IiwgIlBDXzEwLjEiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTIwIiwgIlBDXzExLjMiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTIxIiwgIlBDXzQuMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMjIiLCAiUENfNy4xIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0yMyIsICJQQ18xNi4yIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0yNCIsICJQQ18xMC4yIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0yNSIsICJQQ182LjMiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTI2IiwgIlBDXzcuNCIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMjciLCAiUENfMTQuMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMjgiLCAiUENfMTUuMiIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMjkiLCAiU3dlZXRfMTIuNCIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMzEiLCAiUENfNS4yIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0zMiIsICJQQ18xNi4xIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0zMyIsICJQQ182LjQiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTM0IiwgIlBDXzkuMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMzUiLCAiUENfOC40IiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0zNiIsICJQQ18xMi4xIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0zNyIsICJQQ184LjMiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTM4IiwgIlBDXzQuMiIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMzkiLCAiUENfNy42IiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm00MCIsICJQQ18xNS4xIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm00MSIsICJQQ18xMy4xIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm00MiIsICJQQ18yLjIiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTQzIiwgIlBDXzMuMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtNDQiLCAiU3dlZXRfMTIuMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtNDUiLCAiUENfOS4yIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm00NiIsICJQQ18xNC4yIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm00NyIsICJQQ182LjEiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTQ4IiwgIlBDXzQuMyIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMzAiLCAiQ29sIiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm0xIiwgIlBDXzguMiIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtMiIsICJQQ180LjQiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTMiLCAiUENfOC41IiwgTVJTQV9NUjQkR2Vub3R5cGUpCk1SU0FfTVI0JEdlbm90eXBlIDwtIGdzdWIoIm00IiwgIlBDXzguMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtNSIsICJQQ181LjEiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTYiLCAiUENfMTEuMSIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtNyIsICJQQ183LjIiLCBNUlNBX01SNCRHZW5vdHlwZSkKTVJTQV9NUjQkR2Vub3R5cGUgPC0gZ3N1YigibTgiLCAiUENfMTIuMyIsIE1SU0FfTVI0JEdlbm90eXBlKQpNUlNBX01SNCRHZW5vdHlwZSA8LSBnc3ViKCJtOSIsICJQQ18xNC4zIiwgTVJTQV9NUjQkR2Vub3R5cGUpCnVuaXF1ZShNUlNBX01SNCRHZW5vdHlwZSkKYGBgCnRoZXJlIGlzIHN0aWxsIG9uZSBnZW5vdHlwZSB0aGF0IEkgd291bGQgbGlrZSB0byByZW1vdmU6CgpgYGB7cn0KYnllIDwtIGMoIjI3IikKTVJTQV9NUjUgPC0gc3Vic2V0KE1SU0FfTVI0LCAhKE1SU0FfTVI0JEdlbm90eXBlICVpbiUgYnllKSkKdW5pcXVlKE1SU0FfTVI1JEdlbm90eXBlKQoKYGBgCgpgYGB7cn0KTVJTQV9NUjUKdW5pcXVlKE1SU0FfTVI1JENvbmRpdGlvbikKIyBzb21ldGhpbmcgd3Jvbmcgd2l0aCBjb25kaXRpb24gLSBsZXRzIHJlLWV4dHJhY3QgaXQgZnJvbSB0aGUgcm9vdF9uYW1lIGFnYWluOgpmb3IoaSBpbiAxOm5yb3coTVJTQV9NUjUpKXsKICBNUlNBX01SNSRDb25kaXRpb25baV0gPC0gc3Ryc3BsaXQoTVJTQV9NUjUkcm9vdF9uYW1lW2ldLCAiXyIpW1sxXV1bMl0KfQp1bmlxdWUoTVJTQV9NUjUkQ29uZGl0aW9uKQpNUlNBX01SNQpgYGAKYGBge3J9CiMgc2FtZSBmb3IgY29uZGl0aW9uCk1SU0FfTVI1JENvbmRpdGlvbiA8LSBnc3ViKCJDIiwgIjAiLCBNUlNBX01SNSRDb25kaXRpb24pCk1SU0FfTVI1JENvbmRpdGlvbiA8LSBnc3ViKCJTIiwgIjc1IiwgTVJTQV9NUjUkQ29uZGl0aW9uKQpNUlNBX01SNSRDb25kaXRpb24KYGBgCmBgYHtyfQpNUlNBX01SNQpgYGAKbGV0cyBjbGVhbiB1cApgYGB7cn0KTVJTQV9NUjUkaW5zZXJ0aW9uX2ZpcnN0X2NoaWxkIDwtIGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKE1SU0FfTVI1JGluc2VydGlvbl9maXJzdF9jaGlsZCkpCk1SU0FfTVI1JGluc2VydGlvbl9sYXN0X2NoaWxkIDwtIGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKE1SU0FfTVI1JGluc2VydGlvbl9sYXN0X2NoaWxkKSkKCk1SU0FfTVI1JEJyYW5jaGVkIDwtIE1SU0FfTVI1JGluc2VydGlvbl9sYXN0X2NoaWxkIC0gTVJTQV9NUjUkaW5zZXJ0aW9uX2ZpcnN0X2NoaWxkCk1SU0FfTVI1JEJhc2FsIDwtIE1SU0FfTVI1JGxlbmd0aCAtIE1SU0FfTVI1JGluc2VydGlvbl9sYXN0X2NoaWxkCk1SU0FfTVI1JEFwaWNhbCA8LSBNUlNBX01SNSRpbnNlcnRpb25fZmlyc3RfY2hpbGQKTVJTQV9NUjUKYGBgCgoKYGBge3J9CiNzYW1lIGZvciBwbGFudApNUlNBX01SNSRwbGFudCA8LSBnc3ViKCJwLiIsICJQLiIsIE1SU0FfTVI1JFBsYW50Lm5vKQpNUlNBX01SNSRwbGFudCA8LSBnc3ViKCJQLiIsICIiLCBNUlNBX01SNSRQbGFudC5ubykKYGBgCgoKYGBge3J9CnVuaXF1ZShNUlNBX01SNSRQbGF0ZS5ubykKYGBgCmBgYHtyfQp1bmlxdWUoTVJTQV9NUjUkUGxhbnQubm8pCmBgYAoKYGBge3J9CnVuaXF1ZShNUlNBX01SNSRDb25kaXRpb24pCmBgYAoKCkxldHMgQW5hbHl6ZSEKYGBge3J9Cmluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQppbnN0YWxsLnBhY2thZ2VzKCJnZ3B1YnIiKQoKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGdncHVicikKVFJTIDwtIGdncGxvdChNUlNBX01SNSwgYWVzKHggPSBHZW5vdHlwZSwgeSA9IFRSUykpClRSUyA8LSBUUlMgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpUUlMgPC0gVFJTICsgZmFjZXRfZ3JpZCh+IENvbmRpdGlvbikKVFJTCmBgYApgYGB7cn0KVFJTIDwtIGdncGxvdChNUlNBX01SNSwgYWVzKHggPSBHZW5vdHlwZSwgeSA9IFRSUywgZmlsbCA9IEdlbm90eXBlKSkKVFJTIDwtIFRSUyArIGdlb21fYm94cGxvdCgpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpICsgcnJlbW92ZSgibGVnZW5kIikKVFJTIDwtIFRSUyArIGZhY2V0X2dyaWQofiBDb25kaXRpb24pClRSUwpgYGAKCmBgYHtyfQpjb2xuYW1lcyhNUlNBX01SNSlbM10gPC0gIk1STCIKCmBgYAoKCmBgYHtyfQpNUkxfMCA8LSBnZ3Bsb3QoTVJTQV9NUjUsIGFlcyh4ID0gR2Vub3R5cGUsIHkgPSBNUkwsIGZpbGwgPSBHZW5vdHlwZSkpCk1STF8wIDwtIE1STF8wICsgZ2VvbV9ib3hwbG90KCkgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkgKyBycmVtb3ZlKCJsZWdlbmQiKQpNUkxfMCA8LSBNUkxfMCArIGZhY2V0X2dyaWQofiBDb25kaXRpb24pCk1STF8wCmBgYApgYGB7cn0KTFJMXzQgPC0gZ2dwbG90KE1SU0FfTVI1LCBhZXMoeCA9IEdlbm90eXBlLCB5ID0gTFJMLCBmaWxsID0gR2Vub3R5cGUpKQpMUkxfNCA8LSBMUkxfNCArIGdlb21fYm94cGxvdCgpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpICsgcnJlbW92ZSgibGVnZW5kIikKTFJMXzQgPC0gTFJMXzQgKyBmYWNldF9ncmlkKH4gQ29uZGl0aW9uKQpMUkxfNApgYGAKYGBge3J9CkFwaWNhbF80IDwtIGdncGxvdChNUlNBX01SNSwgYWVzKHggPSBHZW5vdHlwZSwgeSA9IEFwaWNhbCwgZmlsbCA9IEdlbm90eXBlKSkKQXBpY2FsXzQgPC0gQXBpY2FsXzQgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKSArIHJyZW1vdmUoImxlZ2VuZCIpCkFwaWNhbF80IDwtIEFwaWNhbF80ICsgZmFjZXRfZ3JpZCh+IENvbmRpdGlvbikKQXBpY2FsXzQKYGBgCmBgYHtyfQpCYXNhbF80IDwtIGdncGxvdChNUlNBX01SNSwgYWVzKHggPSBHZW5vdHlwZSwgeSA9IEJhc2FsLCBmaWxsID0gR2Vub3R5cGUpKQpCYXNhbF80IDwtIEJhc2FsXzQgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKSArIHJyZW1vdmUoImxlZ2VuZCIpCkJhc2FsXzQgPC0gQmFzYWxfNCArIGZhY2V0X2dyaWQofiBDb25kaXRpb24pCkJhc2FsXzQKYGBgCmBgYHtyfQpCcmFuY2hlZF80IDwtIGdncGxvdChNUlNBX01SNSwgYWVzKHggPSBHZW5vdHlwZSwgeSA9IEJyYW5jaGVkLCBmaWxsID0gR2Vub3R5cGUpKQpCcmFuY2hlZF80IDwtIEJyYW5jaGVkXzQgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKSArIHJyZW1vdmUoImxlZ2VuZCIpCkJyYW5jaGVkXzQgPC0gQnJhbmNoZWRfNCArIGZhY2V0X2dyaWQofiBDb25kaXRpb24pCkJyYW5jaGVkXzQKYGBgCmBgYHtyfQpNUlNBX01SNSRDb25kaXRpb24gPC0gYXMuZmFjdG9yKE1SU0FfTVI1JENvbmRpdGlvbikKbGlicmFyeShnZ3B1YnIpCgpieWUgPC0gYygiUENfMTEuMyIsICJQQ18xMi4xIiwgIlBDXzguMiIpCgpNUlNBX01SNiA8LSBzdWJzZXQoTVJTQV9NUjUsICEoTVJTQV9NUjUkR2Vub3R5cGUgJWluJSBieWUpKQoKCkxSTF9kMF9lcnJvcnBsb3QgPC0gZ2dlcnJvcnBsb3QoTVJTQV9NUjYsIHk9IkxSTCIsIHg9Ikdlbm90eXBlIiwgZmlsbD0iR2Vub3R5cGUiLCBuY29sID0gMywgZmFjZXQuYnkgPSAiQ29uZGl0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJMYXRlcmFsIFJvb3QgTGVuZ3RoIChjbSkiLCBtYWluID0gIiIpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpCkxSTF9kMF9lcnJvcnBsb3QgPC0gTFJMX2QwX2Vycm9ycGxvdCArIHJyZW1vdmUoImxlZ2VuZCIpICsgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCByZWYgPSAiQ29sIiwgbGFiZWwgPSAicC5zaWduaWYiKQpMUkxfZDBfZXJyb3JwbG90CgpgYGAKCgpgYGB7cn0KCgpNUlNBX0MgPC0gc3Vic2V0KE1SU0FfTVI2LCBNUlNBX01SNiRDb25kaXRpb24gPT0gIjAiKQpNUlNBX1MgPC0gc3Vic2V0KE1SU0FfTVI2LCBNUlNBX01SNiRDb25kaXRpb24gPT0gIjc1IikKClRSU19DIDwtIGdnZXJyb3JwbG90KE1SU0FfQywgeT0iVFJTIiwgeD0iR2Vub3R5cGUiLCBmaWxsPSJHZW5vdHlwZSIsIG5jb2wgPSAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJUb3RhbCBSb290IFNpemUgKGNtKSIsIG1haW4gPSAiIikgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkKVFJTX0MgPC0gVFJTX0MgKyBycmVtb3ZlKCJsZWdlbmQiKSArIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcmVmLmdyb3VwID0gIkNvbCIsIGxhYmVsID0gInAuc2lnbmlmIikKVFJTX0MKClRSU19TIDwtIGdnZXJyb3JwbG90KE1SU0FfUywgeT0iVFJTIiwgeD0iR2Vub3R5cGUiLCBmaWxsPSJHZW5vdHlwZSIsIG5jb2wgPSAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJUb3RhbCBSb290IFNpemUgKGNtKSIsIG1haW4gPSAiIikgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkKVFJTX1MgPC0gVFJTX1MgKyBycmVtb3ZlKCJsZWdlbmQiKSArIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcmVmLmdyb3VwID0gIkNvbCIsIGxhYmVsID0gInAuc2lnbmlmIikKVFJTX1MKYGBgCgpUaGUgYWJvdmUgaXMgZ3JlYXQgLSBidXQgbWVzc3NzeXl5eXkgLSBsZXRzIHRyeSB0byB1bm1lc3MgaXQ6CgpGaXJzdCAtIGxldHMgb3JkZXIgdGhlIG11dGFudHMgaW4gc29tZSBraW5kIG9mIGxvZ2ljYWwgb3JkZXI6CgpgYGB7cn0KCiMgVG8gb3JkZXIgZ2Vub3R5cGVzOgoKTVJTQV9DJEdlbm90eXBlIDwtIGZhY3RvcihNUlNBX0MkR2Vub3R5cGUsIGxldmVscyA9IGMoIkNvbCIsICJQQ18xLjEiLCAiUENfMi4xIiwgIlBDXzIuMiIsICJQQ18zLjEiLCAiUENfMy4yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQ180LjEiLCAiUENfNC4yIiwgIlBDXzQuMyIsICJQQ180LjQiLCAiUENfNS4xIiwgIlBDXzUuMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUENfNi4xIiwgIlBDXzYuMiIsICJQQ182LjMiLCAiUENfNi40IiwgIlBDXzcuMSIsICJQQ183LjIiLCAiUENfNy4zIiwgIlBDXzcuNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBDXzcuNSIsICJQQ183LjYiLCJQQ184LjEiLCAiUENfOC4yIiwgIlBDXzguMyIsICJQQ184LjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQ184LjUiLCAiUENfOS4xIiwgIlBDXzkuMiIsICJQQ18xMC4xIiwgIlBDXzEwLjIiLCAiUENfMTEuMSIsICJQQ18xMS4yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUENfMTIuMyIsICJQQ18xMy4xIiwgIlBDXzE0LjEiLCAiUENfMTQuMiIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQ18xNC4zIiwgIlBDXzE1LjEiLCAiUENfMTUuMiIsICJQQ18xNi4xIiwgIlBDXzE2LjIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2VldF8xMi4xIiwgIlN3ZWV0XzEyLjIiLCAiU3dlZXRfMTIuMyIsICJTd2VldF8xMi40IikpCgpNUlNBX1MkR2Vub3R5cGUgPC0gZmFjdG9yKE1SU0FfUyRHZW5vdHlwZSwgbGV2ZWxzID0gYygiQ29sIiwgIlBDXzEuMSIsICJQQ18yLjEiLCAiUENfMi4yIiwgIlBDXzMuMSIsICJQQ18zLjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBDXzQuMSIsICJQQ180LjIiLCAiUENfNC4zIiwgIlBDXzQuNCIsICJQQ181LjEiLCAiUENfNS4yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQQ182LjEiLCAiUENfNi4yIiwgIlBDXzYuMyIsICJQQ182LjQiLCAiUENfNy4xIiwgIlBDXzcuMiIsICJQQ183LjMiLCAiUENfNy40IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUENfNy41IiwgIlBDXzcuNiIsIlBDXzguMSIsICJQQ184LjIiLCAiUENfOC4zIiwgIlBDXzguNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBDXzguNSIsICJQQ185LjEiLCAiUENfOS4yIiwgIlBDXzEwLjEiLCAiUENfMTAuMiIsICJQQ18xMS4xIiwgIlBDXzExLjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBDXzEyLjMiLCAiUENfMTMuMSIsICJQQ18xNC4xIiwgIlBDXzE0LjIiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUENfMTQuMyIsICJQQ18xNS4xIiwgIlBDXzE1LjIiLCAiUENfMTYuMSIsICJQQ18xNi4yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3dlZXRfMTIuMSIsICJTd2VldF8xMi4yIiwgIlN3ZWV0XzEyLjMiLCAiU3dlZXRfMTIuNCIpKQoKCgpUUlNfQyA8LSBnZ2Vycm9ycGxvdChNUlNBX0MsIHk9IlRSUyIsIHg9Ikdlbm90eXBlIiwgZmlsbD0iR2Vub3R5cGUiLCBuY29sID0gMywgZmFjZXQuYnkgPSAiQ29uZGl0aW9uIiwgIGNvbG9yID0gIkdlbm90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJUb3RhbCBSb290IFNpemUgKGNtKSIsIG1haW4gPSAiIikgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkKVFJTX0MgPC0gVFJTX0MgKyBycmVtb3ZlKCJsZWdlbmQiKSArIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcmVmLmdyb3VwID0gIkNvbCIsIGxhYmVsID0gInAuc2lnbmlmIikKVFJTX0MgPC0gVFJTX0MgKyBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoIm1pZG5pZ2h0Ymx1ZSIsICAiZGFya2dyZWVuIiwgIm9yYW5nZSIsICJvcmFuZ2UiLCAiZmlyZWJyaWNrIiwgImZpcmVicmljayIsICJwbHVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbHVtIiwgInBsdW0iLCAicGx1bSIsInNsYXRlYmx1ZSIsInNsYXRlYmx1ZSIsIm1hcm9vbjMiLCJtYXJvb24zIiwibWFyb29uMyIsIm1hcm9vbjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJob3RwaW5rIiwiaG90cGluayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbGF0ZWdyYXkzIiwgInNsYXRlZ3JheTMiLCJyb3lhbGJsdWU0IiwgInJveWFsYmx1ZTQiLCAibGlnaHRzYWxtb24zIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb2xkZW5yb2Q0IiwgImJyb3duMyIsICJicm93bjMiLCAiYnJvd24zIiwgImFxdWFtYXJpbmUzIiwgImFxdWFtYXJpbmUzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhcmtzZWFncmVlbjQiLCAiZGFya3NlYWdyZWVuNCIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiKSkKVFJTX0MKClRSU19TIDwtIGdnZXJyb3JwbG90KE1SU0FfUywgeT0iVFJTIiwgeD0iR2Vub3R5cGUiLCBmaWxsPSJHZW5vdHlwZSIsIG5jb2wgPSAzLCBmYWNldC5ieSA9ICJDb25kaXRpb24iLCAgY29sb3IgPSAiR2Vub3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Nfc3RhdCA9ICJtZWFuX3NkIiwgYWRkPSJqaXR0ZXIiLCBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJkYXJrZ3JheSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsYWI9IiIsIHlsYWI9IlRvdGFsIFJvb3QgU2l6ZSAoY20pIiwgbWFpbiA9ICIiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpUUlNfUyA8LSBUUlNfUyArIHJyZW1vdmUoImxlZ2VuZCIpICsgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCByZWYuZ3JvdXAgPSAiQ29sIiwgbGFiZWwgPSAicC5zaWduaWYiKQpUUlNfUyA8LSBUUlNfUyArIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygibWlkbmlnaHRibHVlIiwgICJkYXJrZ3JlZW4iLCAib3JhbmdlIiwgIm9yYW5nZSIsICJmaXJlYnJpY2siLCAiZmlyZWJyaWNrIiwgInBsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsdW0iLCAicGx1bSIsICJwbHVtIiwic2xhdGVibHVlIiwic2xhdGVibHVlIiwibWFyb29uMyIsIm1hcm9vbjMiLCJtYXJvb24zIiwibWFyb29uMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImhvdHBpbmsiLCJob3RwaW5rIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsYXRlZ3JheTMiLCAic2xhdGVncmF5MyIsInJveWFsYmx1ZTQiLCAicm95YWxibHVlNCIsICJsaWdodHNhbG1vbjMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvbGRlbnJvZDQiLCAiYnJvd24zIiwgImJyb3duMyIsICJicm93bjMiLCAiYXF1YW1hcmluZTMiLCAiYXF1YW1hcmluZTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFya3NlYWdyZWVuNCIsICJkYXJrc2VhZ3JlZW40IiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIpKQpUUlNfUwpgYGAKYGBge3J9CmxpYnJhcnkoY293cGxvdCkKcGxvdF9ncmlkKFRSU19DLCBUUlNfUywgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMSkKCnBkZigiVG90YWxSb290U2l6ZV9HcmFwaC5wZGYiLCB3aWR0aCA9IDE1LCBoZWlnaCA9IDE1KQpwbG90X2dyaWQoVFJTX0MsIFRSU19TLCBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSAxKQpkZXYub2ZmKCkKYGBgCmBgYHtyfQpnZXR3ZCgpCmBgYAoKCmBgYHtyfQojTGV0J3MgbWFrZSBlcnJvciBwbG90cyBmb3IgbGF0ZXJhbCByb290IHNpemU6CgpMUkxfZDBfZXJyb3JwbG90IDwtIGdnZXJyb3JwbG90KE1SU0FfTVI2LCB5PSJMUkwiLCB4PSJHZW5vdHlwZSIsIGZpbGw9Ikdlbm90eXBlIiwgbmNvbCA9IDMsIGZhY2V0LmJ5ID0gIkNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY19zdGF0ID0gIm1lYW5fc2QiLCBhZGQ9ImppdHRlciIsIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImRhcmtncmF5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGxhYj0iIiwgeWxhYj0iTGF0ZXJhbCBSb290IExlbmd0aCAoY20pIiwgbWFpbiA9ICIiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpMUkxfZDBfZXJyb3JwbG90IDwtIExSTF9kMF9lcnJvcnBsb3QgKyBycmVtb3ZlKCJsZWdlbmQiKSArIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcmVmID0gIkNvbC0wIiwgbGFiZWwgPSAicC5zaWduaWYiKQpMUkxfZDBfZXJyb3JwbG90CgoKTFJMX0MgPC0gZ2dlcnJvcnBsb3QoTVJTQV9DLCB5PSJMUkwiLCB4PSJHZW5vdHlwZSIsIGZpbGw9Ikdlbm90eXBlIiwgbmNvbCA9IDMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Nfc3RhdCA9ICJtZWFuX3NkIiwgYWRkPSJqaXR0ZXIiLCBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJkYXJrZ3JheSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsYWI9IiIsIHlsYWI9IkxhdGVyYWwgUm9vdCBMZW5ndGggKGNtKSIsIG1haW4gPSAiIikgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkKTFJMX0MgPC0gTFJMX0MgKyBycmVtb3ZlKCJsZWdlbmQiKSArIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcmVmLmdyb3VwID0gIkNvbCIsIGxhYmVsID0gInAuc2lnbmlmIikKTFJMX0MKCkxSTF9TIDwtIGdnZXJyb3JwbG90KE1SU0FfUywgeT0iTFJMIiwgeD0iR2Vub3R5cGUiLCBmaWxsPSJHZW5vdHlwZSIsIG5jb2wgPSAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJMYXRlcmFsIFJvb3QgTGVuZ3RoIChjbSkiLCBtYWluID0gIiIpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpCkxSTF9TIDwtIExSTF9TICsgcnJlbW92ZSgibGVnZW5kIikgKyBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHJlZi5ncm91cCA9ICJDb2wiLCBsYWJlbCA9ICJwLnNpZ25pZiIpCkxSTF9TCgpgYGAKCmBgYHtyfQoKTFJMX0MgPC0gZ2dlcnJvcnBsb3QoTVJTQV9DLCB5PSJMUkwiLCB4PSJHZW5vdHlwZSIsIGZpbGw9Ikdlbm90eXBlIiwgbmNvbCA9IDMsIGZhY2V0LmJ5ID0gIkNvbmRpdGlvbiIsICBjb2xvciA9ICJHZW5vdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY19zdGF0ID0gIm1lYW5fc2QiLCBhZGQ9ImppdHRlciIsIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImRhcmtncmF5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGxhYj0iIiwgeWxhYj0iTGF0ZXJhbCBSb290IExlbmd0aCAoY20pIiwgbWFpbiA9ICIiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpMUkxfQyA8LSBMUkxfQyArIHJyZW1vdmUoImxlZ2VuZCIpICsgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCByZWYuZ3JvdXAgPSAiQ29sIiwgbGFiZWwgPSAicC5zaWduaWYiKQpMUkxfQyA8LSBMUkxfQyArIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygibWlkbmlnaHRibHVlIiwgICJkYXJrZ3JlZW4iLCAib3JhbmdlIiwgIm9yYW5nZSIsICJmaXJlYnJpY2siLCAiZmlyZWJyaWNrIiwgInBsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsdW0iLCAicGx1bSIsICJwbHVtIiwic2xhdGVibHVlIiwic2xhdGVibHVlIiwibWFyb29uMyIsIm1hcm9vbjMiLCJtYXJvb24zIiwibWFyb29uMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImhvdHBpbmsiLCJob3RwaW5rIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsYXRlZ3JheTMiLCAic2xhdGVncmF5MyIsInJveWFsYmx1ZTQiLCAicm95YWxibHVlNCIsICJsaWdodHNhbG1vbjMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvbGRlbnJvZDQiLCAiYnJvd24zIiwgImJyb3duMyIsICJicm93bjMiLCAiYXF1YW1hcmluZTMiLCAiYXF1YW1hcmluZTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFya3NlYWdyZWVuNCIsICJkYXJrc2VhZ3JlZW40IiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIpKQpMUkxfQwoKTFJMX1MgPC0gZ2dlcnJvcnBsb3QoTVJTQV9TLCB5PSJMUkwiLCB4PSJHZW5vdHlwZSIsIGZpbGw9Ikdlbm90eXBlIiwgbmNvbCA9IDMsIGZhY2V0LmJ5ID0gIkNvbmRpdGlvbiIsICBjb2xvciA9ICJHZW5vdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY19zdGF0ID0gIm1lYW5fc2QiLCBhZGQ9ImppdHRlciIsIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImRhcmtncmF5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGxhYj0iIiwgeWxhYj0iTGF0ZXJhbCBSb290IExlbmd0aCAoY20pIiwgbWFpbiA9ICIiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpMUkxfUyA8LSBMUkxfUyArIHJyZW1vdmUoImxlZ2VuZCIpICsgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCByZWYuZ3JvdXAgPSAiQ29sIiwgbGFiZWwgPSAicC5zaWduaWYiKQpMUkxfUyA8LSBMUkxfUyArIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygibWlkbmlnaHRibHVlIiwgICJkYXJrZ3JlZW4iLCAib3JhbmdlIiwgIm9yYW5nZSIsICJmaXJlYnJpY2siLCAiZmlyZWJyaWNrIiwgInBsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsdW0iLCAicGx1bSIsICJwbHVtIiwic2xhdGVibHVlIiwic2xhdGVibHVlIiwibWFyb29uMyIsIm1hcm9vbjMiLCJtYXJvb24zIiwibWFyb29uMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImhvdHBpbmsiLCJob3RwaW5rIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsYXRlZ3JheTMiLCAic2xhdGVncmF5MyIsInJveWFsYmx1ZTQiLCAicm95YWxibHVlNCIsICJsaWdodHNhbG1vbjMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvbGRlbnJvZDQiLCAiYnJvd24zIiwgImJyb3duMyIsICJicm93bjMiLCAiYXF1YW1hcmluZTMiLCAiYXF1YW1hcmluZTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFya3NlYWdyZWVuNCIsICJkYXJrc2VhZ3JlZW40IiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIpKQpMUkxfUwpgYGAKYGBge3J9CmxpYnJhcnkoY293cGxvdCkKcGxvdF9ncmlkKExSTF9DLCBMUkxfUywgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMSkKCnBkZigiTGF0ZXJhbFJvb3RMZW5ndGhfR3JhcGgucGRmIiwgd2lkdGggPSAxNSwgaGVpZ2ggPSAxNSkKcGxvdF9ncmlkKExSTF9DLCBMUkxfUywgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMSkKZGV2Lm9mZigpCmBgYAoKCgoKCgpgYGB7cn0KTVJTQV9NUjYKY29sbmFtZXMoTVJTQV9NUjYpWzNdIDwtICJNUkwiCmNvbG5hbWVzKE1SU0FfQylbM10gPC0gIk1STCIKY29sbmFtZXMoTVJTQV9TKVszXSA8LSAiTVJMIgpNUlNBX0MKYGBgCgpgYGB7cn0KI0xldCdzIG1ha2UgZXJyb3IgcGxvdHMgZm9yIG1haW4gcm9vdCBsZW5ndGg6CgoKTVJMX0MgPC0gZ2dlcnJvcnBsb3QoTVJTQV9DLCB5PSJNUkwiLCB4PSJHZW5vdHlwZSIsIGZpbGw9Ikdlbm90eXBlIiwgbmNvbCA9IDMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Nfc3RhdCA9ICJtZWFuX3NkIiwgYWRkPSJqaXR0ZXIiLCBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJkYXJrZ3JheSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsYWI9IiIsIHlsYWI9Ik1haW4gUm9vdCBMZW5ndGggKGNtKSIsIG1haW4gPSAiIikgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkKTVJMX0MgPC0gTVJMX0MgKyBycmVtb3ZlKCJsZWdlbmQiKSArIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcmVmLmdyb3VwID0gIkNvbCIsIGxhYmVsID0gInAuc2lnbmlmIikKTVJMX0MKCk1STF9TIDwtIGdnZXJyb3JwbG90KE1SU0FfUywgeT0iTVJMIiwgeD0iR2Vub3R5cGUiLCBmaWxsPSJHZW5vdHlwZSIsIG5jb2wgPSAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJUb3RhbCBSb290IExlbmd0aCAoY20pIiwgbWFpbiA9ICIiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpNUkxfUyA8LSBNUkxfUyArIHJyZW1vdmUoImxlZ2VuZCIpICsgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCByZWYuZ3JvdXAgPSAiQ29sIiwgbGFiZWwgPSAicC5zaWduaWYiKQpNUkxfUwpgYGAKCgoKYGBge3J9CgpNUkxfQyA8LSBnZ2Vycm9ycGxvdChNUlNBX0MsIHk9IkxSTCIsIHg9Ikdlbm90eXBlIiwgZmlsbD0iR2Vub3R5cGUiLCBuY29sID0gMywgZmFjZXQuYnkgPSAiQ29uZGl0aW9uIiwgIGNvbG9yID0gIkdlbm90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJNYWluIFJvb3QgTGVuZ3RoIChjbSkiLCBtYWluID0gIiIpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpCk1STF9DIDwtIE1STF9DICsgcnJlbW92ZSgibGVnZW5kIikgKyBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHJlZi5ncm91cCA9ICJDb2wiLCBsYWJlbCA9ICJwLnNpZ25pZiIpCk1STF9DIDwtIE1STF9DICsgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJtaWRuaWdodGJsdWUiLCAgImRhcmtncmVlbiIsICJvcmFuZ2UiLCAib3JhbmdlIiwgImZpcmVicmljayIsICJmaXJlYnJpY2siLCAicGx1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGx1bSIsICJwbHVtIiwgInBsdW0iLCJzbGF0ZWJsdWUiLCJzbGF0ZWJsdWUiLCJtYXJvb24zIiwibWFyb29uMyIsIm1hcm9vbjMiLCJtYXJvb24zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaG90cGluayIsImhvdHBpbmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVncmF5MyIsICJzbGF0ZWdyYXkzIiwicm95YWxibHVlNCIsICJyb3lhbGJsdWU0IiwgImxpZ2h0c2FsbW9uMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29sZGVucm9kNCIsICJicm93bjMiLCAiYnJvd24zIiwgImJyb3duMyIsICJhcXVhbWFyaW5lMyIsICJhcXVhbWFyaW5lMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXJrc2VhZ3JlZW40IiwgImRhcmtzZWFncmVlbjQiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIikpCk1STF9DCgpNUkxfUyA8LSBnZ2Vycm9ycGxvdChNUlNBX1MsIHk9Ik1STCIsIHg9Ikdlbm90eXBlIiwgZmlsbD0iR2Vub3R5cGUiLCBuY29sID0gMywgZmFjZXQuYnkgPSAiQ29uZGl0aW9uIiwgIGNvbG9yID0gIkdlbm90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJNYWluIFJvb3QgTGVuZ3RoIChjbSkiLCBtYWluID0gIiIpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpCk1STF9TIDwtIE1STF9TICsgcnJlbW92ZSgibGVnZW5kIikgKyBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHJlZi5ncm91cCA9ICJDb2wiLCBsYWJlbCA9ICJwLnNpZ25pZiIpCk1STF9TIDwtIE1STF9TICsgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJtaWRuaWdodGJsdWUiLCAgImRhcmtncmVlbiIsICJvcmFuZ2UiLCAib3JhbmdlIiwgImZpcmVicmljayIsICJmaXJlYnJpY2siLCAicGx1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGx1bSIsICJwbHVtIiwgInBsdW0iLCJzbGF0ZWJsdWUiLCJzbGF0ZWJsdWUiLCJtYXJvb24zIiwibWFyb29uMyIsIm1hcm9vbjMiLCJtYXJvb24zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaG90cGluayIsImhvdHBpbmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVncmF5MyIsICJzbGF0ZWdyYXkzIiwicm95YWxibHVlNCIsICJyb3lhbGJsdWU0IiwgImxpZ2h0c2FsbW9uMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29sZGVucm9kNCIsICJicm93bjMiLCAiYnJvd24zIiwgImJyb3duMyIsICJhcXVhbWFyaW5lMyIsICJhcXVhbWFyaW5lMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXJrc2VhZ3JlZW40IiwgImRhcmtzZWFncmVlbjQiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIikpCk1STF9TCgoKYGBgCmBgYHtyfQpsaWJyYXJ5KGNvd3Bsb3QpCnBsb3RfZ3JpZChNUkxfQywgTVJMX1MsIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDEpCgpwZGYoIk1haW5Sb290TGVuZ3RoX0dyYXBoLnBkZiIsIHdpZHRoID0gMTUsIGhlaWdoID0gMTUpCnBsb3RfZ3JpZChNUkxfQywgTVJMX1MsIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDEpCmRldi5vZmYoKQpgYGAKYGBge3J9CiNsZXRzIG1ha2UgYW4gZXJyb3IgcGxvdCBmb3IgTFJubwoKCkxSbm9fQyA8LSBnZ2Vycm9ycGxvdChNUlNBX0MsIHk9IkxSbm8iLCB4PSJHZW5vdHlwZSIsIGZpbGw9Ikdlbm90eXBlIiwgbmNvbCA9IDMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Nfc3RhdCA9ICJtZWFuX3NkIiwgYWRkPSJqaXR0ZXIiLCBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJkYXJrZ3JheSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhsYWI9IiIsIHlsYWI9IkxhdGVyYWwgUm9vdCBOdW1iZXIiLCBtYWluID0gIiIpICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpCkxSbm9fQyA8LSBMUm5vX0MgKyBycmVtb3ZlKCJsZWdlbmQiKSArIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcmVmLmdyb3VwID0gIkNvbCIsIGxhYmVsID0gInAuc2lnbmlmIikKTFJub19DCgpMUm5vX1MgPC0gZ2dlcnJvcnBsb3QoTVJTQV9TLCB5PSJMUm5vIiwgeD0iR2Vub3R5cGUiLCBmaWxsPSJHZW5vdHlwZSIsIG5jb2wgPSAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJMUm5vIiwgbWFpbiA9ICIiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpMUm5vX1MgPC0gTFJub19TICsgcnJlbW92ZSgibGVnZW5kIikgKyBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHJlZi5ncm91cCA9ICJDb2wiLCBsYWJlbCA9ICJwLnNpZ25pZiIpCkxSbm9fUwpgYGAKYGBge3J9CkxSbm9fQyA8LSBnZ2Vycm9ycGxvdChNUlNBX0MsIHk9IkxSbm8iLCB4PSJHZW5vdHlwZSIsIGZpbGw9Ikdlbm90eXBlIiwgbmNvbCA9IDMsIGZhY2V0LmJ5ID0gIkNvbmRpdGlvbiIsICBjb2xvciA9ICJHZW5vdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY19zdGF0ID0gIm1lYW5fc2QiLCBhZGQ9ImppdHRlciIsIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImRhcmtncmF5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGxhYj0iIiwgeWxhYj0iTGF0ZXJhbCBSb290IE51bWJlciIsIG1haW4gPSAiIikgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkKTFJub19DIDwtIExSbm9fQyArIHJyZW1vdmUoImxlZ2VuZCIpICsgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCByZWYuZ3JvdXAgPSAiQ29sIiwgbGFiZWwgPSAicC5zaWduaWYiKQpMUm5vX0MgPC0gTFJub19DICsgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJtaWRuaWdodGJsdWUiLCAgImRhcmtncmVlbiIsICJvcmFuZ2UiLCAib3JhbmdlIiwgImZpcmVicmljayIsICJmaXJlYnJpY2siLCAicGx1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGx1bSIsICJwbHVtIiwgInBsdW0iLCJzbGF0ZWJsdWUiLCJzbGF0ZWJsdWUiLCJtYXJvb24zIiwibWFyb29uMyIsIm1hcm9vbjMiLCJtYXJvb24zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaG90cGluayIsImhvdHBpbmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVncmF5MyIsICJzbGF0ZWdyYXkzIiwicm95YWxibHVlNCIsICJyb3lhbGJsdWU0IiwgImxpZ2h0c2FsbW9uMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29sZGVucm9kNCIsICJicm93bjMiLCAiYnJvd24zIiwgImJyb3duMyIsICJhcXVhbWFyaW5lMyIsICJhcXVhbWFyaW5lMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXJrc2VhZ3JlZW40IiwgImRhcmtzZWFncmVlbjQiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIikpCkxSbm9fQwoKTFJub19TIDwtIGdnZXJyb3JwbG90KE1SU0FfUywgeT0iTFJubyIsIHg9Ikdlbm90eXBlIiwgZmlsbD0iR2Vub3R5cGUiLCBuY29sID0gMywgZmFjZXQuYnkgPSAiQ29uZGl0aW9uIiwgIGNvbG9yID0gIkdlbm90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX3N0YXQgPSAibWVhbl9zZCIsIGFkZD0iaml0dGVyIiwgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiZGFya2dyYXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bGFiPSIiLCB5bGFiPSJMYXRlcmFsIFJvb3QgTnVtYmVyIiwgbWFpbiA9ICIiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTApKQpMUm5vX1MgPC0gTFJub19TICsgcnJlbW92ZSgibGVnZW5kIikgKyBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHJlZi5ncm91cCA9ICJDb2wiLCBsYWJlbCA9ICJwLnNpZ25pZiIpCkxSbm9fUyA8LSBMUm5vX1MgKyBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoIm1pZG5pZ2h0Ymx1ZSIsICAiZGFya2dyZWVuIiwgIm9yYW5nZSIsICJvcmFuZ2UiLCAiZmlyZWJyaWNrIiwgImZpcmVicmljayIsICJwbHVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbHVtIiwgInBsdW0iLCAicGx1bSIsInNsYXRlYmx1ZSIsInNsYXRlYmx1ZSIsIm1hcm9vbjMiLCJtYXJvb24zIiwibWFyb29uMyIsIm1hcm9vbjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwidHVycXVvaXNlNCIsInR1cnF1b2lzZTQiLCJ0dXJxdW9pc2U0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGlhbnJlZDQiLCJpbmRpYW5yZWQ0IiwiaW5kaWFucmVkNCIsImluZGlhbnJlZDQiLCJob3RwaW5rIiwiaG90cGluayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbGF0ZWdyYXkzIiwgInNsYXRlZ3JheTMiLCJyb3lhbGJsdWU0IiwgInJveWFsYmx1ZTQiLCAibGlnaHRzYWxtb24zIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb2xkZW5yb2Q0IiwgImJyb3duMyIsICJicm93bjMiLCAiYnJvd24zIiwgImFxdWFtYXJpbmUzIiwgImFxdWFtYXJpbmUzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhcmtzZWFncmVlbjQiLCAiZGFya3NlYWdyZWVuNCIsICJkZWVwcGluazIiLCAiZGVlcHBpbmsyIiwgImRlZXBwaW5rMiIsICJkZWVwcGluazIiKSkKTFJub19TCmBgYApgYGB7cn0KbGlicmFyeShjb3dwbG90KQpwbG90X2dyaWQoTFJub19DLCBMUm5vX1MsIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDEpCgpwZGYoIkxhdGVyYWxSb290TnVtYmVyX0dyYXBoLnBkZiIsIHdpZHRoID0gMTUsIGhlaWdoID0gMTUpCnBsb3RfZ3JpZChMUm5vX0MsIExSbm9fUywgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMSkKZGV2Lm9mZigpCmBgYAoKCgoKCgoKCgoKCg==