1 Randomization Table for 20 Subjects

# Repetate
set.seed(101)
eeg_rand <- psych::block.random(20, c(Condition1 = 2, Order1 = 2)) 
table_eeg_rand <- 
  eeg_rand %>% 
  as.data.frame(.) %>%  
  mutate(Condition1 = case_when(Condition1 == 1 ~ "ogl" ,
                                Condition1 == 2 ~ "ctrl", 
                                TRUE ~ NA_character_)) %>%
  mutate(Order1 = case_when(Order1 == 1 ~ "Instr-Solo" ,
                            Order1 == 2 ~ "Solo-Instr", 
                            TRUE ~ NA_character_)) %>%
  mutate(Condition2 = if_else(Condition1 == "ogl", "ctrl", "ogl")) %>%
  mutate(Order2 = if_else(Order1 == "Instr-Solo", "Solo-Instr", "Instr-Solo")) %>%
  mutate(ID = 1:nrow(.)) %>%
  mutate(Set = rep(NA, nrow(.)),
         Instructor = rep(NA, nrow(.)))
  
table_eeg_rand %>%                              # excel downloadable  DT table
  select(blocks, ID, everything()) %>%
    DT::datatable(
      extensions = 'Buttons',
      options = list(pageLength = 40,
                     dom = 'Bfrtip', 
                     buttons = c('excel', "csv")))

# kable table
# table_eeg_rand %>%                             
#   select(blocks, ID, everything()) %>%
#   knitr::kable(caption = "Randomization Table", align = rep('c', 6))


1.1 Check cross-tabs for each day

table_eeg_rand %>%
  select(Condition1, Order1) %>%
  ftable(row.vars = 1)
           Order1 Instr-Solo Solo-Instr
Condition1                             
ctrl                       5          5
ogl                        5          5
  # knitr::kable()
table_eeg_rand %>%
  select(Condition2, Order2) %>%
  ftable(row.vars = 1)
           Order2 Instr-Solo Solo-Instr
Condition2                             
ctrl                       5          5
ogl                        5          5
# all conditions are balanced by block
# table_eeg_rand %>%
#   filter(blocks == 1) %>%
#   select(Condition1, Instructor1, Order1) %>%
#   ftable(row.vars = 1)


1.2 Check balance

# pairs.panels(eeg_rand)
table_eeg_rand %>%
  select(-ID, -blocks, -Instructor, -Set) %>%
    pairs.panels()


2 Randomization Table for 30 Subjects

# Repetate
set.seed(101)
eeg_rand32 <- psych::block.random(32, c(Condition1 = 2, Order1 = 2, Set1 = 4)) 
table_eeg_rand32 <- 
  eeg_rand32 %>% 
  as.data.frame(.) %>%  
  mutate(Condition1 = case_when(Condition1 == 1 ~ "ogl" ,
                                Condition1 == 2 ~ "ctrl", 
                                TRUE ~ NA_character_)) %>%
  mutate(Order1 = case_when(Order1 == 1 ~ "Instr-Solo" ,
                            Order1 == 2 ~ "Solo-Instr", 
                            TRUE ~ NA_character_)) %>%
  mutate(Set1 = case_when(Set1 == 1 ~ "1-2" ,
                          Set1 == 2 ~ "2-1",
                          Set1 == 3 ~ "1-2f" ,
                          Set1 == 4 ~ "2-1f",
                          TRUE ~ NA_character_)) %>%
  mutate(Condition2 = if_else(Condition1 == "ogl", "ctrl", "ogl")) %>%
  mutate(Order2 = if_else(Order1 == "Instr-Solo", "Solo-Instr", "Instr-Solo")) %>%
  mutate(Set2 = if_else(Set1 %in% c("1-2", "2-1f"), "2-1", "1-2")) %>%
  mutate(ID = 1:nrow(.)) %>%
  mutate(Instructor = rep(NA, nrow(.)))
  
table_eeg_rand32 %>%                              # excel downloadable  DT table
  select(blocks, ID, everything()) %>%
    DT::datatable(
      extensions = 'Buttons',
      options = list(pageLength = 40,
                     dom = 'Bfrtip', 
                     buttons = c('excel', "csv")))


2.1 Check cross-tabs for each day

table_eeg_rand32 %>%
  select(Condition1, Order1, Set1) %>%
  ftable(row.vars = 1)
           Order1 Instr-Solo               Solo-Instr              
           Set1          1-2 1-2f 2-1 2-1f        1-2 1-2f 2-1 2-1f
Condition1                                                         
ctrl                       2    2   2    2          2    2   2    2
ogl                        2    2   2    2          2    2   2    2
  # knitr::kable()
table_eeg_rand32 %>%
  select(Condition2, Order2, Set1) %>%
  ftable(row.vars = 1)
           Order2 Instr-Solo               Solo-Instr              
           Set1          1-2 1-2f 2-1 2-1f        1-2 1-2f 2-1 2-1f
Condition2                                                         
ctrl                       2    2   2    2          2    2   2    2
ogl                        2    2   2    2          2    2   2    2


2.2 Check balance

# pairs.panels(eeg_rand)
table_eeg_rand32 %>%
  select(-ID, -blocks, -Instructor) %>%
    pairs.panels()


3 Session Info

R version 3.5.2 (2018-12-20)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=Romanian_Romania.1250  LC_CTYPE=Romanian_Romania.1250    LC_MONETARY=Romanian_Romania.1250 LC_NUMERIC=C                     
[5] LC_TIME=Romanian_Romania.1250    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] bindrcpp_0.2.2    DT_0.5            papaja_0.1.0.9842 psych_1.8.10      forcats_0.3.0     stringr_1.3.1     dplyr_0.7.8      
 [8] purrr_0.2.5       readr_1.3.0       tidyr_0.8.2       tibble_1.4.2      ggplot2_3.1.0     tidyverse_1.2.1   pacman_0.5.0     

loaded via a namespace (and not attached):
 [1] tidyselect_0.2.5 xfun_0.4         haven_2.1.0      lattice_0.20-38  colorspace_1.3-2 generics_0.0.2   htmltools_0.3.6  yaml_2.2.0      
 [9] rlang_0.3.0.1    later_0.7.5      pillar_1.3.1     foreign_0.8-71   glue_1.3.1       withr_2.1.2      modelr_0.1.2     readxl_1.1.0    
[17] bindr_0.1.1      plyr_1.8.4       munsell_0.5.0    gtable_0.2.0     cellranger_1.1.0 rvest_0.3.2      htmlwidgets_1.3  knitr_1.21      
[25] httpuv_1.4.5     crosstalk_1.0.0  parallel_3.5.2   broom_0.5.1      Rcpp_1.0.1       xtable_1.8-3     promises_1.0.1   scales_1.0.0    
[33] backports_1.1.3  jsonlite_1.6     mime_0.6         mnormt_1.5-5     digest_0.6.18    hms_0.4.2        stringi_1.2.4    shiny_1.2.0     
[41] grid_3.5.2       cli_1.0.1        tools_3.5.2      magrittr_1.5     lazyeval_0.2.1   crayon_1.3.4     pkgconfig_2.0.2  xml2_1.2.0      
[49] lubridate_1.7.4  assertthat_0.2.1 httr_1.4.0       rstudioapi_0.8   R6_2.4.0         nlme_3.1-137     compiler_3.5.2  
 

A work by Claudiu Papasteri

claudiu.papasteri@gmail.com

 

LS0tDQp0aXRsZTogIjxicj4gQmFsYW5jZWQgcmFuZG9taXphdGlvbiBmb3IgRUVHIE8uNCIgDQpzdWJ0aXRsZTogIlJhbmRvbWl6YXRpb24gTy40IC0gMjAgc3ViamVjdHMgJiAzMiBzdWJqZWN0cyINCmF1dGhvcjogIjxicj4gQ2xhdWRpdSBQYXBhc3RlcmkiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlbSAlWScpYCINCm91dHB1dDogDQogICAgaHRtbF9ub3RlYm9vazoNCiAgICAgICAgICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgICAgICAgICAgdG9jOiB0cnVlDQogICAgICAgICAgICB0b2NfZGVwdGg6IDINCiAgICAgICAgICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgICAgICAgICAgdGhlbWU6IHNwYWNlbGFiDQogICAgICAgICAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgICAgICAgICBmb250LWZhbWlseTogQXJpYWwNCiAgICAgICAgICAgIGZpZ193aWR0aDogMTANCiAgICAgICAgICAgIGZpZ19oZWlnaHQ6IDkNCiAgICAjIHBkZl9kb2N1bWVudDogDQogICAgICAgICAgICAjIHRvYzogdHJ1ZQ0KICAgICAgICAgICAgIyB0b2NfZGVwdGg6IDINCiAgICAgICAgICAgICMgbnVtYmVyX3NlY3Rpb25zOiB0cnVlDQogICAgICAgICAgICAjIGZvbnRzaXplOiAxMXB0DQogICAgICAgICAgICAjIGdlb21ldHJ5OiBtYXJnaW49MWluDQogICAgICAgICAgICAjIGZpZ193aWR0aDogNw0KICAgICAgICAgICAgIyBmaWdfaGVpZ2h0OiA2DQogICAgICAgICAgICAjIGZpZ19jYXB0aW9uOiB0cnVlDQotLS0NCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQ0KIyBraW50ciBvcHRpb25zDQprbml0cjo6b3B0c19jaHVuayRzZXQoDQogIGNvbW1lbnQgPSAiIyIsDQogIGNvbGxhcHNlID0gVFJVRSwNCiAgZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBUUlVFLCBtZXNzYWdlID0gVFJVRSwgY2FjaGUgPSBUUlVFICAgICAgICMgZWNobyA9IEZhbHNlIGZvciBnaXRodWJfZG9jdW1lbnQsIGJ1dCB3aWxsIGJlIGZvbGRlZCBpbiBodG1sX25vdGVib29rDQopDQoNCiMgR2VuZXJhbCBSIG9wdGlvbnMgYW5kIGluZm8NCnNldC5zZWVkKDExMSkgICAgICAgICAgICAgICAjIGluIGNhc2Ugd2UgdXNlIHJhbmRvbWl6ZWQgcHJvY2VkdXJlcyAgICAgICANCm9wdGlvbnMoc2NpcGVuID0gOTk5KSAgICAgICAjIHBvc2l0aXZlIHZhbHVlcyBiaWFzIHRvd2FyZHMgZml4ZWQgYW5kIG5lZ2F0aXZlIHRvd2FyZHMgc2NpZW50aWZpYyBub3RhdGlvbg0KDQojIExvYWQgcGFja2FnZXMNCmlmICghcmVxdWlyZSgicGFjbWFuIikpIGluc3RhbGwucGFja2FnZXMoInBhY21hbiIpDQpwYWNrYWdlcyA8LSBjKA0KICAidGlkeXZlcnNlIiwgICAgICAjIGJlc3QgdGhpbmcgdGhhdCBoYXBwZW5kIHRvIG1lDQogICJwc3ljaCIsICAgICAgICAgICMgZ2VuZXJhbCBwdXJwb3NlIHRvb2xib3ggZm9yIHBlcnNvbmFsaXR5LCBwc3ljaG9tZXRyaWMgdGhlb3J5IGFuZCBleHBlcmltZW50YWwgcHN5Y2hvbG9neQ0KICAicGFwYWphIiwgICAgICAgICAjIGZvciBBUEEgc3R5bGUNCiAgImdncGxvdDIiLCAgICAgICAgIyBiZXN0IHBsb3RzDQogICJEVCIgICAgICAgICAgICAgICMgZGF0YSB0YWJsZXMNCiAgIyAsIC4uLg0KKQ0KaWYgKCFyZXF1aXJlKCJwYWNtYW4iKSkgaW5zdGFsbC5wYWNrYWdlcygicGFjbWFuIikNCnBhY21hbjo6cF9sb2FkKGNoYXIgPSBwYWNrYWdlcykNCg0KIyBUaGVtZXMgZm9yIGdncGxvdDIgcGxvdGluZyAoaGVyZSB1c2VkIEFQQSBzdHlsZSkNCnRoZW1lX3NldCh0aGVtZV9hcGEoKSkNCmBgYA0KDQoNCjxicj4NCg0KIyBSYW5kb21pemF0aW9uIFRhYmxlIGZvciAyMCBTdWJqZWN0cw0KDQpgYGB7ciByYW5kb21pemVfYmxvY2tzfQ0KIyBSZXBldGF0ZQ0Kc2V0LnNlZWQoMTAxKQ0KZWVnX3JhbmQgPC0gcHN5Y2g6OmJsb2NrLnJhbmRvbSgyMCwgYyhDb25kaXRpb24xID0gMiwgT3JkZXIxID0gMikpIA0KDQp0YWJsZV9lZWdfcmFuZCA8LSANCiAgZWVnX3JhbmQgJT4lIA0KICBhcy5kYXRhLmZyYW1lKC4pICU+JSAgDQogIG11dGF0ZShDb25kaXRpb24xID0gY2FzZV93aGVuKENvbmRpdGlvbjEgPT0gMSB+ICJvZ2wiICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uMSA9PSAyIH4gImN0cmwiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IE5BX2NoYXJhY3Rlcl8pKSAlPiUNCiAgbXV0YXRlKE9yZGVyMSA9IGNhc2Vfd2hlbihPcmRlcjEgPT0gMSB+ICJJbnN0ci1Tb2xvIiAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXIxID09IDIgfiAiU29sby1JbnN0ciIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSkgJT4lDQogIG11dGF0ZShDb25kaXRpb24yID0gaWZfZWxzZShDb25kaXRpb24xID09ICJvZ2wiLCAiY3RybCIsICJvZ2wiKSkgJT4lDQogIG11dGF0ZShPcmRlcjIgPSBpZl9lbHNlKE9yZGVyMSA9PSAiSW5zdHItU29sbyIsICJTb2xvLUluc3RyIiwgIkluc3RyLVNvbG8iKSkgJT4lDQogIG11dGF0ZShJRCA9IDE6bnJvdyguKSkgJT4lDQogIG11dGF0ZShTZXQgPSByZXAoTkEsIG5yb3coLikpLA0KICAgICAgICAgSW5zdHJ1Y3RvciA9IHJlcChOQSwgbnJvdyguKSkpDQogIA0KDQp0YWJsZV9lZWdfcmFuZCAlPiUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGV4Y2VsIGRvd25sb2FkYWJsZSAgRFQgdGFibGUNCiAgc2VsZWN0KGJsb2NrcywgSUQsIGV2ZXJ5dGhpbmcoKSkgJT4lDQogICAgRFQ6OmRhdGF0YWJsZSgNCiAgICAgIGV4dGVuc2lvbnMgPSAnQnV0dG9ucycsDQogICAgICBvcHRpb25zID0gbGlzdChwYWdlTGVuZ3RoID0gNDAsDQogICAgICAgICAgICAgICAgICAgICBkb20gPSAnQmZydGlwJywgDQogICAgICAgICAgICAgICAgICAgICBidXR0b25zID0gYygnZXhjZWwnLCAiY3N2IikpKQ0KDQojIGthYmxlIHRhYmxlDQojIHRhYmxlX2VlZ19yYW5kICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQojICAgc2VsZWN0KGJsb2NrcywgSUQsIGV2ZXJ5dGhpbmcoKSkgJT4lDQojICAga25pdHI6OmthYmxlKGNhcHRpb24gPSAiUmFuZG9taXphdGlvbiBUYWJsZSIsIGFsaWduID0gcmVwKCdjJywgNikpDQpgYGANCg0KDQo8YnI+DQoNCiMjIENoZWNrIGNyb3NzLXRhYnMgZm9yIGVhY2ggZGF5DQoNCmBgYHtyIHJhbmRvbWl6ZV9jaGVja30NCg0KdGFibGVfZWVnX3JhbmQgJT4lDQogIHNlbGVjdChDb25kaXRpb24xLCBPcmRlcjEpICU+JQ0KICBmdGFibGUocm93LnZhcnMgPSAxKQ0KICAjIGtuaXRyOjprYWJsZSgpDQoNCnRhYmxlX2VlZ19yYW5kICU+JQ0KICBzZWxlY3QoQ29uZGl0aW9uMiwgT3JkZXIyKSAlPiUNCiAgZnRhYmxlKHJvdy52YXJzID0gMSkNCg0KIyBhbGwgY29uZGl0aW9ucyBhcmUgYmFsYW5jZWQgYnkgYmxvY2sNCiMgdGFibGVfZWVnX3JhbmQgJT4lDQojICAgZmlsdGVyKGJsb2NrcyA9PSAxKSAlPiUNCiMgICBzZWxlY3QoQ29uZGl0aW9uMSwgSW5zdHJ1Y3RvcjEsIE9yZGVyMSkgJT4lDQojICAgZnRhYmxlKHJvdy52YXJzID0gMSkNCmBgYA0KDQoNCjxicj4NCg0KIyMgIENoZWNrIGJhbGFuY2UgDQoNCmBgYHtyIHJhbmRpbWl6ZV9wbG90fQ0KIyBwYWlycy5wYW5lbHMoZWVnX3JhbmQpDQoNCnRhYmxlX2VlZ19yYW5kICU+JQ0KICBzZWxlY3QoLUlELCAtYmxvY2tzLCAtSW5zdHJ1Y3RvciwgLVNldCkgJT4lDQogICAgcGFpcnMucGFuZWxzKCkNCmBgYA0KDQoNCg0KPGJyPg0KDQojIFJhbmRvbWl6YXRpb24gVGFibGUgZm9yIDMwIFN1YmplY3RzDQoNCmBgYHtyIHJhbmRvbWl6ZV9ibG9ja3MzMH0NCiMgUmVwZXRhdGUNCnNldC5zZWVkKDEwMSkNCmVlZ19yYW5kMzIgPC0gcHN5Y2g6OmJsb2NrLnJhbmRvbSgzMiwgYyhDb25kaXRpb24xID0gMiwgT3JkZXIxID0gMiwgU2V0MSA9IDQpKSANCg0KdGFibGVfZWVnX3JhbmQzMiA8LSANCiAgZWVnX3JhbmQzMiAlPiUgDQogIGFzLmRhdGEuZnJhbWUoLikgJT4lICANCiAgbXV0YXRlKENvbmRpdGlvbjEgPSBjYXNlX3doZW4oQ29uZGl0aW9uMSA9PSAxIH4gIm9nbCIgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb24xID09IDIgfiAiY3RybCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXykpICU+JQ0KICBtdXRhdGUoT3JkZXIxID0gY2FzZV93aGVuKE9yZGVyMSA9PSAxIH4gIkluc3RyLVNvbG8iICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlcjEgPT0gMiB+ICJTb2xvLUluc3RyIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IE5BX2NoYXJhY3Rlcl8pKSAlPiUNCiAgbXV0YXRlKFNldDEgPSBjYXNlX3doZW4oU2V0MSA9PSAxIH4gIjEtMiIgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQxID09IDIgfiAiMi0xIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0MSA9PSAzIH4gIjEtMmYiICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0MSA9PSA0IH4gIjItMWYiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXykpICU+JQ0KICBtdXRhdGUoQ29uZGl0aW9uMiA9IGlmX2Vsc2UoQ29uZGl0aW9uMSA9PSAib2dsIiwgImN0cmwiLCAib2dsIikpICU+JQ0KICBtdXRhdGUoT3JkZXIyID0gaWZfZWxzZShPcmRlcjEgPT0gIkluc3RyLVNvbG8iLCAiU29sby1JbnN0ciIsICJJbnN0ci1Tb2xvIikpICU+JQ0KICBtdXRhdGUoU2V0MiA9IGlmX2Vsc2UoU2V0MSAlaW4lIGMoIjEtMiIsICIyLTFmIiksICIyLTEiLCAiMS0yIikpICU+JQ0KICBtdXRhdGUoSUQgPSAxOm5yb3coLikpICU+JQ0KICBtdXRhdGUoSW5zdHJ1Y3RvciA9IHJlcChOQSwgbnJvdyguKSkpDQogIA0KDQp0YWJsZV9lZWdfcmFuZDMyICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXhjZWwgZG93bmxvYWRhYmxlICBEVCB0YWJsZQ0KICBzZWxlY3QoYmxvY2tzLCBJRCwgZXZlcnl0aGluZygpKSAlPiUNCiAgICBEVDo6ZGF0YXRhYmxlKA0KICAgICAgZXh0ZW5zaW9ucyA9ICdCdXR0b25zJywNCiAgICAgIG9wdGlvbnMgPSBsaXN0KHBhZ2VMZW5ndGggPSA0MCwNCiAgICAgICAgICAgICAgICAgICAgIGRvbSA9ICdCZnJ0aXAnLCANCiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMgPSBjKCdleGNlbCcsICJjc3YiKSkpDQpgYGANCg0KDQo8YnI+DQoNCiMjIENoZWNrIGNyb3NzLXRhYnMgZm9yIGVhY2ggZGF5DQoNCmBgYHtyIHJhbmRvbWl6ZV9jaGVjazMwfQ0KDQp0YWJsZV9lZWdfcmFuZDMyICU+JQ0KICBzZWxlY3QoQ29uZGl0aW9uMSwgT3JkZXIxLCBTZXQxKSAlPiUNCiAgZnRhYmxlKHJvdy52YXJzID0gMSkNCiAgIyBrbml0cjo6a2FibGUoKQ0KDQp0YWJsZV9lZWdfcmFuZDMyICU+JQ0KICBzZWxlY3QoQ29uZGl0aW9uMiwgT3JkZXIyLCBTZXQxKSAlPiUNCiAgZnRhYmxlKHJvdy52YXJzID0gMSkNCmBgYA0KDQoNCjxicj4NCg0KIyMgIENoZWNrIGJhbGFuY2UgDQoNCmBgYHtyIHJhbmRpbWl6ZV9wbG90MzB9DQojIHBhaXJzLnBhbmVscyhlZWdfcmFuZCkNCg0KdGFibGVfZWVnX3JhbmQzMiAlPiUNCiAgc2VsZWN0KC1JRCwgLWJsb2NrcywgLUluc3RydWN0b3IpICU+JQ0KICAgIHBhaXJzLnBhbmVscygpDQpgYGANCg0KDQoNCg0KPCEtLSBTZXNzaW9uIEluZm8gYW5kIExpY2Vuc2UgLS0+DQoNCjxicj4NCg0KIyBTZXNzaW9uIEluZm8NCmBgYHtyIHNlc3Npb25faW5mbywgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gJ21hcmt1cCd9DQpzZXNzaW9uSW5mbygpICAgIA0KYGBgDQoNCjwhLS0gRm9vdGVyIC0tPg0KJm5ic3A7DQo8aHIgLz4NCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij5BIHdvcmsgYnkgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NsYXVkaXVQYXBhc3RlcmkvIj5DbGF1ZGl1IFBhcGFzdGVyaTwvYT48L3A+DQo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjODA4MDgwOyI+PGVtPmNsYXVkaXUucGFwYXN0ZXJpQGdtYWlsLmNvbTwvZW0+PC9zcGFuPjwvcD4NCiZuYnNwOw0K