Baseline characteristics
PAM_clean %>%
dplyr::select(AGE50, GENDERF, ibddx, ModSevere,current_meds___1, pamtotal, SESIBD, PROImp) -> baseline
baseline %>% tbl_summary(label = list(AGE50 ~ "Age > 50", GENDERF~ "Female", ibddx ~ "IBD Diagnosis", ModSevere ~ "Moderate to Severe Disease",current_meds___1 ~ "Active Steroid Use", pamtotal ~ "PAM Score", SESIBD ~ "SES Score", PROImp ~ "Daily Impact Score"),
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing_text = "(Missing)")
| Characteristic |
N = 148 |
| Age > 50 |
78 (53%) |
| Female |
80 (54%) |
| IBD Diagnosis |
|
| CD |
86 (58%) |
| UC |
54 (36%) |
| IC |
3 (2.0%) |
| Unknown |
5 (3.4%) |
| Moderate to Severe Disease |
112 (76%) |
| Active Steroid Use |
16 (11%) |
| PAM Score |
65 (11) |
| SES Score |
218 (40) |
| Daily Impact Score |
7 (9) |
Bivariate Analysis
tbl_uv_proimp <-
tbl_uvregression(
PAM_clean[c("PROImp", "AGE50", "GENDERF", "ibddx", "ModSevere", "current_meds___1", "pamtotal", "SESIBD")],
method = lm,
y = PROImp,
label = list(AGE50 ~ "Age > 50", GENDERF~ "Female", ibddx ~ "IBD Diagnosis", ModSevere ~ "Moderate to Severe Disease", pamtotal ~ "PAM Score", SESIBD ~ "SES Score", current_meds___1 ~ "Active Steroid Use")
)
print(tbl_uv_proimp, method = render)
`...` must be empty.
✖ Problematic argument:
• method = render
| Characteristic |
N |
Beta |
95% CI |
p-value |
| Age > 50 |
148 |
0.62 |
-2.2, 3.4 |
0.7 |
| Female |
148 |
3.0 |
0.27, 5.8 |
0.032 |
| IBD Diagnosis |
148 |
|
|
|
| CD |
|
— |
— |
|
| UC |
|
-6.1 |
-8.9, -3.3 |
<0.001 |
| IC |
|
-9.2 |
-19, 0.27 |
0.057 |
| Unknown |
|
-4.9 |
-12, 2.5 |
0.2 |
| Moderate to Severe Disease |
148 |
3.8 |
0.61, 7.0 |
0.020 |
| Active Steroid Use |
148 |
8.4 |
4.0, 13 |
<0.001 |
| PAM Score |
148 |
-0.18 |
-0.30, -0.06 |
0.005 |
| SES Score |
148 |
-0.12 |
-0.15, -0.10 |
<0.001 |
NULL
Multivariable Models
PAM -> daily life impact
impact3 <- lm(PROImp ~ AGE50 + GENDERF + ibddx + ModSevere + current_meds___1 + pamtotal,
data = PAM_clean)
summary(impact3 )
Call:
lm(formula = PROImp ~ AGE50 + GENDERF + ibddx + ModSevere + current_meds___1 +
pamtotal, data = PAM_clean)
Residuals:
Min 1Q Median 3Q Max
-18.899 -4.591 -1.235 3.638 22.351
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 15.27104 4.47618 3.412 0.000846 ***
AGE50 0.50919 1.30751 0.389 0.697551
GENDERF 2.86242 1.26667 2.260 0.025389 *
ibddxUC -5.13531 1.42453 -3.605 0.000434 ***
ibddxIC -9.16832 4.56839 -2.007 0.046699 *
ibddxUnknown -4.46756 3.60267 -1.240 0.217040
ModSevere 0.77830 1.61173 0.483 0.629930
current_meds___1 7.11258 2.05781 3.456 0.000727 ***
pamtotal -0.14351 0.05791 -2.478 0.014407 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 7.585 on 139 degrees of freedom
Multiple R-squared: 0.2691, Adjusted R-squared: 0.227
F-statistic: 6.397 on 8 and 139 DF, p-value: 4.607e-07
broom::glance(impact3 )
broom::tidy(impact3)
model_performance(impact3)
# Indices of model performance
AIC | BIC | R2 | R2 (adj.) | RMSE | Sigma
-------------------------------------------------------
1030.452 | 1060.424 | 0.269 | 0.227 | 7.350 | 7.585
tbl_regression(impact3, label = list(AGE50 ~ "Age > 50", GENDERF~ "Female", ibddx ~ "IBD Diagnosis", ModSevere ~ "Moderate to Severe Disease", pamtotal ~ "PAM Score", current_meds___1 ~ "Active Steroid Use"))
| Characteristic |
Beta |
95% CI |
p-value |
| Age > 50 |
0.51 |
-2.1, 3.1 |
0.7 |
| Female |
2.9 |
0.36, 5.4 |
0.025 |
| IBD Diagnosis |
|
|
|
| CD |
— |
— |
|
| UC |
-5.1 |
-8.0, -2.3 |
<0.001 |
| IC |
-9.2 |
-18, -0.14 |
0.047 |
| Unknown |
-4.5 |
-12, 2.7 |
0.2 |
| Moderate to Severe Disease |
0.78 |
-2.4, 4.0 |
0.6 |
| Active Steroid Use |
7.1 |
3.0, 11 |
<0.001 |
| PAM Score |
-0.14 |
-0.26, -0.03 |
0.014 |
SES –> Daily life impact
PROImp2 <- lm(PROImp ~ AGE50 + GENDERF + ibddx + ModSevere + current_meds___1 + SESIBD,
data = PAM_clean)
summary(PROImp2 )
Call:
lm(formula = PROImp ~ AGE50 + GENDERF + ibddx + ModSevere + current_meds___1 +
SESIBD, data = PAM_clean)
Residuals:
Min 1Q Median 3Q Max
-18.5542 -4.0577 -0.5539 3.0497 18.6023
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 30.15776 3.67583 8.204 1.40e-13 ***
AGE50 0.51444 1.11300 0.462 0.644655
GENDERF 2.50757 1.08897 2.303 0.022781 *
ibddxUC -4.34910 1.22537 -3.549 0.000528 ***
ibddxIC -7.10943 3.92738 -1.810 0.072422 .
ibddxUnknown -5.97394 3.10103 -1.926 0.056090 .
ModSevere -0.24791 1.38992 -0.178 0.858697
current_meds___1 5.28236 1.78415 2.961 0.003610 **
SESIBD -0.10707 0.01408 -7.602 3.94e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.514 on 139 degrees of freedom
Multiple R-squared: 0.4609, Adjusted R-squared: 0.4299
F-statistic: 14.86 on 8 and 139 DF, p-value: 1.402e-15
broom::glance(PROImp2 )
broom::tidy(PROImp2)
model_performance(PROImp2)
# Indices of model performance
AIC | BIC | R2 | R2 (adj.) | RMSE | Sigma
------------------------------------------------------
985.397 | 1015.369 | 0.461 | 0.430 | 6.313 | 6.514
tbl_regression(PROImp2, label = list(AGE50 ~ "Age > 50", GENDERF~ "Female", ibddx ~ "IBD Diagnosis", ModSevere ~ "Moderate to Severe Disease", SESIBD ~ "SES Score", current_meds___1 ~ "Active Steroid Use"))
| Characteristic |
Beta |
95% CI |
p-value |
| Age > 50 |
0.51 |
-1.7, 2.7 |
0.6 |
| Female |
2.5 |
0.35, 4.7 |
0.023 |
| IBD Diagnosis |
|
|
|
| CD |
— |
— |
|
| UC |
-4.3 |
-6.8, -1.9 |
<0.001 |
| IC |
-7.1 |
-15, 0.66 |
0.072 |
| Unknown |
-6.0 |
-12, 0.16 |
0.056 |
| Moderate to Severe Disease |
-0.25 |
-3.0, 2.5 |
0.9 |
| Active Steroid Use |
5.3 |
1.8, 8.8 |
0.004 |
| SES Score |
-0.11 |
-0.13, -0.08 |
<0.001 |
NA
NA
PAM + SES –> Daily life impact
PROImp3 <- lm(PROImp ~ AGE50 + GENDERF + ibddx + ModSevere + current_meds___1 + pamtotal + SESIBD,
data = PAM_clean)
summary(PROImp3 )
Call:
lm(formula = PROImp ~ AGE50 + GENDERF + ibddx + ModSevere + current_meds___1 +
pamtotal + SESIBD, data = PAM_clean)
Residuals:
Min 1Q Median 3Q Max
-18.5583 -4.0652 -0.5632 3.0320 18.5940
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 30.095441 4.399968 6.840 2.36e-10 ***
AGE50 0.518316 1.126952 0.460 0.646292
GENDERF 2.507389 1.092929 2.294 0.023289 *
ibddxUC -4.346810 1.232961 -3.526 0.000574 ***
ibddxIC -7.115468 3.948416 -1.802 0.073711 .
ibddxUnknown -5.972715 3.112596 -1.919 0.057063 .
ModSevere -0.246027 1.396834 -0.176 0.860449
current_meds___1 5.284626 1.792727 2.948 0.003759 **
pamtotal 0.001404 0.054030 0.026 0.979303
SESIBD -0.107222 0.015301 -7.008 9.79e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.537 on 138 degrees of freedom
Multiple R-squared: 0.4609, Adjusted R-squared: 0.4258
F-statistic: 13.11 on 9 and 138 DF, p-value: 5.633e-15
broom::glance(PROImp3 )
broom::tidy(PROImp3)
model_performance(PROImp3)
# Indices of model performance
AIC | BIC | R2 | R2 (adj.) | RMSE | Sigma
------------------------------------------------------
987.396 | 1020.365 | 0.461 | 0.426 | 6.313 | 6.537
tbl_regression(PROImp3, label = list(AGE50 ~ "Age > 50", GENDERF~ "Female", ibddx ~ "IBD Diagnosis", ModSevere ~ "Moderate to Severe Disease", pamtotal ~ "PAM Score", SESIBD ~ "SES Score", current_meds___1 ~ "Active Steroid Use"))
| Characteristic |
Beta |
95% CI |
p-value |
| Age > 50 |
0.52 |
-1.7, 2.7 |
0.6 |
| Female |
2.5 |
0.35, 4.7 |
0.023 |
| IBD Diagnosis |
|
|
|
| CD |
— |
— |
|
| UC |
-4.3 |
-6.8, -1.9 |
<0.001 |
| IC |
-7.1 |
-15, 0.69 |
0.074 |
| Unknown |
-6.0 |
-12, 0.18 |
0.057 |
| Moderate to Severe Disease |
-0.25 |
-3.0, 2.5 |
0.9 |
| Active Steroid Use |
5.3 |
1.7, 8.8 |
0.004 |
| PAM Score |
0.00 |
-0.11, 0.11 |
>0.9 |
| SES Score |
-0.11 |
-0.14, -0.08 |
<0.001 |
NA
Mediation analysis
library(mediation)
Impact_M <- lm(SESIBD ~ AGE50 + GENDERF + type_of_inflammatory + ModSevere + current_meds___1 + pamtotal + PROImp,
data = PAM_clean)
summary(Impact_M )
Call:
lm(formula = SESIBD ~ AGE50 + GENDERF + type_of_inflammatory +
ModSevere + current_meds___1 + pamtotal + PROImp, data = PAM_clean)
Residuals:
Min 1Q Median 3Q Max
-84.429 -20.701 2.285 20.494 83.602
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 170.4572 18.9047 9.017 1.32e-15 ***
AGE50 0.9518 5.3592 0.178 0.859
GENDERF 3.0930 5.3050 0.583 0.561
type_of_inflammatory -2.0528 3.9988 -0.513 0.609
ModSevere -4.1555 6.2843 -0.661 0.510
current_meds___1 1.1120 8.7488 0.127 0.899
pamtotal 1.0436 0.2427 4.301 3.17e-05 ***
PROImp -2.3181 0.3348 -6.923 1.47e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 31.32 on 140 degrees of freedom
Multiple R-squared: 0.4127, Adjusted R-squared: 0.3833
F-statistic: 14.05 on 7 and 140 DF, p-value: 9.971e-14
broom::glance(Impact_M )
tbl_regression(Impact_M, label = list(AGE50 ~ "Age > 50", GENDERF~ "Female", type_of_inflammatory ~ "IBD Diagnosis", ModSevere ~ "Moderate to Severe Disease", current_meds___1 ~ "Active Steroid Use"))
| Characteristic |
Beta |
95% CI |
p-value |
| Age > 50 |
0.95 |
-9.6, 12 |
0.9 |
| Female |
3.1 |
-7.4, 14 |
0.6 |
| IBD Diagnosis |
-2.1 |
-10, 5.9 |
0.6 |
| Moderate to Severe Disease |
-4.2 |
-17, 8.3 |
0.5 |
| Active Steroid Use |
1.1 |
-16, 18 |
0.9 |
| PAM total |
1.0 |
0.56, 1.5 |
<0.001 |
| PROImp |
-2.3 |
-3.0, -1.7 |
<0.001 |
impact1 <- lm(PROImp ~ AGE50 + GENDERF + type_of_inflammatory + ModSevere + current_meds___1 + pamtotal + SESIBD,
data = PAM_clean)
summary(impact1 )
Call:
lm(formula = PROImp ~ AGE50 + GENDERF + type_of_inflammatory +
ModSevere + current_meds___1 + pamtotal + SESIBD, data = PAM_clean)
Residuals:
Min 1Q Median 3Q Max
-21.1583 -4.5813 -0.5136 3.5836 19.2667
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 25.413500 4.711529 5.394 2.86e-07 ***
AGE50 0.684121 1.166216 0.587 0.55841
GENDERF 2.352209 1.139909 2.064 0.04091 *
type_of_inflammatory 0.963520 0.868168 1.110 0.26897
ModSevere 1.566099 1.364787 1.148 0.25313
current_meds___1 5.583644 1.846726 3.024 0.00297 **
pamtotal 0.005888 0.056245 0.105 0.91677
SESIBD -0.110016 0.015892 -6.923 1.47e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.823 on 140 degrees of freedom
Multiple R-squared: 0.4042, Adjusted R-squared: 0.3744
F-statistic: 13.57 on 7 and 140 DF, p-value: 2.586e-13
broom::glance(impact1 )
broom::tidy(impact1)
tbl_regression(impact1, label = list(AGE50 ~ "Age > 50", GENDERF~ "Female", type_of_inflammatory ~ "IBD Diagnosis", ModSevere ~ "Moderate to Severe Disease", pamtotal ~ "PAM Score", SESIBD ~ "SES Score", current_meds___1 ~ "Active Steroid Use"))
| Characteristic |
Beta |
95% CI |
p-value |
| Age > 50 |
0.68 |
-1.6, 3.0 |
0.6 |
| Female |
2.4 |
0.10, 4.6 |
0.041 |
| IBD Diagnosis |
0.96 |
-0.75, 2.7 |
0.3 |
| Moderate to Severe Disease |
1.6 |
-1.1, 4.3 |
0.3 |
| Active Steroid Use |
5.6 |
1.9, 9.2 |
0.003 |
| PAM Score |
0.01 |
-0.11, 0.12 |
>0.9 |
| SES Score |
-0.11 |
-0.14, -0.08 |
<0.001 |
# Step 3: Mediation analysis
results <- mediate(Impact_M, impact1, treat="pamtotal", mediator="SESIBD",
boot=TRUE, sims=500)
Running nonparametric bootstrap
summary(results)
Causal Mediation Analysis
Nonparametric Bootstrap Confidence Intervals with the Percentile Method
Estimate 95% CI Lower 95% CI Upper p-value
ACME -0.11481 -0.17027 -0.06 <2e-16 ***
ADE 0.00589 -0.08285 0.09 0.920
Total Effect -0.10892 -0.18562 -0.04 0.008 **
Prop. Mediated 1.05406 0.48845 2.67 0.008 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Sample Size Used: 148
Simulations: 500
LS0tCnRpdGxlOiAiUEFNX0NsZWFuIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgIHRoZW1lczogcGFwZXIKICAgdG9jOiB5ZXMKICAgdG9jX2Zsb2F0OiB5ZXMKZWRpdG9yX29wdGlvbnM6IAogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUKZGF0ZTogIjIwMjItMTEtMTgiCi0tLQoKIyBCYXNlbGluZSBjaGFyYWN0ZXJpc3RpY3MgCmBgYHtyfQpQQU1fY2xlYW4gJT4lIAogIGRwbHlyOjpzZWxlY3QoQUdFNTAsIEdFTkRFUkYsIGliZGR4LCBNb2RTZXZlcmUsY3VycmVudF9tZWRzX19fMSwgcGFtdG90YWwsIFNFU0lCRCwgUFJPSW1wKSAtPiBiYXNlbGluZQoKYmFzZWxpbmUgJT4lIHRibF9zdW1tYXJ5KGxhYmVsID0gbGlzdChBR0U1MCB+ICJBZ2UgPiA1MCIsIEdFTkRFUkZ+ICJGZW1hbGUiLCBpYmRkeCB+ICJJQkQgRGlhZ25vc2lzIiwgTW9kU2V2ZXJlIH4gIk1vZGVyYXRlIHRvIFNldmVyZSBEaXNlYXNlIixjdXJyZW50X21lZHNfX18xIH4gIkFjdGl2ZSBTdGVyb2lkIFVzZSIsIHBhbXRvdGFsIH4gIlBBTSBTY29yZSIsIFNFU0lCRCB+ICJTRVMgU2NvcmUiLCBQUk9JbXAgfiAiRGFpbHkgSW1wYWN0IFNjb3JlIiksCiAgICAgICAgc3RhdGlzdGljID0gbGlzdChhbGxfY29udGludW91cygpIH4gInttZWFufSAoe3NkfSkiKSwKICAgICAgICBtaXNzaW5nX3RleHQgPSAiKE1pc3NpbmcpIikKYGBgCgojIEJpdmFyaWF0ZSBBbmFseXNpcyAKYGBge3J9CnRibF91dl9wcm9pbXAgPC0gCiAgdGJsX3V2cmVncmVzc2lvbigKICAgIFBBTV9jbGVhbltjKCJQUk9JbXAiLCAiQUdFNTAiLCAiR0VOREVSRiIsICJpYmRkeCIsICJNb2RTZXZlcmUiLCAiY3VycmVudF9tZWRzX19fMSIsICJwYW10b3RhbCIsICJTRVNJQkQiKV0sCiAgICBtZXRob2QgPSBsbSwKICAgIHkgPSBQUk9JbXAsCiAgICBsYWJlbCA9IGxpc3QoQUdFNTAgfiAiQWdlID4gNTAiLCBHRU5ERVJGfiAiRmVtYWxlIiwgaWJkZHggfiAiSUJEIERpYWdub3NpcyIsIE1vZFNldmVyZSB+ICJNb2RlcmF0ZSB0byBTZXZlcmUgRGlzZWFzZSIsIHBhbXRvdGFsIH4gIlBBTSBTY29yZSIsIFNFU0lCRCB+ICJTRVMgU2NvcmUiLCBjdXJyZW50X21lZHNfX18xIH4gIkFjdGl2ZSBTdGVyb2lkIFVzZSIpCiAgKQpwcmludCh0YmxfdXZfcHJvaW1wLCBtZXRob2QgPSByZW5kZXIpCmBgYAoKCiMgTXVsdGl2YXJpYWJsZSBNb2RlbHMgey50YWJzZXR9CgojIyBQQU0gLT4gZGFpbHkgbGlmZSBpbXBhY3QgCmBgYHtyfQpQUk9JbXAxIDwtIGxtKFBST0ltcCB+IEFHRTUwICsgR0VOREVSRiArIGliZGR4ICsgTW9kU2V2ZXJlICsgY3VycmVudF9tZWRzX19fMSArIHBhbXRvdGFsLAogICAgICAgICAgICAgIGRhdGEgPSBQQU1fY2xlYW4pCnN1bW1hcnkoUFJPSW1wMSApCmJyb29tOjpnbGFuY2UoUFJPSW1wMSApCmJyb29tOjp0aWR5KFBST0ltcDEpCm1vZGVsX3BlcmZvcm1hbmNlKFBST0ltcDEpCnRibF9yZWdyZXNzaW9uKFBST0ltcDEsIGxhYmVsID0gbGlzdChBR0U1MCB+ICJBZ2UgPiA1MCIsIEdFTkRFUkZ+ICJGZW1hbGUiLCBpYmRkeCB+ICJJQkQgRGlhZ25vc2lzIiwgTW9kU2V2ZXJlIH4gIk1vZGVyYXRlIHRvIFNldmVyZSBEaXNlYXNlIiwgcGFtdG90YWwgfiAiUEFNIFNjb3JlIiwgY3VycmVudF9tZWRzX19fMSB+ICJBY3RpdmUgU3Rlcm9pZCBVc2UiKSkKYGBgCgoKIyMgU0VTIC0tPiBEYWlseSBsaWZlIGltcGFjdCAKYGBge3J9ClBST0ltcDIgPC0gbG0oUFJPSW1wIH4gQUdFNTAgKyBHRU5ERVJGICsgaWJkZHggKyBNb2RTZXZlcmUgKyBjdXJyZW50X21lZHNfX18xICsgU0VTSUJELAogICAgICAgICAgICAgIGRhdGEgPSBQQU1fY2xlYW4pCnN1bW1hcnkoUFJPSW1wMiApCmJyb29tOjpnbGFuY2UoUFJPSW1wMiApCmJyb29tOjp0aWR5KFBST0ltcDIpCm1vZGVsX3BlcmZvcm1hbmNlKFBST0ltcDIpCnRibF9yZWdyZXNzaW9uKFBST0ltcDIsIGxhYmVsID0gbGlzdChBR0U1MCB+ICJBZ2UgPiA1MCIsIEdFTkRFUkZ+ICJGZW1hbGUiLCBpYmRkeCB+ICJJQkQgRGlhZ25vc2lzIiwgTW9kU2V2ZXJlIH4gIk1vZGVyYXRlIHRvIFNldmVyZSBEaXNlYXNlIiwgU0VTSUJEIH4gIlNFUyBTY29yZSIsIGN1cnJlbnRfbWVkc19fXzEgfiAiQWN0aXZlIFN0ZXJvaWQgVXNlIikpCmBgYAoKIyMgUEFNICsgU0VTIC0tPiBEYWlseSBsaWZlIGltcGFjdCAKYGBge3J9ClBST0ltcDMgPC0gbG0oUFJPSW1wIH4gQUdFNTAgKyBHRU5ERVJGICsgaWJkZHggKyBNb2RTZXZlcmUgKyBjdXJyZW50X21lZHNfX18xICsgcGFtdG90YWwgKyBTRVNJQkQsCiAgICAgICAgICAgICAgZGF0YSA9IFBBTV9jbGVhbikKc3VtbWFyeShQUk9JbXAzICkKYnJvb206OmdsYW5jZShQUk9JbXAzICkKYnJvb206OnRpZHkoUFJPSW1wMykKbW9kZWxfcGVyZm9ybWFuY2UoUFJPSW1wMykKdGJsX3JlZ3Jlc3Npb24oUFJPSW1wMywgbGFiZWwgPSBsaXN0KEFHRTUwIH4gIkFnZSA+IDUwIiwgR0VOREVSRn4gIkZlbWFsZSIsIGliZGR4IH4gIklCRCBEaWFnbm9zaXMiLCBNb2RTZXZlcmUgfiAiTW9kZXJhdGUgdG8gU2V2ZXJlIERpc2Vhc2UiLCBwYW10b3RhbCB+ICJQQU0gU2NvcmUiLCBTRVNJQkQgfiAiU0VTIFNjb3JlIiwgY3VycmVudF9tZWRzX19fMSB+ICJBY3RpdmUgU3Rlcm9pZCBVc2UiKSkKCmBgYAoKCiMgTWVkaWF0aW9uIGFuYWx5c2lzIApgYGB7cn0KbGlicmFyeShtZWRpYXRpb24pCgpJbXBhY3RfTSA8LSBsbShTRVNJQkQgfiBBR0U1MCArIEdFTkRFUkYgKyB0eXBlX29mX2luZmxhbW1hdG9yeSArIE1vZFNldmVyZSArIGN1cnJlbnRfbWVkc19fXzEgKyBwYW10b3RhbCArIFBST0ltcCwKICAgICAgICAgICAgICBkYXRhID0gUEFNX2NsZWFuKQpzdW1tYXJ5KEltcGFjdF9NICkKYnJvb206OmdsYW5jZShJbXBhY3RfTSApCnRibF9yZWdyZXNzaW9uKEltcGFjdF9NLCBsYWJlbCA9IGxpc3QoQUdFNTAgfiAiQWdlID4gNTAiLCBHRU5ERVJGfiAiRmVtYWxlIiwgdHlwZV9vZl9pbmZsYW1tYXRvcnkgfiAiSUJEIERpYWdub3NpcyIsIE1vZFNldmVyZSB+ICJNb2RlcmF0ZSB0byBTZXZlcmUgRGlzZWFzZSIsIGN1cnJlbnRfbWVkc19fXzEgfiAiQWN0aXZlIFN0ZXJvaWQgVXNlIikpCgoKaW1wYWN0MSA8LSBsbShQUk9JbXAgfiBBR0U1MCArIEdFTkRFUkYgKyB0eXBlX29mX2luZmxhbW1hdG9yeSArIE1vZFNldmVyZSArIGN1cnJlbnRfbWVkc19fXzEgKyBwYW10b3RhbCArIFNFU0lCRCwKICAgICAgICAgICAgICBkYXRhID0gUEFNX2NsZWFuKQpzdW1tYXJ5KGltcGFjdDEgKQpicm9vbTo6Z2xhbmNlKGltcGFjdDEgKQpicm9vbTo6dGlkeShpbXBhY3QxKQp0YmxfcmVncmVzc2lvbihpbXBhY3QxLCBsYWJlbCA9IGxpc3QoQUdFNTAgfiAiQWdlID4gNTAiLCBHRU5ERVJGfiAiRmVtYWxlIiwgdHlwZV9vZl9pbmZsYW1tYXRvcnkgfiAiSUJEIERpYWdub3NpcyIsIE1vZFNldmVyZSB+ICJNb2RlcmF0ZSB0byBTZXZlcmUgRGlzZWFzZSIsIHBhbXRvdGFsIH4gIlBBTSBTY29yZSIsIFNFU0lCRCB+ICJTRVMgU2NvcmUiLCBjdXJyZW50X21lZHNfX18xIH4gIkFjdGl2ZSBTdGVyb2lkIFVzZSIpKQoKIyBTdGVwIDM6IE1lZGlhdGlvbiBhbmFseXNpcwpyZXN1bHRzIDwtIG1lZGlhdGUoSW1wYWN0X00sIGltcGFjdDEsIHRyZWF0PSJwYW10b3RhbCIsIG1lZGlhdG9yPSJTRVNJQkQiLAogICAgICAgICAgICAgICAgICAgYm9vdD1UUlVFLCBzaW1zPTUwMCkKc3VtbWFyeShyZXN1bHRzKQpgYGAKCg==