This is a notebook containing the R code for the Bilingualism & Alzheimer’s age of onset/incidence analysis.

library(readxl)
library(meta)
library(metafor)
library(units)
require(grid)
library(bayesmeta)
library(dplyr)
library(doBy)
library(ggplot2)
library(ggthemr)
ggthemr("fresh")
all_data <- read_excel("/Users/John/Documents/Collaborations/Collaboration JG KH Meta Analysis Age of Onset/Meta_Analysis_2019.xlsx", sheet = "Age Effect Size")
all_data <- subset(all_data, select = c("Label","Subgroup","Subgroup2","Subgroup3","ES","SE","StudyID")) %>% `colnames<-`(c("Author","Subgroup","Subgroup2","Subgroup3","TE","seTE","StudyID")) %>% filter(complete.cases(.))

prospective_data <- subset(all_data, Subgroup2 =="Prospective")
age_of_onset_data <- subset(all_data, Subgroup3 != "Incidental_Prospective")
sensitive_data <- summaryBy(TE + seTE ~ StudyID,data = as.data.frame(all_data),FUN=c(mean),na.rm=TRUE)

education_data <- read_excel("/Users/John/Documents/Collaborations/Collaboration JG KH Meta Analysis Age of Onset/Meta_Analysis_2019.xlsx", sheet = "Education Effect Size") %>% select(c("Label","ES")) %>%`colnames<-`(c("Author","Education_ES")) %>% merge(all_data, by = "Author",all.x = FALSE) %>% filter(complete.cases(.))

ses_data <- read_excel("/Users/John/Documents/Collaborations/Collaboration JG KH Meta Analysis Age of Onset/Meta_Analysis_2019.xlsx", sheet = "SES Effect Size") %>% select(c("Label","ES")) %>%`colnames<-`(c("Author","SES_ES")) %>% merge(all_data, by = "Author",all.x = FALSE) %>% filter(complete.cases(.))

Now to calculate the meta-analysis…

m.biling<-metagen(TE,
        seTE,
        data=all_data,
        studlab=paste(Author),
        comb.fixed = FALSE,
        comb.random = TRUE,
        method.tau = "HS",
        hakn = FALSE,
        prediction=TRUE,
        sm="SMD")
study.subgroup<-update.meta(m.biling, 
                             byvar=Subgroup, 
                             comb.random = TRUE, 
                             comb.fixed = FALSE)
study.subgroup
##                         SMD            95%-CI %W(random)     Subgroup
## Lawton: Inc., 2015  -0.2656 [-0.7294; 0.1982]        2.9   Incidental
## Nebreda, 2011        0.3655 [-0.6216; 1.3526]        0.9   Incidental
## Sanders: Inc., 2012 -0.1396 [-0.3679; 0.0887]        5.6   Incidental
## Wilson: Inc., 2015   0.3029 [ 0.0627; 0.5431]        5.4   Incidental
## Yeung: Inc., 2014    0.0335 [-0.2020; 0.2690]        5.5   Incidental
## Zahodne, 2014        0.3213 [ 0.1615; 0.4811]        6.6   Incidental
## Alladi, 2013         0.4255 [ 0.2665; 0.5845]        6.6 Age of Onset
## Alladi, 2017         0.3597 [ 0.0671; 0.6523]        4.7 Age of Onset
## Bialystok, 2007      0.4604 [ 0.1676; 0.7532]        4.7 Age of Onset
## Bialystok, 2014      0.7349 [ 0.2663; 1.2035]        2.9 Age of Onset
## Chertkow, 2010       0.1190 [-0.0402; 0.2782]        6.6 Age of Onset
## Clare, 2016          0.3816 [-0.0490; 0.8122]        3.2 Age of Onset
## Craik, 2010          0.5638 [ 0.2885; 0.8391]        4.9 Age of Onset
## Duncan, 2017        -0.2744 [-1.0468; 0.4980]        1.4 Age of Onset
## Iyer, 2014           0.1776 [ 0.0199; 0.3353]        6.6 Age of Onset
## Kowoll, 2016         0.4092 [-0.3155; 1.1339]        1.5 Age of Onset
## Lawton: AoO, 2015    0.2754 [ 0.0000; 0.5508]        4.9 Age of Onset
## Ossher (AV), 2013    0.4814 [ 0.0888; 0.8740]        3.6 Age of Onset
## Perani, 2017         1.2168 [ 0.7533; 1.6803]        2.9 Age of Onset
## Ramakrishnan, 2017   0.7033 [ 0.2298; 1.1768]        2.9 Age of Onset
## Sanders: AoO, 2012   0.1949 [ 0.0824; 0.3074]        7.2 Age of Onset
## Wilson: AoO., 2015   1.1600 [-0.5256; 2.8456]        0.3 Age of Onset
## Woumans, 2015        0.1997 [-0.1399; 0.5393]        4.1 Age of Onset
## Zheng, 2018          0.7802 [ 0.4217; 1.1387]        3.9 Age of Onset
## 
## Number of studies combined: k = 24
## 
##                         SMD            95%-CI    z  p-value
## Random effects model 0.3206 [ 0.2205; 0.4207] 6.28 < 0.0001
## Prediction interval         [-0.0707; 0.7120]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0330; H = 1.79 [1.45; 2.21]; I^2 = 68.9% [52.6%; 79.5%]
## 
## Quantifying residual heterogeneity:
## H = 1.74 [1.40; 2.16]; I^2 = 67.0% [49.0%; 78.7%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  73.84   23 < 0.0001
## 
## Results for subgroups (random effects model):
##                           k    SMD            95%-CI     Q  tau^2   I^2
## Subgroup = Incidental     6 0.1036 [-0.0772; 0.2844] 16.36 0.0271 69.4%
## Subgroup = Age of Onset  18 0.3977 [ 0.2855; 0.5098] 50.34 0.0286 66.2%
## 
## Test for subgroup differences (random effects model):
##                     Q d.f. p-value
## Between groups   7.34    1  0.0067
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
m.biling
##                         SMD            95%-CI %W(random)
## Lawton: Inc., 2015  -0.2656 [-0.7294; 0.1982]        2.9
## Nebreda, 2011        0.3655 [-0.6216; 1.3526]        0.9
## Sanders: Inc., 2012 -0.1396 [-0.3679; 0.0887]        5.6
## Wilson: Inc., 2015   0.3029 [ 0.0627; 0.5431]        5.4
## Yeung: Inc., 2014    0.0335 [-0.2020; 0.2690]        5.5
## Zahodne, 2014        0.3213 [ 0.1615; 0.4811]        6.6
## Alladi, 2013         0.4255 [ 0.2665; 0.5845]        6.6
## Alladi, 2017         0.3597 [ 0.0671; 0.6523]        4.7
## Bialystok, 2007      0.4604 [ 0.1676; 0.7532]        4.7
## Bialystok, 2014      0.7349 [ 0.2663; 1.2035]        2.9
## Chertkow, 2010       0.1190 [-0.0402; 0.2782]        6.6
## Clare, 2016          0.3816 [-0.0490; 0.8122]        3.2
## Craik, 2010          0.5638 [ 0.2885; 0.8391]        4.9
## Duncan, 2017        -0.2744 [-1.0468; 0.4980]        1.4
## Iyer, 2014           0.1776 [ 0.0199; 0.3353]        6.6
## Kowoll, 2016         0.4092 [-0.3155; 1.1339]        1.5
## Lawton: AoO, 2015    0.2754 [ 0.0000; 0.5508]        4.9
## Ossher (AV), 2013    0.4814 [ 0.0888; 0.8740]        3.6
## Perani, 2017         1.2168 [ 0.7533; 1.6803]        2.9
## Ramakrishnan, 2017   0.7033 [ 0.2298; 1.1768]        2.9
## Sanders: AoO, 2012   0.1949 [ 0.0824; 0.3074]        7.2
## Wilson: AoO., 2015   1.1600 [-0.5256; 2.8456]        0.3
## Woumans, 2015        0.1997 [-0.1399; 0.5393]        4.1
## Zheng, 2018          0.7802 [ 0.4217; 1.1387]        3.9
## 
## Number of studies combined: k = 24
## 
##                         SMD            95%-CI    z  p-value
## Random effects model 0.3206 [ 0.2205; 0.4207] 6.28 < 0.0001
## Prediction interval         [-0.0707; 0.7120]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0330; H = 1.79 [1.45; 2.21]; I^2 = 68.9% [52.6%; 79.5%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  73.84   23 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
meta::forest(study.subgroup,subgroup = TRUE, layout = "JAMA",width = 1200, height = 1500,
       text.predict = "95% PI", sortvar=TE,test.subgroup=TRUE,
       col.predict = "black",colgap.forest.left =unit(25, "mm"))

 taf <- trimfill(study.subgroup)
 taf
##                                SMD             95%-CI %W(random)
## Lawton: Inc., 2015         -0.2656 [-0.7294;  0.1982]        2.8
## Nebreda, 2011               0.3655 [-0.6216;  1.3526]        1.0
## Sanders: Inc., 2012        -0.1396 [-0.3679;  0.0887]        4.5
## Wilson: Inc., 2015          0.3029 [ 0.0627;  0.5431]        4.4
## Yeung: Inc., 2014           0.0335 [-0.2020;  0.2690]        4.4
## Zahodne, 2014               0.3213 [ 0.1615;  0.4811]        5.0
## Alladi, 2013                0.4255 [ 0.2665;  0.5845]        5.0
## Alladi, 2017                0.3597 [ 0.0671;  0.6523]        4.0
## Bialystok, 2007             0.4604 [ 0.1676;  0.7532]        4.0
## Bialystok, 2014             0.7349 [ 0.2663;  1.2035]        2.7
## Chertkow, 2010              0.1190 [-0.0402;  0.2782]        5.0
## Clare, 2016                 0.3816 [-0.0490;  0.8122]        3.0
## Craik, 2010                 0.5638 [ 0.2885;  0.8391]        4.1
## Duncan, 2017               -0.2744 [-1.0468;  0.4980]        1.5
## Iyer, 2014                  0.1776 [ 0.0199;  0.3353]        5.0
## Kowoll, 2016                0.4092 [-0.3155;  1.1339]        1.6
## Lawton: AoO, 2015           0.2754 [ 0.0000;  0.5508]        4.1
## Ossher (AV), 2013           0.4814 [ 0.0888;  0.8740]        3.2
## Perani, 2017                1.2168 [ 0.7533;  1.6803]        2.8
## Ramakrishnan, 2017          0.7033 [ 0.2298;  1.1768]        2.7
## Sanders: AoO, 2012          0.1949 [ 0.0824;  0.3074]        5.3
## Wilson: AoO., 2015          1.1600 [-0.5256;  2.8456]        0.4
## Woumans, 2015               0.1997 [-0.1399;  0.5393]        3.6
## Zheng, 2018                 0.7802 [ 0.4217;  1.1387]        3.5
## Filled: Craik, 2010        -0.1206 [-0.3959;  0.1547]        4.1
## Filled: Ramakrishnan, 2017 -0.2601 [-0.7336;  0.2134]        2.7
## Filled: Bialystok, 2014    -0.2917 [-0.7603;  0.1769]        2.7
## Filled: Zheng, 2018        -0.3370 [-0.6955;  0.0215]        3.5
## Filled: Wilson: AoO., 2015 -0.7168 [-2.4024;  0.9688]        0.4
## Filled: Perani, 2017       -0.7736 [-1.2371; -0.3101]        2.8
## 
## Number of studies combined: k = 30 (with 6 added studies)
## 
##                         SMD            95%-CI    z  p-value
## Random effects model 0.2203 [ 0.1117; 0.3289] 3.98 < 0.0001
## Prediction interval         [-0.2717; 0.7124]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0546; H = 2.03 [1.71; 2.42]; I^2 = 75.8% [65.6%; 83.0%]
## 
## Test of heterogeneity:
##       Q d.f.  p-value
##  119.87   29 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
## - Trim-and-fill method to adjust for funnel plot asymmetry
funnel(taf)

One Effect size per Study (Sensitivity Analysis)

m.sensitive<-metagen(TE.mean,
        seTE.mean,
        data=sensitive_data,
        studlab=paste(StudyID),
        comb.fixed = FALSE,
        comb.random = TRUE,
        method.tau = "HS",
        hakn = FALSE,
        prediction=TRUE,
        sm="SMD")

m.sensitive
##                        SMD            95%-CI %W(random)
## Alladi, 2013        0.4255 [ 0.2665; 0.5845]        7.6
## Alladi, 2017        0.3597 [ 0.0671; 0.6523]        5.6
## Bialystok, 2007     0.4604 [ 0.1676; 0.7532]        5.6
## Bialystok, 2014     0.7349 [ 0.2663; 1.2035]        3.5
## Chertkow, 2010      0.1190 [-0.0402; 0.2782]        7.6
## Clare, 2016         0.3816 [-0.0490; 0.8122]        3.9
## Craik, 2010         0.5638 [ 0.2885; 0.8391]        5.8
## Duncan, 2017       -0.2744 [-1.0468; 0.4980]        1.7
## Iyer, 2014          0.1776 [ 0.0199; 0.3353]        7.6
## Kowoll, 2016        0.4092 [-0.3155; 1.1339]        1.9
## Lawton, 2015        0.0049 [-0.3647; 0.3745]        4.6
## Nebreda, 2011       0.3655 [-0.6216; 1.3526]        1.1
## Ossher, 2013        0.4814 [ 0.0888; 0.8740]        4.3
## Perani, 2017        1.2168 [ 0.7533; 1.6803]        3.6
## Ramakrishnan, 2017  0.7033 [ 0.2298; 1.1768]        3.5
## Sanders, 2012       0.0276 [-0.1427; 0.1980]        7.4
## Wilson, 2015        0.7314 [-0.2314; 1.6943]        1.2
## Woumans, 2015       0.1997 [-0.1399; 0.5393]        4.9
## Yeung, 2014         0.0335 [-0.2020; 0.2690]        6.4
## Zahodne, 2014       0.3213 [ 0.1615; 0.4811]        7.6
## Zheng, 2018         0.7802 [ 0.4217; 1.1387]        4.7
## 
## Number of studies combined: k = 21
## 
##                         SMD            95%-CI    z  p-value
## Random effects model 0.3534 [ 0.2408; 0.4659] 6.15 < 0.0001
## Prediction interval         [-0.0662; 0.7729]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0369; H = 1.79 [1.43; 2.24]; I^2 = 68.7% [50.9%; 80.0%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  63.84   20 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
meta::forest(m.sensitive,subgroup = FALSE, layout = "JAMA",width = 1200, height = 1500,
       text.predict = "95% PI", sortvar=TE,test.subgroup=FALSE,
       col.predict = "black",colgap.forest.left =unit(25, "mm"))

 taf <- trimfill(m.sensitive)
 taf
##                                SMD             95%-CI %W(random)
## Alladi, 2013                0.4255 [ 0.2665;  0.5845]        5.8
## Alladi, 2017                0.3597 [ 0.0671;  0.6523]        4.7
## Bialystok, 2007             0.4604 [ 0.1676;  0.7532]        4.7
## Bialystok, 2014             0.7349 [ 0.2663;  1.2035]        3.3
## Chertkow, 2010              0.1190 [-0.0402;  0.2782]        5.8
## Clare, 2016                 0.3816 [-0.0490;  0.8122]        3.6
## Craik, 2010                 0.5638 [ 0.2885;  0.8391]        4.9
## Duncan, 2017               -0.2744 [-1.0468;  0.4980]        1.8
## Iyer, 2014                  0.1776 [ 0.0199;  0.3353]        5.8
## Kowoll, 2016                0.4092 [-0.3155;  1.1339]        2.0
## Lawton, 2015                0.0049 [-0.3647;  0.3745]        4.1
## Nebreda, 2011               0.3655 [-0.6216;  1.3526]        1.2
## Ossher, 2013                0.4814 [ 0.0888;  0.8740]        3.9
## Perani, 2017                1.2168 [ 0.7533;  1.6803]        3.3
## Ramakrishnan, 2017          0.7033 [ 0.2298;  1.1768]        3.3
## Sanders, 2012               0.0276 [-0.1427;  0.1980]        5.7
## Wilson, 2015                0.7314 [-0.2314;  1.6943]        1.3
## Woumans, 2015               0.1997 [-0.1399;  0.5393]        4.3
## Yeung, 2014                 0.0335 [-0.2020;  0.2690]        5.2
## Zahodne, 2014               0.3213 [ 0.1615;  0.4811]        5.8
## Zheng, 2018                 0.7802 [ 0.4217;  1.1387]        4.1
## Filled: Ramakrishnan, 2017 -0.2212 [-0.6947;  0.2523]        3.3
## Filled: Wilson, 2015       -0.2494 [-1.2123;  0.7135]        1.3
## Filled: Bialystok, 2014    -0.2528 [-0.7215;  0.2158]        3.3
## Filled: Zheng, 2018        -0.2981 [-0.6566;  0.0604]        4.1
## Filled: Perani, 2017       -0.7347 [-1.1982; -0.2712]        3.3
## 
## Number of studies combined: k = 26 (with 5 added studies)
## 
##                         SMD            95%-CI    z  p-value
## Random effects model 0.2527 [ 0.1308; 0.3747] 4.06 < 0.0001
## Prediction interval         [-0.2687; 0.7742]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0600; H = 2.01 [1.66; 2.43]; I^2 = 75.2% [63.8%; 83.0%]
## 
## Test of heterogeneity:
##       Q d.f.  p-value
##  100.82   25 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
## - Trim-and-fill method to adjust for funnel plot asymmetry
funnel(taf)

Now to calculate the meta-analysis for prospective studies only

m.biling_pro<-metagen(TE,
        seTE,
        data=prospective_data,
        studlab=paste(Author),
        comb.fixed = FALSE,
        comb.random = TRUE,
        method.tau = "HS",
        hakn = FALSE,
        prediction=TRUE,
        sm="SMD")
study.subgroup<-update.meta(m.biling_pro, 
                             byvar=Subgroup, 
                             comb.random = TRUE, 
                             comb.fixed = FALSE)
study.subgroup
##                         SMD            95%-CI %W(random)     Subgroup
## Lawton: Inc., 2015  -0.2656 [-0.7294; 0.1982]        5.3   Incidental
## Nebreda, 2011        0.3655 [-0.6216; 1.3526]        1.4   Incidental
## Sanders: Inc., 2012 -0.1396 [-0.3679; 0.0887]       13.8   Incidental
## Wilson: Inc., 2015   0.3029 [ 0.0627; 0.5431]       13.1   Incidental
## Yeung: Inc., 2014    0.0335 [-0.2020; 0.2690]       13.4   Incidental
## Zahodne, 2014        0.3213 [ 0.1615; 0.4811]       18.7   Incidental
## Lawton: AoO, 2015    0.2754 [ 0.0000; 0.5508]       11.2 Age of Onset
## Sanders: AoO, 2012   0.1949 [ 0.0824; 0.3074]       22.6 Age of Onset
## Wilson: AoO., 2015   1.1600 [-0.5256; 2.8456]        0.5 Age of Onset
## 
## Number of studies combined: k = 9
## 
##                         SMD            95%-CI    z p-value
## Random effects model 0.1564 [ 0.0378; 0.2751] 2.58  0.0097
## Prediction interval         [-0.1481; 0.4610]             
## 
## Quantifying heterogeneity:
## tau^2 = 0.0129; H = 1.52 [1.05; 2.21]; I^2 = 56.8% [9.2%; 79.5%]
## 
## Quantifying residual heterogeneity:
## H = 1.60 [1.08; 2.35]; I^2 = 60.8% [15.0%; 81.9%]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  18.53    8  0.0176
## 
## Results for subgroups (random effects model):
##                           k    SMD            95%-CI     Q  tau^2   I^2
## Subgroup = Incidental     6 0.1036 [-0.0772; 0.2844] 16.36 0.0271 69.4%
## Subgroup = Age of Onset   3 0.2100 [ 0.1061; 0.3140]  1.51      0  0.0%
## 
## Test for subgroup differences (random effects model):
##                     Q d.f. p-value
## Between groups   1.00    1  0.3172
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
m.biling_pro
##                         SMD            95%-CI %W(random)
## Lawton: Inc., 2015  -0.2656 [-0.7294; 0.1982]        5.3
## Nebreda, 2011        0.3655 [-0.6216; 1.3526]        1.4
## Sanders: Inc., 2012 -0.1396 [-0.3679; 0.0887]       13.8
## Wilson: Inc., 2015   0.3029 [ 0.0627; 0.5431]       13.1
## Yeung: Inc., 2014    0.0335 [-0.2020; 0.2690]       13.4
## Zahodne, 2014        0.3213 [ 0.1615; 0.4811]       18.7
## Lawton: AoO, 2015    0.2754 [ 0.0000; 0.5508]       11.2
## Sanders: AoO, 2012   0.1949 [ 0.0824; 0.3074]       22.6
## Wilson: AoO., 2015   1.1600 [-0.5256; 2.8456]        0.5
## 
## Number of studies combined: k = 9
## 
##                         SMD            95%-CI    z p-value
## Random effects model 0.1564 [ 0.0378; 0.2751] 2.58  0.0097
## Prediction interval         [-0.1481; 0.4610]             
## 
## Quantifying heterogeneity:
## tau^2 = 0.0129; H = 1.52 [1.05; 2.21]; I^2 = 56.8% [9.2%; 79.5%]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  18.53    8  0.0176
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
meta::forest(study.subgroup,subgroup = TRUE, layout = "JAMA",width = 1500, height = 1500,
       text.predict = "95% PI", sortvar=TE,test.subgroup=TRUE,
       col.predict = "black",colgap.forest.left =unit(25, "mm"))

 taf <- trimfill(study.subgroup)
 taf
##                         SMD            95%-CI %W(random)
## Lawton: Inc., 2015  -0.2656 [-0.7294; 0.1982]        5.3
## Nebreda, 2011        0.3655 [-0.6216; 1.3526]        1.4
## Sanders: Inc., 2012 -0.1396 [-0.3679; 0.0887]       13.8
## Wilson: Inc., 2015   0.3029 [ 0.0627; 0.5431]       13.1
## Yeung: Inc., 2014    0.0335 [-0.2020; 0.2690]       13.4
## Zahodne, 2014        0.3213 [ 0.1615; 0.4811]       18.7
## Lawton: AoO, 2015    0.2754 [ 0.0000; 0.5508]       11.2
## Sanders: AoO, 2012   0.1949 [ 0.0824; 0.3074]       22.6
## Wilson: AoO., 2015   1.1600 [-0.5256; 2.8456]        0.5
## 
## Number of studies combined: k = 9 (with 0 added studies)
## 
##                         SMD            95%-CI    z p-value
## Random effects model 0.1564 [ 0.0378; 0.2751] 2.58  0.0097
## Prediction interval         [-0.1481; 0.4610]             
## 
## Quantifying heterogeneity:
## tau^2 = 0.0129; H = 1.52 [1.05; 2.21]; I^2 = 56.8% [9.2%; 79.5%]
## 
## Test of heterogeneity:
##      Q d.f. p-value
##  18.53    8  0.0176
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
## - Trim-and-fill method to adjust for funnel plot asymmetry
funnel(taf)

Age of Onset Analyses (no incidence)

m.AoO<-metagen(TE,
        seTE,
        data=age_of_onset_data,
        studlab=paste(Author),
        comb.fixed = FALSE,
        comb.random = TRUE,
        method.tau = "HS",
        hakn = FALSE,
        prediction=TRUE,
        sm="SMD")
study.subgroup<-update.meta(m.AoO, 
                             byvar=Subgroup, 
                             comb.random = TRUE, 
                             comb.fixed = FALSE)
study.subgroup
##                        SMD            95%-CI %W(random)     Subgroup
## Alladi, 2013        0.4255 [ 0.2665; 0.5845]        9.3 Age of Onset
## Alladi, 2017        0.3597 [ 0.0671; 0.6523]        6.4 Age of Onset
## Bialystok, 2007     0.4604 [ 0.1676; 0.7532]        6.4 Age of Onset
## Bialystok, 2014     0.7349 [ 0.2663; 1.2035]        3.8 Age of Onset
## Chertkow, 2010      0.1190 [-0.0402; 0.2782]        9.3 Age of Onset
## Clare, 2016         0.3816 [-0.0490; 0.8122]        4.3 Age of Onset
## Craik, 2010         0.5638 [ 0.2885; 0.8391]        6.8 Age of Onset
## Duncan, 2017       -0.2744 [-1.0468; 0.4980]        1.8 Age of Onset
## Iyer, 2014          0.1776 [ 0.0199; 0.3353]        9.3 Age of Onset
## Kowoll, 2016        0.4092 [-0.3155; 1.1339]        2.0 Age of Onset
## Lawton: AoO, 2015   0.2754 [ 0.0000; 0.5508]        6.8 Age of Onset
## Ossher (AV), 2013   0.4814 [ 0.0888; 0.8740]        4.8 Age of Onset
## Perani, 2017        1.2168 [ 0.7533; 1.6803]        3.9 Age of Onset
## Ramakrishnan, 2017  0.7033 [ 0.2298; 1.1768]        3.8 Age of Onset
## Sanders: AoO, 2012  0.1949 [ 0.0824; 0.3074]       10.2 Age of Onset
## Wilson: AoO., 2015  1.1600 [-0.5256; 2.8456]        0.4 Age of Onset
## Woumans, 2015       0.1997 [-0.1399; 0.5393]        5.6 Age of Onset
## Zheng, 2018         0.7802 [ 0.4217; 1.1387]        5.3 Age of Onset
## 
## Number of studies combined: k = 18
## 
##                         SMD           95%-CI    z  p-value
## Random effects model 0.3977 [0.2855; 0.5098] 6.95 < 0.0001
## Prediction interval         [0.0189; 0.7764]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0286; H = 1.72 [1.34; 2.21]; I^2 = 66.2% [44.5%; 79.4%]
## 
## Quantifying residual heterogeneity:
## H = 1.72 [1.34; 2.21]; I^2 = 66.2% [44.5%; 79.4%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  50.34   17 < 0.0001
## 
## Results for subgroups (random effects model):
##                           k    SMD           95%-CI     Q  tau^2   I^2
## Subgroup = Age of Onset  18 0.3977 [0.2855; 0.5098] 50.34 0.0286 66.2%
## 
## Test for subgroup differences (random effects model):
##                     Q d.f. p-value
## Between groups   0.00    0      --
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
m.AoO
##                        SMD            95%-CI %W(random)
## Alladi, 2013        0.4255 [ 0.2665; 0.5845]        9.3
## Alladi, 2017        0.3597 [ 0.0671; 0.6523]        6.4
## Bialystok, 2007     0.4604 [ 0.1676; 0.7532]        6.4
## Bialystok, 2014     0.7349 [ 0.2663; 1.2035]        3.8
## Chertkow, 2010      0.1190 [-0.0402; 0.2782]        9.3
## Clare, 2016         0.3816 [-0.0490; 0.8122]        4.3
## Craik, 2010         0.5638 [ 0.2885; 0.8391]        6.8
## Duncan, 2017       -0.2744 [-1.0468; 0.4980]        1.8
## Iyer, 2014          0.1776 [ 0.0199; 0.3353]        9.3
## Kowoll, 2016        0.4092 [-0.3155; 1.1339]        2.0
## Lawton: AoO, 2015   0.2754 [ 0.0000; 0.5508]        6.8
## Ossher (AV), 2013   0.4814 [ 0.0888; 0.8740]        4.8
## Perani, 2017        1.2168 [ 0.7533; 1.6803]        3.9
## Ramakrishnan, 2017  0.7033 [ 0.2298; 1.1768]        3.8
## Sanders: AoO, 2012  0.1949 [ 0.0824; 0.3074]       10.2
## Wilson: AoO., 2015  1.1600 [-0.5256; 2.8456]        0.4
## Woumans, 2015       0.1997 [-0.1399; 0.5393]        5.6
## Zheng, 2018         0.7802 [ 0.4217; 1.1387]        5.3
## 
## Number of studies combined: k = 18
## 
##                         SMD           95%-CI    z  p-value
## Random effects model 0.3977 [0.2855; 0.5098] 6.95 < 0.0001
## Prediction interval         [0.0189; 0.7764]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0286; H = 1.72 [1.34; 2.21]; I^2 = 66.2% [44.5%; 79.4%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  50.34   17 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
meta::forest(study.subgroup,subgroup = TRUE, layout = "JAMA",width = 1500, height = 1500,
       text.predict = "95% PI", sortvar=TE,test.subgroup=TRUE,
       col.predict = "black",colgap.forest.left =unit(25, "mm"))

 taf <- trimfill(study.subgroup)
 taf
##                                SMD             95%-CI %W(random)
## Alladi, 2013                0.4255 [ 0.2665;  0.5845]        6.4
## Alladi, 2017                0.3597 [ 0.0671;  0.6523]        5.1
## Bialystok, 2007             0.4604 [ 0.1676;  0.7532]        5.1
## Bialystok, 2014             0.7349 [ 0.2663;  1.2035]        3.5
## Chertkow, 2010              0.1190 [-0.0402;  0.2782]        6.4
## Clare, 2016                 0.3816 [-0.0490;  0.8122]        3.8
## Craik, 2010                 0.5638 [ 0.2885;  0.8391]        5.3
## Duncan, 2017               -0.2744 [-1.0468;  0.4980]        1.9
## Iyer, 2014                  0.1776 [ 0.0199;  0.3353]        6.4
## Kowoll, 2016                0.4092 [-0.3155;  1.1339]        2.1
## Lawton: AoO, 2015           0.2754 [ 0.0000;  0.5508]        5.3
## Ossher (AV), 2013           0.4814 [ 0.0888;  0.8740]        4.2
## Perani, 2017                1.2168 [ 0.7533;  1.6803]        3.6
## Ramakrishnan, 2017          0.7033 [ 0.2298;  1.1768]        3.5
## Sanders: AoO, 2012          0.1949 [ 0.0824;  0.3074]        6.8
## Wilson: AoO., 2015          1.1600 [-0.5256;  2.8456]        0.5
## Woumans, 2015               0.1997 [-0.1399;  0.5393]        4.7
## Zheng, 2018                 0.7802 [ 0.4217;  1.1387]        4.5
## Filled: Craik, 2010        -0.0655 [-0.3408;  0.2098]        5.3
## Filled: Ramakrishnan, 2017 -0.2050 [-0.6785;  0.2685]        3.5
## Filled: Bialystok, 2014    -0.2366 [-0.7053;  0.2320]        3.5
## Filled: Zheng, 2018        -0.2819 [-0.6404;  0.0766]        4.5
## Filled: Wilson: AoO., 2015 -0.6617 [-2.3473;  1.0238]        0.5
## Filled: Perani, 2017       -0.7185 [-1.1820; -0.2550]        3.6
## 
## Number of studies combined: k = 24 (with 6 added studies)
## 
##                         SMD            95%-CI    z  p-value
## Random effects model 0.2676 [ 0.1444; 0.3908] 4.26 < 0.0001
## Prediction interval         [-0.2352; 0.7704]              
## 
## Quantifying heterogeneity:
## tau^2 = 0.0548; H = 2.01 [1.65; 2.45]; I^2 = 75.3% [63.4%; 83.4%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  93.25   23 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - Hunter-Schmidt estimator for tau^2
## - Trim-and-fill method to adjust for funnel plot asymmetry
funnel(taf)

meta::forest(taf,subgroup = TRUE, layout = "JAMA",width = 1500, height = 1500,
       text.predict = "95% PI", sortvar=TE,test.subgroup=TRUE,
       col.predict = "black",colgap.forest.left =unit(25, "mm"))

Education (calculating Cohen’s d)

m.biling<-metagen(TE,
        seTE,
        data=education_data,
        studlab=paste(Author),
        comb.fixed = FALSE,
        comb.random = TRUE,
        method.tau = "HS",
        hakn = FALSE,
        prediction=TRUE,
        sm="SMD")
Education_Effect<-update.meta(m.biling, 
                             byvar=Education_ES, 
                             comb.random = TRUE, 
                             comb.fixed = FALSE)
metareg(Education_Effect, ~ Education_ES)
## 
## Mixed-Effects Model (k = 19; tau^2 estimator: HS)
## 
## tau^2 (estimated amount of residual heterogeneity):     0.0293 (SE = 0.0148)
## tau (square root of estimated tau^2 value):             0.1711
## I^2 (residual heterogeneity / unaccounted variability): 61.53%
## H^2 (unaccounted variability / sampling variability):   2.60
## R^2 (amount of heterogeneity accounted for):            8.67%
## 
## Test for Residual Heterogeneity:
## QE(df = 17) = 54.4329, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## QM(df = 1) = 0.0232, p-val = 0.8790
## 
## Model Results:
## 
##               estimate      se    zval    pval    ci.lb   ci.ub 
## intrcpt         0.3546  0.0625  5.6736  <.0001   0.2321  0.4770  *** 
## Education_ES    0.0129  0.0846  0.1522  0.8790  -0.1530  0.1787      
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
bubble(metareg(Education_Effect, ~ Education_ES))

predicted_education <- predict.rma(metareg(Education_Effect, ~ Education_ES))
edu_data <- cbind(education_data, predicted_education)

ggplot(edu_data, aes(x = pred, y = TE, size = 1/se,fill=Subgroup, colour = Subgroup, group =1))+geom_point(shape = 16)+geom_smooth(method="lm")+labs(title="Education Effect Size on Alzheimer's Age (Incidence and Onset)",subtitle = "Size of points indicate weight in analysis",
        x ="Education Effect Size \n Larger Values Indicate Bilinguals have higher Education", y = "Age Effect Size \n Higher Values Indicate Bilinguals were Older than Monolinguals at Onset/Incidence of Dementia")

SES (calculating Cohen’s d)

m.biling<-metagen(TE,
        seTE,
        data=ses_data,
        studlab=paste(Author),
        comb.fixed = FALSE,
        comb.random = TRUE,
        method.tau = "HS",
        hakn = FALSE,
        prediction=TRUE,
        sm="SMD")
SES_Effect<-update.meta(m.biling, 
                             byvar=SES_ES, 
                             comb.random = TRUE, 
                             comb.fixed = FALSE)
metareg(SES_Effect, ~ SES_ES)
## 
## Mixed-Effects Model (k = 10; tau^2 estimator: HS)
## 
## tau^2 (estimated amount of residual heterogeneity):     0.0144 (SE = 0.0144)
## tau (square root of estimated tau^2 value):             0.1199
## I^2 (residual heterogeneity / unaccounted variability): 37.64%
## H^2 (unaccounted variability / sampling variability):   1.60
## R^2 (amount of heterogeneity accounted for):            3.73%
## 
## Test for Residual Heterogeneity:
## QE(df = 8) = 16.6692, p-val = 0.0337
## 
## Test of Moderators (coefficient 2):
## QM(df = 1) = 0.1719, p-val = 0.6784
## 
## Model Results:
## 
##          estimate      se     zval    pval    ci.lb   ci.ub 
## intrcpt    0.4301  0.0994   4.3255  <.0001   0.2352  0.6251  *** 
## SES_ES    -0.1016  0.2450  -0.4147  0.6784  -0.5817  0.3786      
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
bubble(metareg(SES_Effect, ~ SES_ES), xlab = "SES Effect Size for BL ML Group Difference \n Higher Values indicate Higher SES for BL")

predicted_ses <- predict.rma(metareg(SES_Effect, ~ SES_ES))
ses_data <- cbind(ses_data, predicted_ses)

ggplot(ses_data, aes(x = pred, y = TE, size = 1/se,fill=Subgroup, colour = Subgroup, group =1))+geom_point(shape = 16)+geom_smooth(method="lm")+labs(title="SES Effect Size on Alzheimer's Age (Incidence and Onset)",subtitle = "Size of points indicate weight in analysis",
        x ="SES Effect Size \n Larger Values Indicate Bilinguals have higher SES", y = "Age Effect Size \n Higher Values Indicate Bilinguals were Older than Monolinguals at Onset/Incidence of Dementia")

LS0tCnRpdGxlOiAiQmlsaW5ndWFsaXNtIE1ldGEgQW5hbHlzaXMiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICBkZl9wcmludDogcGFnZWQKICAgIHRoZW1lOiBjb3NtbwogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCipUaGlzIGlzIGEgbm90ZWJvb2sgY29udGFpbmluZyB0aGUgUiBjb2RlIGZvciB0aGUgQmlsaW5ndWFsaXNtICYgQWx6aGVpbWVyJ3MgYWdlIG9mIG9uc2V0L2luY2lkZW5jZSBhbmFseXNpcy4qCgpgYGB7ciwgd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeShtZXRhKQpsaWJyYXJ5KG1ldGFmb3IpCmxpYnJhcnkodW5pdHMpCnJlcXVpcmUoZ3JpZCkKbGlicmFyeShiYXllc21ldGEpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZG9CeSkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGdndGhlbXIpCmdndGhlbXIoImZyZXNoIikKYWxsX2RhdGEgPC0gcmVhZF9leGNlbCgiL1VzZXJzL0pvaG4vRG9jdW1lbnRzL0NvbGxhYm9yYXRpb25zL0NvbGxhYm9yYXRpb24gSkcgS0ggTWV0YSBBbmFseXNpcyBBZ2Ugb2YgT25zZXQvTWV0YV9BbmFseXNpc18yMDE5Lnhsc3giLCBzaGVldCA9ICJBZ2UgRWZmZWN0IFNpemUiKQphbGxfZGF0YSA8LSBzdWJzZXQoYWxsX2RhdGEsIHNlbGVjdCA9IGMoIkxhYmVsIiwiU3ViZ3JvdXAiLCJTdWJncm91cDIiLCJTdWJncm91cDMiLCJFUyIsIlNFIiwiU3R1ZHlJRCIpKSAlPiUgYGNvbG5hbWVzPC1gKGMoIkF1dGhvciIsIlN1Ymdyb3VwIiwiU3ViZ3JvdXAyIiwiU3ViZ3JvdXAzIiwiVEUiLCJzZVRFIiwiU3R1ZHlJRCIpKSAlPiUgZmlsdGVyKGNvbXBsZXRlLmNhc2VzKC4pKQoKcHJvc3BlY3RpdmVfZGF0YSA8LSBzdWJzZXQoYWxsX2RhdGEsIFN1Ymdyb3VwMiA9PSJQcm9zcGVjdGl2ZSIpCmFnZV9vZl9vbnNldF9kYXRhIDwtIHN1YnNldChhbGxfZGF0YSwgU3ViZ3JvdXAzICE9ICJJbmNpZGVudGFsX1Byb3NwZWN0aXZlIikKc2Vuc2l0aXZlX2RhdGEgPC0gc3VtbWFyeUJ5KFRFICsgc2VURSB+IFN0dWR5SUQsZGF0YSA9IGFzLmRhdGEuZnJhbWUoYWxsX2RhdGEpLEZVTj1jKG1lYW4pLG5hLnJtPVRSVUUpCgplZHVjYXRpb25fZGF0YSA8LSByZWFkX2V4Y2VsKCIvVXNlcnMvSm9obi9Eb2N1bWVudHMvQ29sbGFib3JhdGlvbnMvQ29sbGFib3JhdGlvbiBKRyBLSCBNZXRhIEFuYWx5c2lzIEFnZSBvZiBPbnNldC9NZXRhX0FuYWx5c2lzXzIwMTkueGxzeCIsIHNoZWV0ID0gIkVkdWNhdGlvbiBFZmZlY3QgU2l6ZSIpICU+JSBzZWxlY3QoYygiTGFiZWwiLCJFUyIpKSAlPiVgY29sbmFtZXM8LWAoYygiQXV0aG9yIiwiRWR1Y2F0aW9uX0VTIikpICU+JSBtZXJnZShhbGxfZGF0YSwgYnkgPSAiQXV0aG9yIixhbGwueCA9IEZBTFNFKSAlPiUgZmlsdGVyKGNvbXBsZXRlLmNhc2VzKC4pKQoKc2VzX2RhdGEgPC0gcmVhZF9leGNlbCgiL1VzZXJzL0pvaG4vRG9jdW1lbnRzL0NvbGxhYm9yYXRpb25zL0NvbGxhYm9yYXRpb24gSkcgS0ggTWV0YSBBbmFseXNpcyBBZ2Ugb2YgT25zZXQvTWV0YV9BbmFseXNpc18yMDE5Lnhsc3giLCBzaGVldCA9ICJTRVMgRWZmZWN0IFNpemUiKSAlPiUgc2VsZWN0KGMoIkxhYmVsIiwiRVMiKSkgJT4lYGNvbG5hbWVzPC1gKGMoIkF1dGhvciIsIlNFU19FUyIpKSAlPiUgbWVyZ2UoYWxsX2RhdGEsIGJ5ID0gIkF1dGhvciIsYWxsLnggPSBGQUxTRSkgJT4lIGZpbHRlcihjb21wbGV0ZS5jYXNlcyguKSkKCmBgYAoKI05vdyB0byBjYWxjdWxhdGUgdGhlIG1ldGEtYW5hbHlzaXMuLi4KCmBgYHtyfQptLmJpbGluZzwtbWV0YWdlbihURSwKICAgICAgICBzZVRFLAogICAgICAgIGRhdGE9YWxsX2RhdGEsCiAgICAgICAgc3R1ZGxhYj1wYXN0ZShBdXRob3IpLAogICAgICAgIGNvbWIuZml4ZWQgPSBGQUxTRSwKICAgICAgICBjb21iLnJhbmRvbSA9IFRSVUUsCiAgICAgICAgbWV0aG9kLnRhdSA9ICJIUyIsCiAgICAgICAgaGFrbiA9IEZBTFNFLAogICAgICAgIHByZWRpY3Rpb249VFJVRSwKICAgICAgICBzbT0iU01EIikKc3R1ZHkuc3ViZ3JvdXA8LXVwZGF0ZS5tZXRhKG0uYmlsaW5nLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXZhcj1TdWJncm91cCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYi5yYW5kb20gPSBUUlVFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iLmZpeGVkID0gRkFMU0UpCnN0dWR5LnN1Ymdyb3VwCgptLmJpbGluZwptZXRhOjpmb3Jlc3Qoc3R1ZHkuc3ViZ3JvdXAsc3ViZ3JvdXAgPSBUUlVFLCBsYXlvdXQgPSAiSkFNQSIsd2lkdGggPSAxMjAwLCBoZWlnaHQgPSAxNTAwLAogICAgICAgdGV4dC5wcmVkaWN0ID0gIjk1JSBQSSIsIHNvcnR2YXI9VEUsdGVzdC5zdWJncm91cD1UUlVFLAogICAgICAgY29sLnByZWRpY3QgPSAiYmxhY2siLGNvbGdhcC5mb3Jlc3QubGVmdCA9dW5pdCgyNSwgIm1tIikpCiB0YWYgPC0gdHJpbWZpbGwoc3R1ZHkuc3ViZ3JvdXApCiB0YWYKZnVubmVsKHRhZikKYGBgCgojT25lIEVmZmVjdCBzaXplIHBlciBTdHVkeSAoU2Vuc2l0aXZpdHkgQW5hbHlzaXMpCgpgYGB7cn0KbS5zZW5zaXRpdmU8LW1ldGFnZW4oVEUubWVhbiwKICAgICAgICBzZVRFLm1lYW4sCiAgICAgICAgZGF0YT1zZW5zaXRpdmVfZGF0YSwKICAgICAgICBzdHVkbGFiPXBhc3RlKFN0dWR5SUQpLAogICAgICAgIGNvbWIuZml4ZWQgPSBGQUxTRSwKICAgICAgICBjb21iLnJhbmRvbSA9IFRSVUUsCiAgICAgICAgbWV0aG9kLnRhdSA9ICJIUyIsCiAgICAgICAgaGFrbiA9IEZBTFNFLAogICAgICAgIHByZWRpY3Rpb249VFJVRSwKICAgICAgICBzbT0iU01EIikKCm0uc2Vuc2l0aXZlCm1ldGE6OmZvcmVzdChtLnNlbnNpdGl2ZSxzdWJncm91cCA9IEZBTFNFLCBsYXlvdXQgPSAiSkFNQSIsd2lkdGggPSAxMjAwLCBoZWlnaHQgPSAxNTAwLAogICAgICAgdGV4dC5wcmVkaWN0ID0gIjk1JSBQSSIsIHNvcnR2YXI9VEUsdGVzdC5zdWJncm91cD1GQUxTRSwKICAgICAgIGNvbC5wcmVkaWN0ID0gImJsYWNrIixjb2xnYXAuZm9yZXN0LmxlZnQgPXVuaXQoMjUsICJtbSIpKQogdGFmIDwtIHRyaW1maWxsKG0uc2Vuc2l0aXZlKQogdGFmCmZ1bm5lbCh0YWYpCmBgYAoKI05vdyB0byBjYWxjdWxhdGUgdGhlIG1ldGEtYW5hbHlzaXMgZm9yIHByb3NwZWN0aXZlIHN0dWRpZXMgb25seQoKYGBge3J9Cm0uYmlsaW5nX3BybzwtbWV0YWdlbihURSwKICAgICAgICBzZVRFLAogICAgICAgIGRhdGE9cHJvc3BlY3RpdmVfZGF0YSwKICAgICAgICBzdHVkbGFiPXBhc3RlKEF1dGhvciksCiAgICAgICAgY29tYi5maXhlZCA9IEZBTFNFLAogICAgICAgIGNvbWIucmFuZG9tID0gVFJVRSwKICAgICAgICBtZXRob2QudGF1ID0gIkhTIiwKICAgICAgICBoYWtuID0gRkFMU0UsCiAgICAgICAgcHJlZGljdGlvbj1UUlVFLAogICAgICAgIHNtPSJTTUQiKQpzdHVkeS5zdWJncm91cDwtdXBkYXRlLm1ldGEobS5iaWxpbmdfcHJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXZhcj1TdWJncm91cCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYi5yYW5kb20gPSBUUlVFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iLmZpeGVkID0gRkFMU0UpCnN0dWR5LnN1Ymdyb3VwCgptLmJpbGluZ19wcm8KbWV0YTo6Zm9yZXN0KHN0dWR5LnN1Ymdyb3VwLHN1Ymdyb3VwID0gVFJVRSwgbGF5b3V0ID0gIkpBTUEiLHdpZHRoID0gMTUwMCwgaGVpZ2h0ID0gMTUwMCwKICAgICAgIHRleHQucHJlZGljdCA9ICI5NSUgUEkiLCBzb3J0dmFyPVRFLHRlc3Quc3ViZ3JvdXA9VFJVRSwKICAgICAgIGNvbC5wcmVkaWN0ID0gImJsYWNrIixjb2xnYXAuZm9yZXN0LmxlZnQgPXVuaXQoMjUsICJtbSIpKQoKIHRhZiA8LSB0cmltZmlsbChzdHVkeS5zdWJncm91cCkKIHRhZgpmdW5uZWwodGFmKQpgYGAKCiMjQWdlIG9mIE9uc2V0IEFuYWx5c2VzIChubyBpbmNpZGVuY2UpCmBgYHtyfQoKbS5Bb088LW1ldGFnZW4oVEUsCiAgICAgICAgc2VURSwKICAgICAgICBkYXRhPWFnZV9vZl9vbnNldF9kYXRhLAogICAgICAgIHN0dWRsYWI9cGFzdGUoQXV0aG9yKSwKICAgICAgICBjb21iLmZpeGVkID0gRkFMU0UsCiAgICAgICAgY29tYi5yYW5kb20gPSBUUlVFLAogICAgICAgIG1ldGhvZC50YXUgPSAiSFMiLAogICAgICAgIGhha24gPSBGQUxTRSwKICAgICAgICBwcmVkaWN0aW9uPVRSVUUsCiAgICAgICAgc209IlNNRCIpCnN0dWR5LnN1Ymdyb3VwPC11cGRhdGUubWV0YShtLkFvTywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl2YXI9U3ViZ3JvdXAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWIucmFuZG9tID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYi5maXhlZCA9IEZBTFNFKQpzdHVkeS5zdWJncm91cAoKbS5Bb08KbWV0YTo6Zm9yZXN0KHN0dWR5LnN1Ymdyb3VwLHN1Ymdyb3VwID0gVFJVRSwgbGF5b3V0ID0gIkpBTUEiLHdpZHRoID0gMTUwMCwgaGVpZ2h0ID0gMTUwMCwKICAgICAgIHRleHQucHJlZGljdCA9ICI5NSUgUEkiLCBzb3J0dmFyPVRFLHRlc3Quc3ViZ3JvdXA9VFJVRSwKICAgICAgIGNvbC5wcmVkaWN0ID0gImJsYWNrIixjb2xnYXAuZm9yZXN0LmxlZnQgPXVuaXQoMjUsICJtbSIpKQoKIHRhZiA8LSB0cmltZmlsbChzdHVkeS5zdWJncm91cCkKIHRhZgpmdW5uZWwodGFmKQptZXRhOjpmb3Jlc3QodGFmLHN1Ymdyb3VwID0gVFJVRSwgbGF5b3V0ID0gIkpBTUEiLHdpZHRoID0gMTUwMCwgaGVpZ2h0ID0gMTUwMCwKICAgICAgIHRleHQucHJlZGljdCA9ICI5NSUgUEkiLCBzb3J0dmFyPVRFLHRlc3Quc3ViZ3JvdXA9VFJVRSwKICAgICAgIGNvbC5wcmVkaWN0ID0gImJsYWNrIixjb2xnYXAuZm9yZXN0LmxlZnQgPXVuaXQoMjUsICJtbSIpKQoKYGBgCgojRWR1Y2F0aW9uIChjYWxjdWxhdGluZyBDb2hlbidzIGQpCgpgYGB7cn0KbS5iaWxpbmc8LW1ldGFnZW4oVEUsCiAgICAgICAgc2VURSwKICAgICAgICBkYXRhPWVkdWNhdGlvbl9kYXRhLAogICAgICAgIHN0dWRsYWI9cGFzdGUoQXV0aG9yKSwKICAgICAgICBjb21iLmZpeGVkID0gRkFMU0UsCiAgICAgICAgY29tYi5yYW5kb20gPSBUUlVFLAogICAgICAgIG1ldGhvZC50YXUgPSAiSFMiLAogICAgICAgIGhha24gPSBGQUxTRSwKICAgICAgICBwcmVkaWN0aW9uPVRSVUUsCiAgICAgICAgc209IlNNRCIpCkVkdWNhdGlvbl9FZmZlY3Q8LXVwZGF0ZS5tZXRhKG0uYmlsaW5nLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXZhcj1FZHVjYXRpb25fRVMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWIucmFuZG9tID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYi5maXhlZCA9IEZBTFNFKQptZXRhcmVnKEVkdWNhdGlvbl9FZmZlY3QsIH4gRWR1Y2F0aW9uX0VTKQpidWJibGUobWV0YXJlZyhFZHVjYXRpb25fRWZmZWN0LCB+IEVkdWNhdGlvbl9FUykpCgpwcmVkaWN0ZWRfZWR1Y2F0aW9uIDwtIHByZWRpY3Qucm1hKG1ldGFyZWcoRWR1Y2F0aW9uX0VmZmVjdCwgfiBFZHVjYXRpb25fRVMpKQplZHVfZGF0YSA8LSBjYmluZChlZHVjYXRpb25fZGF0YSwgcHJlZGljdGVkX2VkdWNhdGlvbikKCmdncGxvdChlZHVfZGF0YSwgYWVzKHggPSBwcmVkLCB5ID0gVEUsIHNpemUgPSAxL3NlLGZpbGw9U3ViZ3JvdXAsIGNvbG91ciA9IFN1Ymdyb3VwLCBncm91cCA9MSkpK2dlb21fcG9pbnQoc2hhcGUgPSAxNikrZ2VvbV9zbW9vdGgobWV0aG9kPSJsbSIpK2xhYnModGl0bGU9IkVkdWNhdGlvbiBFZmZlY3QgU2l6ZSBvbiBBbHpoZWltZXIncyBBZ2UgKEluY2lkZW5jZSBhbmQgT25zZXQpIixzdWJ0aXRsZSA9ICJTaXplIG9mIHBvaW50cyBpbmRpY2F0ZSB3ZWlnaHQgaW4gYW5hbHlzaXMiLAogICAgICAgIHggPSJFZHVjYXRpb24gRWZmZWN0IFNpemUgXG4gTGFyZ2VyIFZhbHVlcyBJbmRpY2F0ZSBCaWxpbmd1YWxzIGhhdmUgaGlnaGVyIEVkdWNhdGlvbiIsIHkgPSAiQWdlIEVmZmVjdCBTaXplIFxuIEhpZ2hlciBWYWx1ZXMgSW5kaWNhdGUgQmlsaW5ndWFscyB3ZXJlIE9sZGVyIHRoYW4gTW9ub2xpbmd1YWxzIGF0IE9uc2V0L0luY2lkZW5jZSBvZiBEZW1lbnRpYSIpCgoKYGBgCgoKI1NFUyAoY2FsY3VsYXRpbmcgQ29oZW4ncyBkKQoKYGBge3J9Cm0uYmlsaW5nPC1tZXRhZ2VuKFRFLAogICAgICAgIHNlVEUsCiAgICAgICAgZGF0YT1zZXNfZGF0YSwKICAgICAgICBzdHVkbGFiPXBhc3RlKEF1dGhvciksCiAgICAgICAgY29tYi5maXhlZCA9IEZBTFNFLAogICAgICAgIGNvbWIucmFuZG9tID0gVFJVRSwKICAgICAgICBtZXRob2QudGF1ID0gIkhTIiwKICAgICAgICBoYWtuID0gRkFMU0UsCiAgICAgICAgcHJlZGljdGlvbj1UUlVFLAogICAgICAgIHNtPSJTTUQiKQpTRVNfRWZmZWN0PC11cGRhdGUubWV0YShtLmJpbGluZywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl2YXI9U0VTX0VTLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iLnJhbmRvbSA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWIuZml4ZWQgPSBGQUxTRSkKbWV0YXJlZyhTRVNfRWZmZWN0LCB+IFNFU19FUykKYnViYmxlKG1ldGFyZWcoU0VTX0VmZmVjdCwgfiBTRVNfRVMpLCB4bGFiID0gIlNFUyBFZmZlY3QgU2l6ZSBmb3IgQkwgTUwgR3JvdXAgRGlmZmVyZW5jZSBcbiBIaWdoZXIgVmFsdWVzIGluZGljYXRlIEhpZ2hlciBTRVMgZm9yIEJMIikKcHJlZGljdGVkX3NlcyA8LSBwcmVkaWN0LnJtYShtZXRhcmVnKFNFU19FZmZlY3QsIH4gU0VTX0VTKSkKc2VzX2RhdGEgPC0gY2JpbmQoc2VzX2RhdGEsIHByZWRpY3RlZF9zZXMpCgpnZ3Bsb3Qoc2VzX2RhdGEsIGFlcyh4ID0gcHJlZCwgeSA9IFRFLCBzaXplID0gMS9zZSxmaWxsPVN1Ymdyb3VwLCBjb2xvdXIgPSBTdWJncm91cCwgZ3JvdXAgPTEpKStnZW9tX3BvaW50KHNoYXBlID0gMTYpK2dlb21fc21vb3RoKG1ldGhvZD0ibG0iKStsYWJzKHRpdGxlPSJTRVMgRWZmZWN0IFNpemUgb24gQWx6aGVpbWVyJ3MgQWdlIChJbmNpZGVuY2UgYW5kIE9uc2V0KSIsc3VidGl0bGUgPSAiU2l6ZSBvZiBwb2ludHMgaW5kaWNhdGUgd2VpZ2h0IGluIGFuYWx5c2lzIiwKICAgICAgICB4ID0iU0VTIEVmZmVjdCBTaXplIFxuIExhcmdlciBWYWx1ZXMgSW5kaWNhdGUgQmlsaW5ndWFscyBoYXZlIGhpZ2hlciBTRVMiLCB5ID0gIkFnZSBFZmZlY3QgU2l6ZSBcbiBIaWdoZXIgVmFsdWVzIEluZGljYXRlIEJpbGluZ3VhbHMgd2VyZSBPbGRlciB0aGFuIE1vbm9saW5ndWFscyBhdCBPbnNldC9JbmNpZGVuY2Ugb2YgRGVtZW50aWEiKQpgYGAK