master_dir <- '~/Insync/Drive/00EEG/Proyectos/Huepe/fdcyt_2017/resting_huepe'
data_dir <- paste(master_dir, 'FAA_results', sep = '/')
alpha_power_data_name <- paste(data_dir, 'average_alpha_power_9_to_11_resting_3_times.txt', sep='/')
alpha_power_data <- read.table(alpha_power_data_name, header = TRUE, strip.white = TRUE, sep = "\t")
names(alpha_power_data)[names(alpha_power_data) == 'chlabel'] <- 'Electrode'
names(alpha_power_data)[names(alpha_power_data) == 'ERPset'] <- 'Dataset'
names(alpha_power_data)[names(alpha_power_data) == 'binlabel'] <- 'Period'
alpha_power_data$Subject <- as.numeric(gsub(".*?([0-9]+).*", "\\1", alpha_power_data$Dataset))
alpha_power_data$log10_uvolts <- log10(alpha_power_data$value)
alpha_power_data$Dataset <- factor(alpha_power_data$Dataset)
alpha_power_data$Electrode <- factor(alpha_power_data$Electrode)
alpha_power_data$Subject <- factor(alpha_power_data$Subject)
alpha_power_data$Period <- factor(alpha_power_data$Period, levels = c("beginning", "middle", "end"))
alpha_power_data$hemisphere[alpha_power_data$Electrode %in% c('E093-Fp1', 'E092-AF3a', 'E094-AF7', 'E089-F1a', 'E100-F3a', 'E101-F5a', 'E103-F7', 'E088-FC1a')] <- 'Left'
alpha_power_data$hemisphere[alpha_power_data$Electrode %in% c('E080-Fp2', 'E079-AF4a', 'E072-AF8', 'E076-F2a', 'E068-F4a', 'E069-F6a', 'E071-F8', 'E075-FC2a')] <- 'Right'
alpha_power_data$hemisphere <- factor(alpha_power_data$hemisphere)
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E093-Fp1' , 'E080-Fp2')] <- 'Fp1-Fp2'
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E092-AF3a', 'E079-AF4a')] <- 'AF3-AF4'
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E094-AF7' , 'E072-AF8')] <- 'AF7-AF8'
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E089-F1a' , 'E076-F2a')] <- 'F1-F2'
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E100-F3a' , 'E068-F4a')] <- 'F3-F4'
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E101-F5a' , 'E069-F6a')] <- 'F5-F6'
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E103-F7' , 'E071-F8')] <- 'F7-F8'
alpha_power_data$electrode_pair[alpha_power_data$Electrode %in% c('E088-FC1a', 'E075-FC2a')] <- 'FC1-FC2'
alpha_power_data$electrode_pair <- factor(alpha_power_data$electrode_pair, levels = c('Fp1-Fp2', 'AF3-AF4', 'AF7-AF8', 'F1-F2', 'F3-F4','F5-F6', 'F7-F8', 'FC1-FC2'))
group_id <- read.table("/home/alvaro/Insync/Drive/00EEG/Proyectos/Huepe/fdcyt_2017/Registro-Evaluaciones-FDCYT-DH-2017 - General ANONIMO.csv",
sep = ",", header = TRUE, col.names = c("full.id", "Subject", "Sex", "Group", "Stress"))
group_id$Sex <- factor(group_id$Sex)
group_id$Group <- factor(group_id$Group)
levels(group_id$Sex) <- list(female = "F", male = "M")
levels(group_id$Group) <- list(invulnerable = "CN", vulnerable = "EX")
group_id <- group_id[c('Subject', 'Group', 'Sex')]
alpha_power_data <- merge(alpha_power_data, group_id, by = 'Subject')
write.csv(alpha_power_data, paste(data_dir, '/alpha_power_data_clean_old(bad)_style.csv', sep = ''), row.names = FALSE)
asymmetry_Fp2_Fp1 <- c()
asymmetry_AF4_AF3 <- c()
asymmetry_AF8_AF7 <- c()
asymmetry_F2_F1 <- c()
asymmetry_F4_F3 <- c()
asymmetry_F6_F5 <- c()
asymmetry_F8_F7 <- c()
asymmetry_FC2_FC1 <- c()
Subject <- c()
Period <- c()
subjectos <- levels(alpha_power_data$Subject)
periodos <- levels(alpha_power_data$Period)
for (subj in subjectos) {
for (part in periodos) {
subject_data <- subset(alpha_power_data, Subject == subj & Period == part)
Subject <- c(Subject, as.character(subject_data$Subject[1]))
Period <- c(Period, as.character(subject_data$Period[1]))
asymmetry_Fp2_Fp1 <- c(asymmetry_Fp2_Fp1, subject_data[which(subject_data$Electrode == 'E080-Fp2') , 10] - subject_data[which(subject_data$Electrode=='E093-Fp1') , 10])
asymmetry_AF4_AF3 <- c(asymmetry_AF4_AF3, subject_data[which(subject_data$Electrode == 'E079-AF4a'), 10] - subject_data[which(subject_data$Electrode=='E092-AF3a'), 10])
asymmetry_AF8_AF7 <- c(asymmetry_AF8_AF7, subject_data[which(subject_data$Electrode == 'E072-AF8') , 10] - subject_data[which(subject_data$Electrode=='E094-AF7') , 10])
asymmetry_F2_F1 <- c(asymmetry_F2_F1 , subject_data[which(subject_data$Electrode == 'E076-F2a') , 10] - subject_data[which(subject_data$Electrode=='E089-F1a') , 10])
asymmetry_F4_F3 <- c(asymmetry_F4_F3 , subject_data[which(subject_data$Electrode == 'E068-F4a') , 10] - subject_data[which(subject_data$Electrode=='E100-F3a') , 10])
asymmetry_F6_F5 <- c(asymmetry_F6_F5 , subject_data[which(subject_data$Electrode == 'E069-F6a') , 10] - subject_data[which(subject_data$Electrode=='E101-F5a') , 10])
asymmetry_F8_F7 <- c(asymmetry_F8_F7 , subject_data[which(subject_data$Electrode == 'E071-F8') , 10] - subject_data[which(subject_data$Electrode=='E103-F7') , 10])
asymmetry_FC2_FC1 <- c(asymmetry_FC2_FC1, subject_data[which(subject_data$Electrode == 'E075-FC2a'), 10] - subject_data[which(subject_data$Electrode=='E088-FC1a'), 10])
}
}
alpha_asymmetry_data <- data.frame(Subject, Period, asymmetry_Fp2_Fp1, asymmetry_AF4_AF3, asymmetry_AF8_AF7, asymmetry_F2_F1, asymmetry_F4_F3, asymmetry_F6_F5, asymmetry_F8_F7, asymmetry_FC2_FC1)
alpha_asymmetry_data$Subject <- factor(alpha_asymmetry_data$Subject)
alpha_asymmetry_data$Period <- factor(alpha_asymmetry_data$Period, levels = c("beginning", "middle", "end"))
alpha_asymmetry_data <- merge(alpha_asymmetry_data, group_id, by = 'Subject')
write.csv(alpha_asymmetry_data, paste(data_dir, '/alpha_asymmetry_data_clean_old(bad)_style.csv', sep = ''), row.names = FALSE)
Alpha Asymmetry, [9.0
11.0] Hz
Fp2-Fp1 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_Fp2_Fp1", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_Fp2_Fp1, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_Fp2_Fp1
Effect df MSE F ges p.value
1 Group 1, 73 0.04 0.12 .001 .731
2 Sex 1, 73 0.04 0.60 .006 .443
3 Group:Sex 1, 73 0.04 2.06 .021 .156
4 Period 1.98, 144.52 0.01 0.27 <.001 .765
5 Group:Period 1.98, 144.52 0.01 1.52 .005 .222
6 Sex:Period 1.98, 144.52 0.01 1.93 .006 .149
7 Group:Sex:Period 1.98, 144.52 0.01 0.11 <.001 .891
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
AF4-AF3 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_AF4_AF3", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_AF4_AF3, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_AF4_AF3
Effect df MSE F ges p.value
1 Group 1, 73 0.03 2.88 + .035 .094
2 Sex 1, 73 0.03 1.54 .019 .218
3 Group:Sex 1, 73 0.03 1.23 .015 .271
4 Period 1.91, 139.76 0.00 0.54 <.001 .578
5 Group:Period 1.91, 139.76 0.00 1.06 .001 .348
6 Sex:Period 1.91, 139.76 0.00 0.77 <.001 .458
7 Group:Sex:Period 1.91, 139.76 0.00 0.10 <.001 .893
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
AF8-AF7 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_AF8_AF7", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_AF8_AF7, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_AF8_AF7
Effect df MSE F ges p.value
1 Group 1, 73 0.12 2.08 .026 .154
2 Sex 1, 73 0.12 2.80 + .034 .099
3 Group:Sex 1, 73 0.12 0.02 <.001 .878
4 Period 1.52, 111.05 0.01 1.35 .001 .260
5 Group:Period 1.52, 111.05 0.01 1.57 .002 .216
6 Sex:Period 1.52, 111.05 0.01 1.38 .001 .254
7 Group:Sex:Period 1.52, 111.05 0.01 0.17 <.001 .786
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
F2-F1 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_F2_F1", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_F2_F1, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_F2_F1
Effect df MSE F ges p.value
1 Group 1, 73 0.01 2.44 .030 .122
2 Sex 1, 73 0.01 0.85 .011 .360
3 Group:Sex 1, 73 0.01 0.73 .009 .396
4 Period 1.70, 123.80 0.00 1.83 .002 .171
5 Group:Period 1.70, 123.80 0.00 0.29 <.001 .714
6 Sex:Period 1.70, 123.80 0.00 0.26 <.001 .738
7 Group:Sex:Period 1.70, 123.80 0.00 1.98 .002 .149
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
F4-F3 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_F4_F3", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_F4_F3, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_F4_F3
Effect df MSE F ges p.value
1 Group 1, 73 0.03 2.48 .031 .119
2 Sex 1, 73 0.03 1.07 .014 .303
3 Group:Sex 1, 73 0.03 0.22 .003 .642
4 Period 1.96, 142.80 0.00 0.97 <.001 .381
5 Group:Period 1.96, 142.80 0.00 0.62 <.001 .535
6 Sex:Period 1.96, 142.80 0.00 0.42 <.001 .656
7 Group:Sex:Period 1.96, 142.80 0.00 2.21 .002 .114
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
F6-F5 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_F6_F5", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_F6_F5, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_F6_F5
Effect df MSE F ges p.value
1 Group 1, 73 0.04 1.54 .019 .219
2 Sex 1, 73 0.04 6.03 * .071 .016
3 Group:Sex 1, 73 0.04 0.10 .001 .756
4 Period 1.88, 137.60 0.00 2.19 .002 .119
5 Group:Period 1.88, 137.60 0.00 0.00 <.001 .995
6 Sex:Period 1.88, 137.60 0.00 0.06 <.001 .933
7 Group:Sex:Period 1.88, 137.60 0.00 1.98 .002 .144
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
NOTE: Results may be misleading due to involvement in interactions
$emmeans
Sex emmean SE df lower.CL upper.CL
female -0.0392 0.0181 73 -0.0753 -0.00309
male 0.0281 0.0205 73 -0.0129 0.06902
Results are averaged over the levels of: Group, Period
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
female - male -0.0672 0.0274 73 -2.456 0.0164
Results are averaged over the levels of: Group, Period
F8-F7 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_F8_F7", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_F8_F7, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_F8_F7
Effect df MSE F ges p.value
1 Group 1, 73 0.09 0.17 .002 .684
2 Sex 1, 73 0.09 7.89 ** .091 .006
3 Group:Sex 1, 73 0.09 1.55 .019 .217
4 Period 1.84, 134.49 0.00 1.51 .002 .225
5 Group:Period 1.84, 134.49 0.00 1.04 .001 .352
6 Sex:Period 1.84, 134.49 0.00 0.92 <.001 .395
7 Group:Sex:Period 1.84, 134.49 0.00 0.89 <.001 .406
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
NOTE: Results may be misleading due to involvement in interactions
$emmeans
Sex emmean SE df lower.CL upper.CL
female -0.0620 0.0260 73 -0.1138 -0.0102
male 0.0484 0.0295 73 -0.0104 0.1072
Results are averaged over the levels of: Group, Period
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
female - male -0.11 0.0393 73 -2.808 0.0064
Results are averaged over the levels of: Group, Period
FC2-FC1 pair
options(width = 100)
alpha_asymmetry_rep_anova = aov_ez("Subject", "asymmetry_FC2_FC1", alpha_asymmetry_data, between = c("Group", "Sex"), within = "Period")
Contrasts set to contr.sum for the following variables: Group, Sex
mytable <- xtabs(~ Group + Sex, data = alpha_asymmetry_rep_anova$data$long) / length(unique(alpha_asymmetry_data$Period))
ftable(addmargins(mytable))
Sex female male Sum
Group
invulnerable 19 20 39
vulnerable 24 14 38
Sum 43 34 77
alpha_asymmetry_rain <- ggplot(alpha_asymmetry_rep_anova$data$long, aes(y = asymmetry_FC2_FC1, x = Group, color = Sex, fill = Sex)) +
# ggtitle("alpha_asymmetry") +
ylab("power") +
stat_halfeye(
trim = FALSE,
adjust = 1,
.width = 0,
justification = -.15,
alpha = .5,
point_colour = NA) +
# theme(legend.position='none')
# geom_boxplot(width = .15, alpha = .2, outlier.shape = NA) +
geom_point(size = 2, alpha = .4, position = position_jitter(width = .05, height = 0))
suppressWarnings(print(alpha_asymmetry_rain))

alpha_asymmetry_afex_plot <-
afex_plot(
alpha_asymmetry_rep_anova,
x = "Period",
trace = "Sex",
panel = "Group",
error = "between",
error_arg = list(width = .1),
dodge = -.5,
mapping = c("color"),
point_arg = list(size = 4)
)
Warning: Panel(s) show a mixed within-between-design.
Error bars do not allow comparisons across all means.
Suppress error bars with: error = "none"
suppressWarnings(print(alpha_asymmetry_afex_plot))

nice(alpha_asymmetry_rep_anova)
Anova Table (Type 3 tests)
Response: asymmetry_FC2_FC1
Effect df MSE F ges p.value
1 Group 1, 73 0.02 0.00 <.001 .947
2 Sex 1, 73 0.02 0.63 .008 .430
3 Group:Sex 1, 73 0.02 0.13 .002 .721
4 Period 1.87, 136.61 0.00 0.07 <.001 .926
5 Group:Period 1.87, 136.61 0.00 1.31 <.001 .272
6 Sex:Period 1.87, 136.61 0.00 0.91 <.001 .398
7 Group:Sex:Period 1.87, 136.61 0.00 0.16 <.001 .837
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
Sphericity correction method: GG
a_posteriori(alpha_asymmetry_rep_anova)
LS0tCnRpdGxlOiAiQWxwaGEgcG93ZXIgZXN0aW1hdGVkIGJ5IGF2ZXJhZ2luZyBiZXR3ZWVuIDIgZnJlcXVlbmNpZXMgKHRoZSBzaGl0dHkgd2F5KSIKYXV0aG9yOiAiQWx2YXJvIFJpdmVyYS1SZWkiCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGhpZ2hsaWdodDogdGFuZ28KICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICB0aGVtZTogY2VydWxlYW4KICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogbm8KICAgICAgc21vb3RoX3Njcm9sbDogbm8KICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwpzdWJ0aXRsZTogQW5haWUgZW5hIGVuZW1pZWdlbnNnc2hqcy4uLgotLS0KCmBgYHtyIENsZWFuIGFuZCBMb2FkIExpYnJhcmllc30KY2F0KCJcMDE0IikgICAgICMgY2xlYW4gdGVybWluYWwKcm0obGlzdCA9IGxzKCkpICMgY2xlYW4gd29ya3NwYWNlCnRyeShkZXYub2ZmKCksIHNpbGVudCA9IFRSVUUpICMgY2xvc2UgYWxsIHBsb3RzCmxpYnJhcnkoYWZleCkKbGlicmFyeShlbW1lYW5zKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZ2dyaWRnZXMpCmxpYnJhcnkoZ2dkaXN0KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHJlc2hhcGUyKQpsaWJyYXJ5KEdHYWxseSkKbGlicmFyeShmb3JjYXRzKQpgYGAKCmBgYHtyIFNldCBEZWZhdWx0c30KdGhlbWVfc2V0KAogIHRoZW1lX21pbmltYWwoKQopCmFfcG9zdGVyaW9yaSA8LSBmdW5jdGlvbihhZmV4X2Fvdiwgc2lnX2xldmVsID0gLjA1KSB7CiAgZmFjdG9ycyAgPC0gYXMubGlzdChyb3duYW1lcyhhZmV4X2FvdiRhbm92YV90YWJsZSkpCiAgZm9yIChqIGluIDE6bGVuZ3RoKGZhY3RvcnMpKSB7CiAgICBpZiAoZ3JlcGwoIjoiLCBmYWN0b3JzW1tqXV0pKSB7CiAgICAgIGZhY3RvcnNbW2pdXSA8LSB1bmxpc3Qoc3Ryc3BsaXQoZmFjdG9yc1tbal1dLCAiOiIpKQogICAgfQogIH0KICBwX3ZhbHVlcyA8LSBhZmV4X2FvdiRhbm92YV90YWJsZSRgUHIoPkYpYAogIGZvciAoaSBpbiAxOmxlbmd0aChwX3ZhbHVlcykpIHsKICAgIGlmIChwX3ZhbHVlc1tpXSA8PSBzaWdfbGV2ZWwpIHsKICAgICAgcHJpbnQoZW1tZWFucyhhZmV4X2FvdiwgZmFjdG9yc1tbaV1dLCBjb250ciA9ICJwYWlyd2lzZSIpKQogICAgfQogIH0KfQpgYGAKCmBgYHtyIExvYWQgRGF0YX0KbWFzdGVyX2RpciAgICAgICAgICAgICAgICAgPC0gJ34vSW5zeW5jL0RyaXZlLzAwRUVHL1Byb3llY3Rvcy9IdWVwZS9mZGN5dF8yMDE3L3Jlc3RpbmdfaHVlcGUnCmRhdGFfZGlyICAgICAgICAgICAgICAgICAgIDwtIHBhc3RlKG1hc3Rlcl9kaXIsICdGQUFfcmVzdWx0cycsICBzZXAgPSAnLycpCmFscGhhX3Bvd2VyX2RhdGFfbmFtZSAgICAgIDwtIHBhc3RlKGRhdGFfZGlyLCAnYXZlcmFnZV9hbHBoYV9wb3dlcl85X3RvXzExX3Jlc3RpbmdfM190aW1lcy50eHQnLCBzZXA9Jy8nKQphbHBoYV9wb3dlcl9kYXRhICAgICAgICAgICA8LSByZWFkLnRhYmxlKGFscGhhX3Bvd2VyX2RhdGFfbmFtZSwgaGVhZGVyID0gVFJVRSwgc3RyaXAud2hpdGUgPSBUUlVFLCBzZXAgPSAiXHQiKQpuYW1lcyhhbHBoYV9wb3dlcl9kYXRhKVtuYW1lcyhhbHBoYV9wb3dlcl9kYXRhKSA9PSAnY2hsYWJlbCddIDwtICdFbGVjdHJvZGUnCm5hbWVzKGFscGhhX3Bvd2VyX2RhdGEpW25hbWVzKGFscGhhX3Bvd2VyX2RhdGEpID09ICdFUlBzZXQnXSAgPC0gJ0RhdGFzZXQnCm5hbWVzKGFscGhhX3Bvd2VyX2RhdGEpW25hbWVzKGFscGhhX3Bvd2VyX2RhdGEpID09ICdiaW5sYWJlbCddICA8LSAnUGVyaW9kJwphbHBoYV9wb3dlcl9kYXRhJFN1YmplY3QgICA8LSBhcy5udW1lcmljKGdzdWIoIi4qPyhbMC05XSspLioiLCAiXFwxIiwgYWxwaGFfcG93ZXJfZGF0YSREYXRhc2V0KSkKYWxwaGFfcG93ZXJfZGF0YSRsb2cxMF91dm9sdHMgPC0gbG9nMTAoYWxwaGFfcG93ZXJfZGF0YSR2YWx1ZSkKYWxwaGFfcG93ZXJfZGF0YSREYXRhc2V0ICAgPC0gZmFjdG9yKGFscGhhX3Bvd2VyX2RhdGEkRGF0YXNldCkKYWxwaGFfcG93ZXJfZGF0YSRFbGVjdHJvZGUgPC0gZmFjdG9yKGFscGhhX3Bvd2VyX2RhdGEkRWxlY3Ryb2RlKQphbHBoYV9wb3dlcl9kYXRhJFN1YmplY3QgICA8LSBmYWN0b3IoYWxwaGFfcG93ZXJfZGF0YSRTdWJqZWN0KQphbHBoYV9wb3dlcl9kYXRhJFBlcmlvZCAgICA8LSBmYWN0b3IoYWxwaGFfcG93ZXJfZGF0YSRQZXJpb2QsIGxldmVscyA9IGMoImJlZ2lubmluZyIsICJtaWRkbGUiLCAiZW5kIikpCmFscGhhX3Bvd2VyX2RhdGEkaGVtaXNwaGVyZVthbHBoYV9wb3dlcl9kYXRhJEVsZWN0cm9kZSAlaW4lIGMoJ0UwOTMtRnAxJywgICdFMDkyLUFGM2EnLCAgJ0UwOTQtQUY3JywgICdFMDg5LUYxYScsICAnRTEwMC1GM2EnLCAgJ0UxMDEtRjVhJywgICdFMTAzLUY3JywgICdFMDg4LUZDMWEnKV0gPC0gJ0xlZnQnCmFscGhhX3Bvd2VyX2RhdGEkaGVtaXNwaGVyZVthbHBoYV9wb3dlcl9kYXRhJEVsZWN0cm9kZSAlaW4lIGMoJ0UwODAtRnAyJywgICdFMDc5LUFGNGEnLCAgJ0UwNzItQUY4JywgICdFMDc2LUYyYScsICAnRTA2OC1GNGEnLCAgJ0UwNjktRjZhJywgICdFMDcxLUY4JywgICdFMDc1LUZDMmEnKV0gPC0gJ1JpZ2h0JwphbHBoYV9wb3dlcl9kYXRhJGhlbWlzcGhlcmUgPC0gZmFjdG9yKGFscGhhX3Bvd2VyX2RhdGEkaGVtaXNwaGVyZSkKYWxwaGFfcG93ZXJfZGF0YSRlbGVjdHJvZGVfcGFpclthbHBoYV9wb3dlcl9kYXRhJEVsZWN0cm9kZSAlaW4lIGMoJ0UwOTMtRnAxJyAsICdFMDgwLUZwMicpXSAgPC0gJ0ZwMS1GcDInCmFscGhhX3Bvd2VyX2RhdGEkZWxlY3Ryb2RlX3BhaXJbYWxwaGFfcG93ZXJfZGF0YSRFbGVjdHJvZGUgJWluJSBjKCdFMDkyLUFGM2EnLCAnRTA3OS1BRjRhJyldIDwtICdBRjMtQUY0JwphbHBoYV9wb3dlcl9kYXRhJGVsZWN0cm9kZV9wYWlyW2FscGhhX3Bvd2VyX2RhdGEkRWxlY3Ryb2RlICVpbiUgYygnRTA5NC1BRjcnICwgJ0UwNzItQUY4JyldICA8LSAnQUY3LUFGOCcKYWxwaGFfcG93ZXJfZGF0YSRlbGVjdHJvZGVfcGFpclthbHBoYV9wb3dlcl9kYXRhJEVsZWN0cm9kZSAlaW4lIGMoJ0UwODktRjFhJyAsICdFMDc2LUYyYScpXSAgPC0gJ0YxLUYyJwphbHBoYV9wb3dlcl9kYXRhJGVsZWN0cm9kZV9wYWlyW2FscGhhX3Bvd2VyX2RhdGEkRWxlY3Ryb2RlICVpbiUgYygnRTEwMC1GM2EnICwgJ0UwNjgtRjRhJyldICA8LSAnRjMtRjQnCmFscGhhX3Bvd2VyX2RhdGEkZWxlY3Ryb2RlX3BhaXJbYWxwaGFfcG93ZXJfZGF0YSRFbGVjdHJvZGUgJWluJSBjKCdFMTAxLUY1YScgLCAnRTA2OS1GNmEnKV0gIDwtICdGNS1GNicKYWxwaGFfcG93ZXJfZGF0YSRlbGVjdHJvZGVfcGFpclthbHBoYV9wb3dlcl9kYXRhJEVsZWN0cm9kZSAlaW4lIGMoJ0UxMDMtRjcnICAsICdFMDcxLUY4JyldICAgPC0gJ0Y3LUY4JwphbHBoYV9wb3dlcl9kYXRhJGVsZWN0cm9kZV9wYWlyW2FscGhhX3Bvd2VyX2RhdGEkRWxlY3Ryb2RlICVpbiUgYygnRTA4OC1GQzFhJywgJ0UwNzUtRkMyYScpXSA8LSAnRkMxLUZDMicKYWxwaGFfcG93ZXJfZGF0YSRlbGVjdHJvZGVfcGFpciA8LSBmYWN0b3IoYWxwaGFfcG93ZXJfZGF0YSRlbGVjdHJvZGVfcGFpciwgbGV2ZWxzID0gYygnRnAxLUZwMicsICdBRjMtQUY0JywgJ0FGNy1BRjgnLCAnRjEtRjInLCAnRjMtRjQnLCdGNS1GNicsICdGNy1GOCcsICdGQzEtRkMyJykpCmdyb3VwX2lkICAgPC0gcmVhZC50YWJsZSgiL2hvbWUvYWx2YXJvL0luc3luYy9Ecml2ZS8wMEVFRy9Qcm95ZWN0b3MvSHVlcGUvZmRjeXRfMjAxNy9SZWdpc3Ryby1FdmFsdWFjaW9uZXMtRkRDWVQtREgtMjAxNyAtIEdlbmVyYWwgQU5PTklNTy5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gIiwiLCBoZWFkZXIgPSBUUlVFLCBjb2wubmFtZXMgPSBjKCJmdWxsLmlkIiwgIlN1YmplY3QiLCAiU2V4IiwgIkdyb3VwIiwgIlN0cmVzcyIpKQpncm91cF9pZCRTZXggICAgICAgICAgIDwtIGZhY3Rvcihncm91cF9pZCRTZXgpCmdyb3VwX2lkJEdyb3VwICAgICAgICAgPC0gZmFjdG9yKGdyb3VwX2lkJEdyb3VwKQpsZXZlbHMoZ3JvdXBfaWQkU2V4KSAgIDwtIGxpc3QoZmVtYWxlICA9ICJGIiwgbWFsZSAgPSAiTSIpCmxldmVscyhncm91cF9pZCRHcm91cCkgPC0gbGlzdChpbnZ1bG5lcmFibGUgID0gIkNOIiwgdnVsbmVyYWJsZSAgPSAiRVgiKQpncm91cF9pZCAgICAgICAgICAgICAgIDwtIGdyb3VwX2lkW2MoJ1N1YmplY3QnLCAnR3JvdXAnLCAnU2V4JyldCmFscGhhX3Bvd2VyX2RhdGEgICAgICAgPC0gbWVyZ2UoYWxwaGFfcG93ZXJfZGF0YSwgZ3JvdXBfaWQsIGJ5ID0gJ1N1YmplY3QnKQp3cml0ZS5jc3YoYWxwaGFfcG93ZXJfZGF0YSwgIHBhc3RlKGRhdGFfZGlyLCAnL2FscGhhX3Bvd2VyX2RhdGFfY2xlYW5fb2xkKGJhZClfc3R5bGUuY3N2Jywgc2VwID0gJycpLCAgcm93Lm5hbWVzID0gRkFMU0UpCmFzeW1tZXRyeV9GcDJfRnAxIDwtIGMoKQphc3ltbWV0cnlfQUY0X0FGMyA8LSBjKCkKYXN5bW1ldHJ5X0FGOF9BRjcgPC0gYygpCmFzeW1tZXRyeV9GMl9GMSAgIDwtIGMoKQphc3ltbWV0cnlfRjRfRjMgICA8LSBjKCkKYXN5bW1ldHJ5X0Y2X0Y1ICAgPC0gYygpCmFzeW1tZXRyeV9GOF9GNyAgIDwtIGMoKQphc3ltbWV0cnlfRkMyX0ZDMSA8LSBjKCkKU3ViamVjdCAgICAgICAgICAgPC0gYygpClBlcmlvZCAgICAgICAgICAgIDwtIGMoKQpzdWJqZWN0b3MgPC0gbGV2ZWxzKGFscGhhX3Bvd2VyX2RhdGEkU3ViamVjdCkKcGVyaW9kb3MgIDwtIGxldmVscyhhbHBoYV9wb3dlcl9kYXRhJFBlcmlvZCkKZm9yIChzdWJqIGluIHN1YmplY3RvcykgewogIGZvciAocGFydCBpbiBwZXJpb2RvcykgewogICAgc3ViamVjdF9kYXRhIDwtIHN1YnNldChhbHBoYV9wb3dlcl9kYXRhLCBTdWJqZWN0ID09IHN1YmogJiBQZXJpb2QgPT0gcGFydCkKICAgIFN1YmplY3QgICAgICAgICAgIDwtIGMoU3ViamVjdCwgYXMuY2hhcmFjdGVyKHN1YmplY3RfZGF0YSRTdWJqZWN0WzFdKSkKICAgIFBlcmlvZCAgICAgICAgICAgIDwtIGMoUGVyaW9kLCBhcy5jaGFyYWN0ZXIoc3ViamVjdF9kYXRhJFBlcmlvZFsxXSkpCiAgICBhc3ltbWV0cnlfRnAyX0ZwMSA8LSBjKGFzeW1tZXRyeV9GcDJfRnAxLCBzdWJqZWN0X2RhdGFbd2hpY2goc3ViamVjdF9kYXRhJEVsZWN0cm9kZSA9PSAnRTA4MC1GcDInKSAsIDEwXSAtIHN1YmplY3RfZGF0YVt3aGljaChzdWJqZWN0X2RhdGEkRWxlY3Ryb2RlPT0nRTA5My1GcDEnKSAsIDEwXSkKICAgIGFzeW1tZXRyeV9BRjRfQUYzIDwtIGMoYXN5bW1ldHJ5X0FGNF9BRjMsIHN1YmplY3RfZGF0YVt3aGljaChzdWJqZWN0X2RhdGEkRWxlY3Ryb2RlID09ICdFMDc5LUFGNGEnKSwgMTBdIC0gc3ViamVjdF9kYXRhW3doaWNoKHN1YmplY3RfZGF0YSRFbGVjdHJvZGU9PSdFMDkyLUFGM2EnKSwgMTBdKQogICAgYXN5bW1ldHJ5X0FGOF9BRjcgPC0gYyhhc3ltbWV0cnlfQUY4X0FGNywgc3ViamVjdF9kYXRhW3doaWNoKHN1YmplY3RfZGF0YSRFbGVjdHJvZGUgPT0gJ0UwNzItQUY4JykgLCAxMF0gLSBzdWJqZWN0X2RhdGFbd2hpY2goc3ViamVjdF9kYXRhJEVsZWN0cm9kZT09J0UwOTQtQUY3JykgLCAxMF0pCiAgICBhc3ltbWV0cnlfRjJfRjEgICA8LSBjKGFzeW1tZXRyeV9GMl9GMSAgLCBzdWJqZWN0X2RhdGFbd2hpY2goc3ViamVjdF9kYXRhJEVsZWN0cm9kZSA9PSAnRTA3Ni1GMmEnKSAsIDEwXSAtIHN1YmplY3RfZGF0YVt3aGljaChzdWJqZWN0X2RhdGEkRWxlY3Ryb2RlPT0nRTA4OS1GMWEnKSAsIDEwXSkKICAgIGFzeW1tZXRyeV9GNF9GMyAgIDwtIGMoYXN5bW1ldHJ5X0Y0X0YzICAsIHN1YmplY3RfZGF0YVt3aGljaChzdWJqZWN0X2RhdGEkRWxlY3Ryb2RlID09ICdFMDY4LUY0YScpICwgMTBdIC0gc3ViamVjdF9kYXRhW3doaWNoKHN1YmplY3RfZGF0YSRFbGVjdHJvZGU9PSdFMTAwLUYzYScpICwgMTBdKQogICAgYXN5bW1ldHJ5X0Y2X0Y1ICAgPC0gYyhhc3ltbWV0cnlfRjZfRjUgICwgc3ViamVjdF9kYXRhW3doaWNoKHN1YmplY3RfZGF0YSRFbGVjdHJvZGUgPT0gJ0UwNjktRjZhJykgLCAxMF0gLSBzdWJqZWN0X2RhdGFbd2hpY2goc3ViamVjdF9kYXRhJEVsZWN0cm9kZT09J0UxMDEtRjVhJykgLCAxMF0pCiAgICBhc3ltbWV0cnlfRjhfRjcgICA8LSBjKGFzeW1tZXRyeV9GOF9GNyAgLCBzdWJqZWN0X2RhdGFbd2hpY2goc3ViamVjdF9kYXRhJEVsZWN0cm9kZSA9PSAnRTA3MS1GOCcpICAsIDEwXSAtIHN1YmplY3RfZGF0YVt3aGljaChzdWJqZWN0X2RhdGEkRWxlY3Ryb2RlPT0nRTEwMy1GNycpICAsIDEwXSkKICAgIGFzeW1tZXRyeV9GQzJfRkMxIDwtIGMoYXN5bW1ldHJ5X0ZDMl9GQzEsIHN1YmplY3RfZGF0YVt3aGljaChzdWJqZWN0X2RhdGEkRWxlY3Ryb2RlID09ICdFMDc1LUZDMmEnKSwgMTBdIC0gc3ViamVjdF9kYXRhW3doaWNoKHN1YmplY3RfZGF0YSRFbGVjdHJvZGU9PSdFMDg4LUZDMWEnKSwgMTBdKQogIH0KfQphbHBoYV9hc3ltbWV0cnlfZGF0YSA8LSBkYXRhLmZyYW1lKFN1YmplY3QsIFBlcmlvZCwgYXN5bW1ldHJ5X0ZwMl9GcDEsIGFzeW1tZXRyeV9BRjRfQUYzLCBhc3ltbWV0cnlfQUY4X0FGNywgYXN5bW1ldHJ5X0YyX0YxLCBhc3ltbWV0cnlfRjRfRjMsIGFzeW1tZXRyeV9GNl9GNSwgYXN5bW1ldHJ5X0Y4X0Y3LCBhc3ltbWV0cnlfRkMyX0ZDMSkKYWxwaGFfYXN5bW1ldHJ5X2RhdGEkU3ViamVjdCA8LSBmYWN0b3IoYWxwaGFfYXN5bW1ldHJ5X2RhdGEkU3ViamVjdCkKYWxwaGFfYXN5bW1ldHJ5X2RhdGEkUGVyaW9kIDwtIGZhY3RvcihhbHBoYV9hc3ltbWV0cnlfZGF0YSRQZXJpb2QsIGxldmVscyA9IGMoImJlZ2lubmluZyIsICJtaWRkbGUiLCAiZW5kIikpCmFscGhhX2FzeW1tZXRyeV9kYXRhIDwtIG1lcmdlKGFscGhhX2FzeW1tZXRyeV9kYXRhLCBncm91cF9pZCwgYnkgPSAnU3ViamVjdCcpCndyaXRlLmNzdihhbHBoYV9hc3ltbWV0cnlfZGF0YSwgIHBhc3RlKGRhdGFfZGlyLCAnL2FscGhhX2FzeW1tZXRyeV9kYXRhX2NsZWFuX29sZChiYWQpX3N0eWxlLmNzdicsIHNlcCA9ICcnKSwgIHJvdy5uYW1lcyA9IEZBTFNFKQpgYGAKIyBTcGVjdHJhbCBkZWNvbXBvc2l0aW9uCi0gSW5maW5pdHkgUmVmZXJlbmNlIG9yIFJlZmVyZW5jZSBFbGVjdHJvZGUgU3RhbmRhcmRpemF0aW9uIFRlY2huaXF1ZSAoUkVTVCkuXAotIDEyMCBjb25zZWN1dGl2ZSBzZWdtZW50cywgNSBzZWNvbmRzIGVhY2guXAotICoqMyBQZXJpb2RzLCA0MCBzZWdtZW50cyBlYWNoKiouXAotIFBTRCBjb21wdXRlZCB3aXRoIFdlbGNoJ3MgbWV0aG9kLgoKIyMgU2NhbHAgTWFwLCBtZWFuIHBvd2VyIGByIGFscGhhX3Bvd2VyX2RhdGEkd29ya2xhdFsxXWAgSHoKIVtdKFJFU1RfUFNEX3NjYWxwXzNfdGltZXMucG5nKQoKIyMgUFNEIHRvcG9ncmFwaHksIDEgdG8gNTUgSHosIGdyYW5kIGF2ZXJhZ2UKIVtdKFJFU1RfUFNEX3RvcG9ncmFwaHkucG5nKQoKIyMgUFNEIHRvcG9ncmFwaHksIDQgdG8gMzAgSHosIGdyYW5kIGF2ZXJhZ2UKIVtdKFJFU1RfUFNEX3RvcG9ncmFwaHlfNF90b18zMF9Iei5wbmcpCgojIyBGcm9udGFsIEVsZWN0cm9kZXMsIDQgdG8gMzAgSHosIGdyYW5kIGF2ZXJhZ2UKLSAyIHN0YW5kYXJkIGVycm9yIGJhbmRzCiFbRnJvbnRhbCBlbGVjdHJvZGVzXShSRVNUX1BTRF80X3RvXzMwX0h6XzNfdGltZXMucG5nKQoKIyBHZW5lcmFsIERlc2NyaXB0aW9uCmBgYHtyIGdlbmVyYWwsIGZpZy53aWR0aCA9IDEyfQpvcHRpb25zKHdpZHRoID0gMTAwKQpzdW1tYXJ5KGFscGhhX2FzeW1tZXRyeV9kYXRhKQphc3ltbWV0cnlfcGFpcnMgPC0gYygnYXN5bW1ldHJ5X0ZwMl9GcDEnLCAnYXN5bW1ldHJ5X0FGNF9BRjMnLCAnYXN5bW1ldHJ5X0FGOF9BRjcnLCAnYXN5bW1ldHJ5X0YyX0YxJywgJ2FzeW1tZXRyeV9GNF9GMycsICdhc3ltbWV0cnlfRjZfRjUnLCAnYXN5bW1ldHJ5X0Y4X0Y3JywgJ2FzeW1tZXRyeV9GQzJfRkMxJykKYXN5bW1ldHJ5X3BhaXJzX3BhaXJzIDwtIGdncGFpcnMoYWxwaGFfYXN5bW1ldHJ5X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IGFzeW1tZXRyeV9wYWlycywKICAgICAgICAgICAgICAgICAgICAgICBhZXMoY29sb3VyID0gUGVyaW9kLCBhbHBoYSA9IC4yNSksCiAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3MgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IHdyYXAoInBvaW50cyIpKSkKc3VwcHJlc3NXYXJuaW5ncyhwcmludChhc3ltbWV0cnlfcGFpcnNfcGFpcnMpKQpgYGAKCiMgQWxwaGEgQXN5bW1ldHJ5LCBgciBhbHBoYV9wb3dlcl9kYXRhJHdvcmtsYXRbMV1gIEh6CiMjIEZwMi1GcDEgcGFpcgoKYGBge3IgYXN5bW1ldHJ5X0ZwMl9GcDEsIGZpZy53aWR0aCA9IDEyfQpvcHRpb25zKHdpZHRoID0gMTAwKQphbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhID0gYW92X2V6KCJTdWJqZWN0IiwgImFzeW1tZXRyeV9GcDJfRnAxIiwgYWxwaGFfYXN5bW1ldHJ5X2RhdGEsIGJldHdlZW4gPSBjKCJHcm91cCIsICJTZXgiKSwgd2l0aGluID0gIlBlcmlvZCIpCm15dGFibGUgPC0geHRhYnMofiBHcm91cCArIFNleCwgZGF0YSA9IGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEkZGF0YSRsb25nKSAvIGxlbmd0aCh1bmlxdWUoYWxwaGFfYXN5bW1ldHJ5X2RhdGEkUGVyaW9kKSkKZnRhYmxlKGFkZG1hcmdpbnMobXl0YWJsZSkpCmFscGhhX2FzeW1tZXRyeV9yYWluIDwtIGdncGxvdChhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhJGRhdGEkbG9uZywgYWVzKHkgPSBhc3ltbWV0cnlfRnAyX0ZwMSwgeCA9IEdyb3VwLCBjb2xvciA9IFNleCwgZmlsbCA9IFNleCkpICsKICAjIGdndGl0bGUoImFscGhhX2FzeW1tZXRyeSIpICsKICB5bGFiKCJwb3dlciIpICsKICBzdGF0X2hhbGZleWUoCiAgICB0cmltICAgPSBGQUxTRSwgCiAgICBhZGp1c3QgPSAxLCAKICAgIC53aWR0aCA9IDAsIAogICAganVzdGlmaWNhdGlvbiA9IC0uMTUsIAogICAgYWxwaGEgID0gLjUsCiAgICBwb2ludF9jb2xvdXIgPSBOQSkgKyAKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0nbm9uZScpCiAgIyBnZW9tX2JveHBsb3Qod2lkdGggPSAuMTUsIGFscGhhID0gLjIsIG91dGxpZXIuc2hhcGUgPSBOQSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsIGFscGhhID0gLjQsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKHdpZHRoID0gLjA1LCBoZWlnaHQgPSAwKSkgCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X3JhaW4pKQphbHBoYV9hc3ltbWV0cnlfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSwKICAgIHggPSAiUGVyaW9kIiwKICAgIHRyYWNlID0gIlNleCIsCiAgICBwYW5lbCA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMSksCiAgICBkb2RnZSA9IC0uNSwKICAgIG1hcHBpbmcgPSBjKCJjb2xvciIpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X2FmZXhfcGxvdCkpCm5pY2UoYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEpCmBgYAoKIyMgQUY0LUFGMyBwYWlyCgpgYGB7ciBhc3ltbWV0cnlfQUY0X0FGMywgZmlnLndpZHRoID0gMTJ9Cm9wdGlvbnMod2lkdGggPSAxMDApCmFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEgPSBhb3ZfZXooIlN1YmplY3QiLCAiYXN5bW1ldHJ5X0FGNF9BRjMiLCBhbHBoYV9hc3ltbWV0cnlfZGF0YSwgYmV0d2VlbiA9IGMoIkdyb3VwIiwgIlNleCIpLCB3aXRoaW4gPSAiUGVyaW9kIikKbXl0YWJsZSA8LSB4dGFicyh+IEdyb3VwICsgU2V4LCBkYXRhID0gYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSRkYXRhJGxvbmcpIC8gbGVuZ3RoKHVuaXF1ZShhbHBoYV9hc3ltbWV0cnlfZGF0YSRQZXJpb2QpKQpmdGFibGUoYWRkbWFyZ2lucyhteXRhYmxlKSkKYWxwaGFfYXN5bW1ldHJ5X3JhaW4gPC0gZ2dwbG90KGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEkZGF0YSRsb25nLCBhZXMoeSA9IGFzeW1tZXRyeV9BRjRfQUYzLCB4ID0gR3JvdXAsIGNvbG9yID0gU2V4LCBmaWxsID0gU2V4KSkgKwogICMgZ2d0aXRsZSgiYWxwaGFfYXN5bW1ldHJ5IikgKwogIHlsYWIoInBvd2VyIikgKwogIHN0YXRfaGFsZmV5ZSgKICAgIHRyaW0gICA9IEZBTFNFLCAKICAgIGFkanVzdCA9IDEsIAogICAgLndpZHRoID0gMCwgCiAgICBqdXN0aWZpY2F0aW9uID0gLS4xNSwgCiAgICBhbHBoYSAgPSAuNSwKICAgIHBvaW50X2NvbG91ciA9IE5BKSArIAogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSdub25lJykKICAjIGdlb21fYm94cGxvdCh3aWR0aCA9IC4xNSwgYWxwaGEgPSAuMiwgb3V0bGllci5zaGFwZSA9IE5BKSArCiAgZ2VvbV9wb2ludChzaXplID0gMiwgYWxwaGEgPSAuNCwgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIod2lkdGggPSAuMDUsIGhlaWdodCA9IDApKSAKc3VwcHJlc3NXYXJuaW5ncyhwcmludChhbHBoYV9hc3ltbWV0cnlfcmFpbikpCmFscGhhX2FzeW1tZXRyeV9hZmV4X3Bsb3QgPC0KICBhZmV4X3Bsb3QoCiAgICBhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhLAogICAgeCA9ICJQZXJpb2QiLAogICAgdHJhY2UgPSAiU2V4IiwKICAgIHBhbmVsID0gIkdyb3VwIiwKICAgIGVycm9yID0gImJldHdlZW4iLAogICAgZXJyb3JfYXJnID0gbGlzdCh3aWR0aCA9IC4xKSwKICAgIGRvZGdlID0gLS41LAogICAgbWFwcGluZyA9IGMoImNvbG9yIiksCiAgICBwb2ludF9hcmcgPSBsaXN0KHNpemUgPSA0KQogICkKc3VwcHJlc3NXYXJuaW5ncyhwcmludChhbHBoYV9hc3ltbWV0cnlfYWZleF9wbG90KSkKbmljZShhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhKQphX3Bvc3RlcmlvcmkoYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSkKYGBgCgojIyBBRjgtQUY3IHBhaXIKCmBgYHtyIGFzeW1tZXRyeV9BRjhfQUY3LCBmaWcud2lkdGggPSAxMn0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSA9IGFvdl9leigiU3ViamVjdCIsICJhc3ltbWV0cnlfQUY4X0FGNyIsIGFscGhhX2FzeW1tZXRyeV9kYXRhLCBiZXR3ZWVuID0gYygiR3JvdXAiLCAiU2V4IiksIHdpdGhpbiA9ICJQZXJpb2QiKQpteXRhYmxlIDwtIHh0YWJzKH4gR3JvdXAgKyBTZXgsIGRhdGEgPSBhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhJGRhdGEkbG9uZykgLyBsZW5ndGgodW5pcXVlKGFscGhhX2FzeW1tZXRyeV9kYXRhJFBlcmlvZCkpCmZ0YWJsZShhZGRtYXJnaW5zKG15dGFibGUpKQphbHBoYV9hc3ltbWV0cnlfcmFpbiA8LSBnZ3Bsb3QoYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSRkYXRhJGxvbmcsIGFlcyh5ID0gYXN5bW1ldHJ5X0FGOF9BRjcsIHggPSBHcm91cCwgY29sb3IgPSBTZXgsIGZpbGwgPSBTZXgpKSArCiAgIyBnZ3RpdGxlKCJhbHBoYV9hc3ltbWV0cnkiKSArCiAgeWxhYigicG93ZXIiKSArCiAgc3RhdF9oYWxmZXllKAogICAgdHJpbSAgID0gRkFMU0UsIAogICAgYWRqdXN0ID0gMSwgCiAgICAud2lkdGggPSAwLCAKICAgIGp1c3RpZmljYXRpb24gPSAtLjE1LCAKICAgIGFscGhhICA9IC41LAogICAgcG9pbnRfY29sb3VyID0gTkEpICsgCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQogICMgZ2VvbV9ib3hwbG90KHdpZHRoID0gLjE1LCBhbHBoYSA9IC4yLCBvdXRsaWVyLnNoYXBlID0gTkEpICsKICBnZW9tX3BvaW50KHNpemUgPSAyLCBhbHBoYSA9IC40LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcih3aWR0aCA9IC4wNSwgaGVpZ2h0ID0gMCkpIApzdXBwcmVzc1dhcm5pbmdzKHByaW50KGFscGhhX2FzeW1tZXRyeV9yYWluKSkKYWxwaGFfYXN5bW1ldHJ5X2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEsCiAgICB4ID0gIlBlcmlvZCIsCiAgICB0cmFjZSA9ICJTZXgiLAogICAgcGFuZWwgPSAiR3JvdXAiLAogICAgZXJyb3IgPSAiYmV0d2VlbiIsCiAgICBlcnJvcl9hcmcgPSBsaXN0KHdpZHRoID0gLjEpLAogICAgZG9kZ2UgPSAtLjUsCiAgICBtYXBwaW5nID0gYygiY29sb3IiKSwKICAgIHBvaW50X2FyZyA9IGxpc3Qoc2l6ZSA9IDQpCiAgKQpzdXBwcmVzc1dhcm5pbmdzKHByaW50KGFscGhhX2FzeW1tZXRyeV9hZmV4X3Bsb3QpKQpuaWNlKGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhKQpgYGAKIyMgRjItRjEgcGFpcgoKYGBge3IgYXN5bW1ldHJ5X0YyX0YxLCBmaWcud2lkdGggPSAxMn0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSA9IGFvdl9leigiU3ViamVjdCIsICJhc3ltbWV0cnlfRjJfRjEiLCBhbHBoYV9hc3ltbWV0cnlfZGF0YSwgYmV0d2VlbiA9IGMoIkdyb3VwIiwgIlNleCIpLCB3aXRoaW4gPSAiUGVyaW9kIikKbXl0YWJsZSA8LSB4dGFicyh+IEdyb3VwICsgU2V4LCBkYXRhID0gYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSRkYXRhJGxvbmcpIC8gbGVuZ3RoKHVuaXF1ZShhbHBoYV9hc3ltbWV0cnlfZGF0YSRQZXJpb2QpKQpmdGFibGUoYWRkbWFyZ2lucyhteXRhYmxlKSkKYWxwaGFfYXN5bW1ldHJ5X3JhaW4gPC0gZ2dwbG90KGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEkZGF0YSRsb25nLCBhZXMoeSA9IGFzeW1tZXRyeV9GMl9GMSwgeCA9IEdyb3VwLCBjb2xvciA9IFNleCwgZmlsbCA9IFNleCkpICsKICAjIGdndGl0bGUoImFscGhhX2FzeW1tZXRyeSIpICsKICB5bGFiKCJwb3dlciIpICsKICBzdGF0X2hhbGZleWUoCiAgICB0cmltICAgPSBGQUxTRSwgCiAgICBhZGp1c3QgPSAxLCAKICAgIC53aWR0aCA9IDAsIAogICAganVzdGlmaWNhdGlvbiA9IC0uMTUsIAogICAgYWxwaGEgID0gLjUsCiAgICBwb2ludF9jb2xvdXIgPSBOQSkgKyAKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0nbm9uZScpCiAgIyBnZW9tX2JveHBsb3Qod2lkdGggPSAuMTUsIGFscGhhID0gLjIsIG91dGxpZXIuc2hhcGUgPSBOQSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsIGFscGhhID0gLjQsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKHdpZHRoID0gLjA1LCBoZWlnaHQgPSAwKSkgCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X3JhaW4pKQphbHBoYV9hc3ltbWV0cnlfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSwKICAgIHggPSAiUGVyaW9kIiwKICAgIHRyYWNlID0gIlNleCIsCiAgICBwYW5lbCA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMSksCiAgICBkb2RnZSA9IC0uNSwKICAgIG1hcHBpbmcgPSBjKCJjb2xvciIpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X2FmZXhfcGxvdCkpCm5pY2UoYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEpCmBgYAoKIyMgRjQtRjMgcGFpcgoKYGBge3IgYXN5bW1ldHJ5X0Y0X0YzLCBmaWcud2lkdGggPSAxMn0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSA9IGFvdl9leigiU3ViamVjdCIsICJhc3ltbWV0cnlfRjRfRjMiLCBhbHBoYV9hc3ltbWV0cnlfZGF0YSwgYmV0d2VlbiA9IGMoIkdyb3VwIiwgIlNleCIpLCB3aXRoaW4gPSAiUGVyaW9kIikKbXl0YWJsZSA8LSB4dGFicyh+IEdyb3VwICsgU2V4LCBkYXRhID0gYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSRkYXRhJGxvbmcpIC8gbGVuZ3RoKHVuaXF1ZShhbHBoYV9hc3ltbWV0cnlfZGF0YSRQZXJpb2QpKQpmdGFibGUoYWRkbWFyZ2lucyhteXRhYmxlKSkKYWxwaGFfYXN5bW1ldHJ5X3JhaW4gPC0gZ2dwbG90KGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEkZGF0YSRsb25nLCBhZXMoeSA9IGFzeW1tZXRyeV9GNF9GMywgeCA9IEdyb3VwLCBjb2xvciA9IFNleCwgZmlsbCA9IFNleCkpICsKICAjIGdndGl0bGUoImFscGhhX2FzeW1tZXRyeSIpICsKICB5bGFiKCJwb3dlciIpICsKICBzdGF0X2hhbGZleWUoCiAgICB0cmltICAgPSBGQUxTRSwgCiAgICBhZGp1c3QgPSAxLCAKICAgIC53aWR0aCA9IDAsIAogICAganVzdGlmaWNhdGlvbiA9IC0uMTUsIAogICAgYWxwaGEgID0gLjUsCiAgICBwb2ludF9jb2xvdXIgPSBOQSkgKyAKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0nbm9uZScpCiAgIyBnZW9tX2JveHBsb3Qod2lkdGggPSAuMTUsIGFscGhhID0gLjIsIG91dGxpZXIuc2hhcGUgPSBOQSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsIGFscGhhID0gLjQsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKHdpZHRoID0gLjA1LCBoZWlnaHQgPSAwKSkgCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X3JhaW4pKQphbHBoYV9hc3ltbWV0cnlfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSwKICAgIHggPSAiUGVyaW9kIiwKICAgIHRyYWNlID0gIlNleCIsCiAgICBwYW5lbCA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMSksCiAgICBkb2RnZSA9IC0uNSwKICAgIG1hcHBpbmcgPSBjKCJjb2xvciIpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X2FmZXhfcGxvdCkpCm5pY2UoYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEpCmBgYAoKIyMgRjYtRjUgcGFpcgoKYGBge3IgYXN5bW1ldHJ5X0Y2X0Y1LCBmaWcud2lkdGggPSAxMn0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkKYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSA9IGFvdl9leigiU3ViamVjdCIsICJhc3ltbWV0cnlfRjZfRjUiLCBhbHBoYV9hc3ltbWV0cnlfZGF0YSwgYmV0d2VlbiA9IGMoIkdyb3VwIiwgIlNleCIpLCB3aXRoaW4gPSAiUGVyaW9kIikKbXl0YWJsZSA8LSB4dGFicyh+IEdyb3VwICsgU2V4LCBkYXRhID0gYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSRkYXRhJGxvbmcpIC8gbGVuZ3RoKHVuaXF1ZShhbHBoYV9hc3ltbWV0cnlfZGF0YSRQZXJpb2QpKQpmdGFibGUoYWRkbWFyZ2lucyhteXRhYmxlKSkKYWxwaGFfYXN5bW1ldHJ5X3JhaW4gPC0gZ2dwbG90KGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEkZGF0YSRsb25nLCBhZXMoeSA9IGFzeW1tZXRyeV9GNl9GNSwgeCA9IEdyb3VwLCBjb2xvciA9IFNleCwgZmlsbCA9IFNleCkpICsKICAjIGdndGl0bGUoImFscGhhX2FzeW1tZXRyeSIpICsKICB5bGFiKCJwb3dlciIpICsKICBzdGF0X2hhbGZleWUoCiAgICB0cmltICAgPSBGQUxTRSwgCiAgICBhZGp1c3QgPSAxLCAKICAgIC53aWR0aCA9IDAsIAogICAganVzdGlmaWNhdGlvbiA9IC0uMTUsIAogICAgYWxwaGEgID0gLjUsCiAgICBwb2ludF9jb2xvdXIgPSBOQSkgKyAKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0nbm9uZScpCiAgIyBnZW9tX2JveHBsb3Qod2lkdGggPSAuMTUsIGFscGhhID0gLjIsIG91dGxpZXIuc2hhcGUgPSBOQSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsIGFscGhhID0gLjQsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKHdpZHRoID0gLjA1LCBoZWlnaHQgPSAwKSkgCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X3JhaW4pKQphbHBoYV9hc3ltbWV0cnlfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSwKICAgIHggPSAiUGVyaW9kIiwKICAgIHRyYWNlID0gIlNleCIsCiAgICBwYW5lbCA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMSksCiAgICBkb2RnZSA9IC0uNSwKICAgIG1hcHBpbmcgPSBjKCJjb2xvciIpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X2FmZXhfcGxvdCkpCm5pY2UoYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEpCmBgYAoKIyMgRjgtRjcgcGFpcgoKYGBge3IgYWFzeW1tZXRyeV9GOF9GNywgZmlnLndpZHRoID0gMTJ9Cm9wdGlvbnMod2lkdGggPSAxMDApCmFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEgPSBhb3ZfZXooIlN1YmplY3QiLCAiYXN5bW1ldHJ5X0Y4X0Y3IiwgYWxwaGFfYXN5bW1ldHJ5X2RhdGEsIGJldHdlZW4gPSBjKCJHcm91cCIsICJTZXgiKSwgd2l0aGluID0gIlBlcmlvZCIpCm15dGFibGUgPC0geHRhYnMofiBHcm91cCArIFNleCwgZGF0YSA9IGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEkZGF0YSRsb25nKSAvIGxlbmd0aCh1bmlxdWUoYWxwaGFfYXN5bW1ldHJ5X2RhdGEkUGVyaW9kKSkKZnRhYmxlKGFkZG1hcmdpbnMobXl0YWJsZSkpCmFscGhhX2FzeW1tZXRyeV9yYWluIDwtIGdncGxvdChhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhJGRhdGEkbG9uZywgYWVzKHkgPSBhc3ltbWV0cnlfRjhfRjcsIHggPSBHcm91cCwgY29sb3IgPSBTZXgsIGZpbGwgPSBTZXgpKSArCiAgIyBnZ3RpdGxlKCJhbHBoYV9hc3ltbWV0cnkiKSArCiAgeWxhYigicG93ZXIiKSArCiAgc3RhdF9oYWxmZXllKAogICAgdHJpbSAgID0gRkFMU0UsIAogICAgYWRqdXN0ID0gMSwgCiAgICAud2lkdGggPSAwLCAKICAgIGp1c3RpZmljYXRpb24gPSAtLjE1LCAKICAgIGFscGhhICA9IC41LAogICAgcG9pbnRfY29sb3VyID0gTkEpICsgCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQogICMgZ2VvbV9ib3hwbG90KHdpZHRoID0gLjE1LCBhbHBoYSA9IC4yLCBvdXRsaWVyLnNoYXBlID0gTkEpICsKICBnZW9tX3BvaW50KHNpemUgPSAyLCBhbHBoYSA9IC40LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcih3aWR0aCA9IC4wNSwgaGVpZ2h0ID0gMCkpIApzdXBwcmVzc1dhcm5pbmdzKHByaW50KGFscGhhX2FzeW1tZXRyeV9yYWluKSkKYWxwaGFfYXN5bW1ldHJ5X2FmZXhfcGxvdCA8LQogIGFmZXhfcGxvdCgKICAgIGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEsCiAgICB4ID0gIlBlcmlvZCIsCiAgICB0cmFjZSA9ICJTZXgiLAogICAgcGFuZWwgPSAiR3JvdXAiLAogICAgZXJyb3IgPSAiYmV0d2VlbiIsCiAgICBlcnJvcl9hcmcgPSBsaXN0KHdpZHRoID0gLjEpLAogICAgZG9kZ2UgPSAtLjUsCiAgICBtYXBwaW5nID0gYygiY29sb3IiKSwKICAgIHBvaW50X2FyZyA9IGxpc3Qoc2l6ZSA9IDQpCiAgKQpzdXBwcmVzc1dhcm5pbmdzKHByaW50KGFscGhhX2FzeW1tZXRyeV9hZmV4X3Bsb3QpKQpuaWNlKGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEpCmFfcG9zdGVyaW9yaShhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhKQpgYGAKCiMjIEZDMi1GQzEgcGFpcgoKYGBge3IgYXN5bW1ldHJ5X0ZDMl9GQzEsIGZpZy53aWR0aCA9IDEyfQpvcHRpb25zKHdpZHRoID0gMTAwKQphbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhID0gYW92X2V6KCJTdWJqZWN0IiwgImFzeW1tZXRyeV9GQzJfRkMxIiwgYWxwaGFfYXN5bW1ldHJ5X2RhdGEsIGJldHdlZW4gPSBjKCJHcm91cCIsICJTZXgiKSwgd2l0aGluID0gIlBlcmlvZCIpCm15dGFibGUgPC0geHRhYnMofiBHcm91cCArIFNleCwgZGF0YSA9IGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEkZGF0YSRsb25nKSAvIGxlbmd0aCh1bmlxdWUoYWxwaGFfYXN5bW1ldHJ5X2RhdGEkUGVyaW9kKSkKZnRhYmxlKGFkZG1hcmdpbnMobXl0YWJsZSkpCmFscGhhX2FzeW1tZXRyeV9yYWluIDwtIGdncGxvdChhbHBoYV9hc3ltbWV0cnlfcmVwX2Fub3ZhJGRhdGEkbG9uZywgYWVzKHkgPSBhc3ltbWV0cnlfRkMyX0ZDMSwgeCA9IEdyb3VwLCBjb2xvciA9IFNleCwgZmlsbCA9IFNleCkpICsKICAjIGdndGl0bGUoImFscGhhX2FzeW1tZXRyeSIpICsKICB5bGFiKCJwb3dlciIpICsKICBzdGF0X2hhbGZleWUoCiAgICB0cmltICAgPSBGQUxTRSwgCiAgICBhZGp1c3QgPSAxLCAKICAgIC53aWR0aCA9IDAsIAogICAganVzdGlmaWNhdGlvbiA9IC0uMTUsIAogICAgYWxwaGEgID0gLjUsCiAgICBwb2ludF9jb2xvdXIgPSBOQSkgKyAKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0nbm9uZScpCiAgIyBnZW9tX2JveHBsb3Qod2lkdGggPSAuMTUsIGFscGhhID0gLjIsIG91dGxpZXIuc2hhcGUgPSBOQSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsIGFscGhhID0gLjQsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKHdpZHRoID0gLjA1LCBoZWlnaHQgPSAwKSkgCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X3JhaW4pKQphbHBoYV9hc3ltbWV0cnlfYWZleF9wbG90IDwtCiAgYWZleF9wbG90KAogICAgYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSwKICAgIHggPSAiUGVyaW9kIiwKICAgIHRyYWNlID0gIlNleCIsCiAgICBwYW5lbCA9ICJHcm91cCIsCiAgICBlcnJvciA9ICJiZXR3ZWVuIiwKICAgIGVycm9yX2FyZyA9IGxpc3Qod2lkdGggPSAuMSksCiAgICBkb2RnZSA9IC0uNSwKICAgIG1hcHBpbmcgPSBjKCJjb2xvciIpLAogICAgcG9pbnRfYXJnID0gbGlzdChzaXplID0gNCkKICApCnN1cHByZXNzV2FybmluZ3MocHJpbnQoYWxwaGFfYXN5bW1ldHJ5X2FmZXhfcGxvdCkpCm5pY2UoYWxwaGFfYXN5bW1ldHJ5X3JlcF9hbm92YSkKYV9wb3N0ZXJpb3JpKGFscGhhX2FzeW1tZXRyeV9yZXBfYW5vdmEpCmBgYAo=