From 756517e79ccacd8a2b38e3ca94be83cba7c4d27c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=B7=E5=B1=BF=E6=9C=89=E7=87=95?= Date: Mon, 4 Nov 2024 19:54:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(Twinkle):=20=E6=9B=B4=E6=96=B0=E5=B0=81?= =?UTF-8?q?=E7=A6=81=E5=92=8C=E8=AD=A6=E5=91=8A=E4=BF=A1=E6=81=AF=E4=BB=A5?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E5=86=85=E5=AE=B9=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/SkinCitizen_CSS/SkinCitizen_CSS.css | 4 ++-- dist/Twinkle/Twinkle.js | 16 ++++++++-------- src/Twinkle/modules/twinkleblock.js | 9 +++------ src/Twinkle/modules/twinklewarn.js | 14 ++++---------- 4 files changed, 17 insertions(+), 26 deletions(-) diff --git a/dist/SkinCitizen_CSS/SkinCitizen_CSS.css b/dist/SkinCitizen_CSS/SkinCitizen_CSS.css index a32a53d..f4766c7 100644 --- a/dist/SkinCitizen_CSS/SkinCitizen_CSS.css +++ b/dist/SkinCitizen_CSS/SkinCitizen_CSS.css @@ -185,7 +185,7 @@ html.client-darkmode body { } } @media (min-width: 1440px) { - .ns-0 .mw-body-content .mw-parser-output > *:not(figure):not(.mw-halign-left):not(.mw-halign-center) { + .ns-0 .mw-body-content .mw-parser-output > *:not(figure):not(.mw-halign-left):not(.mw-halign-center):not(.mbox) { margin-right: 0; } .ns-0 .mw-body-content .mw-parser-output > div.tleft, @@ -366,4 +366,4 @@ header.mw-body-header { /* */ -/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL1NraW5DaXRpemVuX0NTUy9Ta2luQ2l0aXplbl9DU1MubGVzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyog5q2k5aSE55qEQ1NT5Y+q5Lya5b2x5ZON5L2/55SoQ2l0aXplbuearuiCpOeahOeUqOaItyAqL1xuI24tdGVhaG91c2UgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvZS9lZC9UZWFob3VzZV9pY29uLnN2ZycpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuI24tbm90aWNlYm9hcmQgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMS8xOC9Ob3RpY2VfYm9hcmRfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLWNvbnRyaWJ1dGlvbnNjb3JlcyBhOjpiZWZvcmUge1xuICBjb250ZW50OiB1cmwoJ2h0dHBzOi8veW91c2hvdS53aWtpL2ltYWdlcy8wLzA3L0NvbnRyaWJ1dGlvbl9zY29yZV9pY29uLnN2ZycpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuI24taGVscG1lbnUgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMi8yYi9IZWxwX21lbnVfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLWdldHN0YXJ0IGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzIvMjIvR2V0X3N0YXJ0X2ljb24uc3ZnJyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4jbi1mb3JtYXRib29rIGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzMvMzMvRm9ybWF0X2Jvb2tfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLXJ1bGVzIGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzIvMmUvUnVsZXNfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLWZhbm1hZGUtbWFpbnBhZ2UgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMC8wMi9GYW5tYWRlX21haW5wYWdlX2ljb24uc3ZnJyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4jbi1mYW5tYWRlLWd1aWRlIGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzcvNzEvRmFubWFkZV9ndWlkZV9pY29uLnN2ZycpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLyog5LyY5YyW5p2h55uu5YiG57G75pi+56S65pWI5p6cICovXG4ubXctbm9ybWFsLWNhdGxpbmtzIHtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBwYWRkaW5nOiAyZW0gbWluKDEuOGVtLCA0dncpIDJlbSBtaW4oMS44ZW0sIDR2dyk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQwLDI0OCwyNTUsMC42NTA5OCk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG4vKiDliIbnsbvlhpLlj7fkuI3mjaLooYwgQnkgQmFpZ2VpICovXG4ubXctbm9ybWFsLWNhdGxpbmtzID4gYSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cbi8qIOWfuuehgOagt+W8jyAqL1xuLyog5Y6f6IOM5pmv5Zu+IGh0dHBzOi8veW91c2hvdS53aWtpL2ltYWdlcy9mL2ZmLyVFNiU5QyU4OSVFNSU4NSVCRCVFNyU4NCU4OSVFNSU4QSVBOCVFNyU5NCVCQiVFNiU4OCVBQSVFNSU5QiVCRS5qcGcgKi9cbi8qIOWOn+iDjOaZr+WbvuWPjeebuCBodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMy8zYS8lRTYlOUMlODklRTUlODUlQkQlRTclODQlODklRTUlOEElQTglRTclOTQlQkIlRTYlODglQUElRTUlOUIlQkUtJUU1JThGJThEJUU3JTlCJUI4LmpwZyAqL1xuLypcbmJvZHkge1xuXHRiYWNrZ3JvdW5kOiB1cmwoJ2h0dHBzOi8veW91c2hvdS53aWtpL2ltYWdlcy9mL2ZmLyVFNiU5QyU4OSVFNSU4NSVCRCVFNyU4NCU4OSVFNSU4QSVBOCVFNyU5NCVCQiVFNiU4OCVBQSVFNSU5QiVCRS5qcGcnKVxuXHRcdGZpeGVkIDEwMCUgMDtcblx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cbi5jbGllbnQtZGFya21vZGUgYm9keSB7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzMvM2EvJUU2JTlDJTg5JUU1JTg1JUJEJUU3JTg0JTg5JUU1JThBJUE4JUU3JTk0JUJCJUU2JTg4JUFBJUU1JTlCJUJFLSVFNSU4RiU4RCVFNyU5QiVCOC5qcGcnKTtcbn1cbiovXG4vKlxu5omL5py65rWP6KeI5ZmoKENocm9tZSwgU2FmYXJpKeeahHZpZXdwb3J05bC65a+45Lya5Zug5Zyw5Z2A5qCP5pS26LW36ICM5pS55Y+Y77yM55u05o6l5L2/55SoYmFja2dyb3VuZC1zaXplOiBjb3Zlclxu5Lya6YCg5oiQ6IOM5pmv6Lez5Yqo44CC5Yib5bu65LiA5Liq5oGS5a6a5aSn5bCP55qE6IOM5pmv5YWD57Sg5Y+v5Lul6KeE6YG/5q2k6Zeu6aKY77yM5ZCM5pe25o+Q5L6b5LqG5Y+q5a+56IOM5pmv5Zu+5bqU55SoZmlsdGVy55qE5py65Lya44CCXG5cbmJhY2tncm91bmQtc2l6ZTogY292ZXIg5oiWIG9iamVjdC1maXQ6IGNvdmVyIOeahOWbvueJh+WwuuWvuOiuoeeul+S4jeS+v+eUqOWFtuS7lkNTU+WunueOsO+8jOWPguingVxuaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTE2NzA4NzQvaXMtdGhlcmUtYW4tZXF1aXZhbGVudC10by1iYWNrZ3JvdW5kLXNpemUtY292ZXItYW5kLWNvbnRhaW4tZm9yLWltYWdlLWVsZW1lbnRzIzI4NzcxODk0XG7ku4Xkvb/nlKggYmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMHZoIOS8muS7pOaoqueJiOiDjOaZr+WbvuS4jei2s+S7peWhq+a7oeWuveWxj+OAglxuKi9cbmh0bWw6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IC01O1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLWhlYWRlci1zaXplKSk7XG4gIG1hcmdpbi10b3A6IHZhcigtLWhlYWRlci1zaXplKTtcbiAgYmFja2dyb3VuZDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvZi9mZi8lRTYlOUMlODklRTUlODUlQkQlRTclODQlODklRTUlOEElQTglRTclOTQlQkIlRTYlODglQUElRTUlOUIlQkUuanBnJykgMTAwJSAwO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuaHRtbC5jbGllbnQtZGFya21vZGU6OmJlZm9yZSB7XG4gIGZpbHRlcjogaW52ZXJ0KDEpIGh1ZS1yb3RhdGUoMTgwZGVnKTtcbn1cbmh0bWwsXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xufVxuLyog5L+d6K+B5o6n5Lu26aKc6Imy5qih5byP5LiA6Ie0ICovXG5odG1sIHtcbiAgLS1jc3N0b29scy1jb2xvci1zY2hlbWUtLWxpZ2h0OiBpbml0aWFsO1xuICBjb2xvci1zY2hlbWU6IG9ubHkgbGlnaHQ7XG59XG4vKiDlhoXlrrnmoYbmoLflvI8gKi9cbi5tdy1ib2R5LWNvbnRlbnQge1xuICBwYWRkaW5nOiAyZW0gbWluKDEuOGVtLCA0dncpIDJlbSBtaW4oMS44ZW0sIDR2dyk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQwLDI0OCwyNTUsMC42NTA5OCk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGNvbG9yOiAjMDAwO1xuICBsaW5lLWhlaWdodDogMi4xNDI4NTcxNDtcbn1cbi5tdy1jb250ZW50LWx0ciBvbCB7XG4gIG1hcmdpbjogMC4zZW0gMCAwIDFlbTtcbn1cbi5pbWctdHgyIGltZyB7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbi8qIOa3seiJsuaooeW8j+minOiJsuS4u+mimOmFjee9riAqL1xuaHRtbC5jbGllbnQtZGFya21vZGUgYm9keSB7XG4gIC8qIOWboOS4uuWPjeiJsmJvZHnkuYvlkI7mt7HoibLmqKHlvI/mjqfku7blj5jmiJDkuobmtYXoibIg5omA5Lul6KaB5Y+N5Zue5p2lIOaAjuS5iOagtyDmmK/kuI3mmK/lvojnpZ7lpYcgKi9cbiAgLS1jc3N0b29scy1jb2xvci1zY2hlbWUtLWxpZ2h0OiBpbml0aWFsO1xuICBjb2xvci1zY2hlbWU6IG9ubHkgbGlnaHQ7XG4gIC0tY29sb3Itc3VyZmFjZS0wOiBoc2woMCwgMCUsIDEwMCUpO1xuICAtLWNvbG9yLXN1cmZhY2UtMTogaHNsKDAsIDAlLCA5MCUpO1xuICAtLWNvbG9yLXN1cmZhY2UtMjogaHNsKDIxMCwgMTclLCA4OCUpO1xuICAtLWNvbG9yLXN1cmZhY2UtMzogaHNsKDIyMCwgMTclLCA4NyUpO1xuICAtLWNvbG9yLXN1cmZhY2UtNDogaHNsKDIxMywgOSUsIDg1JSk7XG59XG4vKiDlt6bkuIrop5Llm77moIfkuI3lj43oibIgKi9cbi5jbGllbnQtZGFya21vZGUgLnNraW4tY2l0aXplbiAubXctbG9nby1pY29uIHtcbiAgZmlsdGVyOiBpbnZlcnQoMSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xufVxuLyog5a2Q5qCH6aKY6ZqQ6JePICovXG4jc2l0ZVN1YiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiog5rGJ5Luq5pyJ5YW954SJ5qCH6aKYXG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0hZWW91U2hvdVlhblcnO1xuICBzcmM6IHVybCgnaHR0cHM6Ly9naXRjZG4ucWl1d2VuLm5ldC5jbi9ZU0FSQ0hJVkVTL2ZvbnRzL3Jhdy9icmFuY2gvbWFpbi9zcmMvSFlZb3VTaG91WWFuVy53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0wMDdFLCBVKzRFMDAtOUZGRiwgVStGRjAwLUZGRUY7XG59XG5cbi5tdy1ib2R5LWNvbnRlbnQgaDEsXG4ubXctYm9keS1jb250ZW50IGgyLFxuaDEjZmlyc3RIZWFkaW5nIHtcbiAgZm9udC1mYW1pbHk6XG4gICAgXCJIWVlvdVNob3VZYW5XXCIsXG4gICAgLWFwcGxlLXN5c3RlbSxcbiAgICBCbGlua01hY1N5c3RlbUZvbnQsXG4gICAgXCJNaVNhbnNcIixcbiAgICBcIuWwj+exs+WFsOS6rSBQcm8gVkZcIixcbiAgICBcIk9QUE8gU2Fuc1wiLFxuICAgIFwiSGFybW9ueU9TIFNhbnNcIixcbiAgICBcIkhPTk9SIFNhbnNcIixcbiAgICBcIlNvdXJjZSBTYW5zIDNcIixcbiAgICBcIlNvdXJjZSBTYW5zIFByb1wiLFxuICAgIFwiU291cmNlIEhhbiBTYW5zIFRDXCIsXG4gICAgXCJIZWx2ZXRpY2FcIixcbiAgICBcIlJvYm90b1wiLFxuICAgIFwiU0ZQcm9EaXNwbGF5LVJlZ3VsYXJcIixcbiAgICBzYW5zLXNlcmlmLFxuICAgIFwiUGxhbmdvdGhpYyBQMVwiLFxuICAgIFwiUGxhbmdvdGhpYyBQMlwiLFxuICAgIFwi5pa55q2j5a6L5L2TUy3otoXlpKflrZfnrKbpm4ZcIixcbiAgICBcIuaWueato+Wui+S9k1Mt6LaF5aSn5a2X56ym6ZuGKFNJUClcIixcbiAgICBcIuaWh+aziempv+etieWuveato+m7kVwiLFxuICAgIFwiQmFiZWxTdG9uZSBIYW5cIixcbiAgICBcIkhhbmFNaW5CXCIsXG4gICAgXCJGWlNvbmctRXh0ZW5kZWRcIixcbiAgICBcIkFyaWFsIFVuaWNvZGUgTVNcIixcbiAgICBcIkNvZGUyMDAyXCIsXG4gICAgXCJERlNvbmdTdGRcIixcbiAgICBcInVuaWZvbnRcIixcbiAgICBcIkFwcGxlIENvbG9yIEVtb2ppXCIsXG4gICAgXCJTZWdvZSBVSSBFbW9qaVwiLFxuICAgIFwiU2Vnb2UgVUkgU3ltYm9sXCI7XG59XG4gKi9cbi8qIOe7n+S4gOaJi+acuuerr+eUqOaIt+Wtl+S9k+Wkp+Wwj+S/ruaUueeJiCAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICBib2R5IHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgfVxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICB9XG4gIGgzIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgfVxuICBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICB9XG4gIGg1IHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICB9XG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cbiAgcCB7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuICAubXctc3BlY2lhbC1WaWV3QXZhdGFyIHAgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbiAgI2ZpbGUgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbn1cbi8qIOmhtemdouWGheWuueWuveW6piAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDE0NDBweCkge1xuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gKjpub3QoZmlndXJlKTpub3QoLm13LWhhbGlnbi1sZWZ0KTpub3QoLm13LWhhbGlnbi1jZW50ZXIpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IGRpdi50bGVmdCxcbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IHRhYmxlLnRsZWZ0LFxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gZmlndXJlLnRsZWZ0LFxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gZGl2LmZsb2F0bGVmdCxcbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IHRhYmxlLmZsb2F0bGVmdCxcbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IGZpZ3VyZS5mbG9hdGxlZnQsXG4gIC5ucy0wIC5tdy1ib2R5LWNvbnRlbnQgLm13LXBhcnNlci1vdXRwdXQgPiBkaXYubXctaGFsaWduLWxlZnQsXG4gIC5ucy0wIC5tdy1ib2R5LWNvbnRlbnQgLm13LXBhcnNlci1vdXRwdXQgPiB0YWJsZS5tdy1oYWxpZ24tbGVmdCxcbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IGZpZ3VyZS5tdy1oYWxpZ24tbGVmdCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IHRhYmxlOm5vdCgubWV0YWRhdGEpOm5vdCguaW5mb2JveCk6bm90KC5zaWRlYmFyKTpub3QoLnZlcnRpY2FsLW5hdmJveCkge1xuICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi8qIOa7muWKqOadoeaYvuekuuS4u+mimOiJsiAqL1xuKiB7XG4gIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSkgdHJhbnNwYXJlbnQ7XG4gIGNhcmV0LWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cbi8qIFtbU3BlY2lhbDrlsI/lt6XlhbddXeagh+mimCAqL1xuLm13LXNwZWNpYWwtR2FkZ2V0cyBoMSxcbi5tdy1zcGVjaWFsLUdhZGdldHMgaDIsXG4ubXctc3BlY2lhbC1HYWRnZXRzIGgzLFxuLm13LXNwZWNpYWwtR2FkZ2V0cyBoNCxcbi5tdy1zcGVjaWFsLUdhZGdldHMgaDUsXG4ubXctc3BlY2lhbC1HYWRnZXRzIGg2IHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cbi8qIFtbU3BlY2lhbDrmnIDov5Hmm7TmlLldXeagh+mimCAqL1xuLm13LWNoYW5nZXNsaXN0IGg0IHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cbi8qIOWumuWItuWMluagh+mimOagt+W8jyAqL1xuaGVhZGVyLm13LWJvZHktaGVhZGVyIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNDAsIDI1NSwgMjU1LCAwLjgpO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI0MCwgMjU1LCAyNDAsIDAuNyk7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG59XG4vKiDpmpDol4/moIfpopjljp/og4zmma8gKi9cbi5tdy1ib2R5LWhlYWRlcjo6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qIOebruW9lSAoVE9DKSAqL1xuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzIwcHgpIHtcbiAgLnRvYyxcbiAgI3RvYyB7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cbi8qIOS8mOWMlueUqOaIt+mhteWktOWDj+aYvuekuiAqL1xuLnNraW4tY2l0aXplbiAjdXNlci1yb290cGFnZS1hdmF0YXIge1xuICBtYXJnaW4tcmlnaHQ6IDAuMmVtO1xufVxuLyog5Y+Y6YePICovXG46cm9vdCB7XG4gIC0tZm9udHMtc2FuczogLWFwcGxlLXN5c3RlbSwgJ0JsaW5rTWFjU3lzdGVtRm9udCcsICdNaVNhbnMnLCAn5bCP57Gz5YWw5LqtIFBybyBWRicsICdPUFBPIFNhbnMnLCAnSGFybW9ueU9TIFNhbnMnLFxuXHRcdCdIT05PUiBTYW5zJywgJ1NvdXJjZSBTYW5zIDMnLCAnU291cmNlIFNhbnMgUHJvJywgJ1NvdXJjZSBIYW4gU2FucyBTQycsICdIZWx2ZXRpY2EnLCAnUm9ib3RvJyxcblx0XHQnU0ZQcm9EaXNwbGF5LVJlZ3VsYXInLCBzYW5zLXNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJztcbiAgLS1mb250cy1zZXJpZjogJ1NvdXJjZSBTZXJpZicsICdTb3VyY2UgSGFuIFNlcmlmIFNDJywgJ0xpbnV4IExpYmVydGluZScsICdHZW9yZ2lhJywgJ1RpbWVzIE5ldyBSb21hbicsICdUaW1lcycsXG5cdFx0J1NUU29uZyBTQycsICdTaW1TdW4nLCBzZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCc7XG4gIC0tZm9udHMtbW9ub3NwYWNlOiAnQ29uc29sYXMnLCAnSmV0QnJhaW5zIE1vbm8nLCAnU291cmNlIENvZGUgUHJvJywgJ01lbmxvJywgJ1NGTW9uby1SZWd1bGFyJywgJ1JvYm90byBNb25vJyxcblx0XHQnTW9uYWNvJywgJ0xpYmVyYXRpb24gTW9ubycsICdDb3VyaWVyIE5ldycsICdDb3VyaWVyJywgbW9ub3NwYWNlLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLFxuXHRcdCdTZWdvZSBVSSBTeW1ib2wnO1xuICAtLWJvcmRlci1jb2xvci1iYXNlOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAtLWJvcmRlci1jb2xvci1iYXNlLS1saWdodGVyOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIC0tYm9yZGVyLWNvbG9yLWJhc2UtLWRhcmtlcjogcmdiYSgwLCAwLCAwLCAwLjgpO1xufVxuOnJvb3Q6bGFuZyh6aC1oYW50KSB7XG4gIC0tZm9udHMtc2FuczogLWFwcGxlLXN5c3RlbSwgJ0JsaW5rTWFjU3lzdGVtRm9udCcsICdNaVNhbnMnLCAn5bCP57Gz5YWw5LqtIFBybyBWRicsICdPUFBPIFNhbnMnLCAnSGFybW9ueU9TIFNhbnMnLFxuXHRcdCdIT05PUiBTYW5zJywgJ1NvdXJjZSBTYW5zIDMnLCAnU291cmNlIFNhbnMgUHJvJywgJ1NvdXJjZSBIYW4gU2FucyBUQycsICdIZWx2ZXRpY2EnLCAnUm9ib3RvJyxcblx0XHQnU0ZQcm9EaXNwbGF5LVJlZ3VsYXInLCBzYW5zLXNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJztcbiAgLS1mb250cy1zZXJpZjogJ1NvdXJjZSBTZXJpZicsICdTb3VyY2UgSGFuIFNlcmlmIFRDJywgJ0xpbnV4IExpYmVydGluZScsICdHZW9yZ2lhJywgJ1RpbWVzIE5ldyBSb21hbicsICdUaW1lcycsXG5cdFx0J01pbmdMaVUnLCAnU2ltU3VuJywgc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnO1xufVxuLyog5Y+Y5L2T6I+c5Y2VICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3MjBweCkge1xuICAjY2l0aXplbi1sYW5ndWFnZXNfX2NhcmQge1xuICAgIHJpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLXh4bCkgKiAyKTtcbiAgfVxufVxuLyog5Y+v6KeG5YyW57yW6L6R5Zmo55WM6Z2i77yM6ZqQ6JeP5qCH6aKYICovXG4udmUtYWN0aXZhdGVkIGgxI2ZpcnN0SGVhZGluZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4udmUtYWN0aXZhdGVkIC5jaXRpemVuLWJvZHktaGVhZGVyLS1zdGlja3kgLm13LWJvZHktaGVhZGVyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnZlLWluaXQtbXctZGVza3RvcEFydGljbGVUYXJnZXQgI2JvZHlDb250ZW50IHtcbiAgbWFyZ2luLXRvcDogY2FsYygyICogdmFyKC0tc3BhY2UtbWQpKTtcbn1cbi5tdy11aS1pY29uLXdpa2ltZWRpYS1oZWFydCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB0PVwiMTcwODM0ODEyOTQwN1wiIGNsYXNzPVwiaWNvblwiIHZpZXdCb3g9XCIwIDAgMTAyNCAxMDI0XCIgdmVyc2lvbj1cIjEuMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBwLWlkPVwiNDMzOFwiIHdpZHRoPVwiMjAwXCIgaGVpZ2h0PVwiMjAwXCI+PHBhdGggZD1cIk01MTIgODk2YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDEtMzAuMjkzMzMzLTEyLjM3MzMzM2wtMzMxLjUyLTMzMS45NDY2NjdhMjI0LjQyNjY2NyAyMjQuNDI2NjY3IDAgMCAxIDAtMzE1LjczMzMzMyAyMjMuNTczMzMzIDIyMy41NzMzMzMgMCAwIDEgMzE1LjczMzMzMyAwTDUxMiAyODIuMDI2NjY3bDQ2LjA4LTQ2LjA4YTIyMy41NzMzMzMgMjIzLjU3MzMzMyAwIDAgMSAzMTUuNzMzMzMzIDAgMjI0LjQyNjY2NyAyMjQuNDI2NjY3IDAgMCAxIDAgMzE1LjczMzMzM2wtMzMxLjUyIDMzMS45NDY2NjdBNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMSA1MTIgODk2elwiIHAtaWQ9XCI0MzM5XCI+PC9wYXRoPjwvc3ZnPicpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG59XG4vKiDkv67lpI0gdG9vbGJhciAqL1xuI213LWNvbnRlbnQtc3VidGl0bGUsXG4ubXctdW5kZWxldGUtc3VidGl0bGUge1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQwLCAyNDgsIDI1NSwgMC42NSk7XG4gIHBhZGRpbmc6IDVweDtcbn1cbiNtdy1jb250ZW50LXN1YnRpdGxlOmVtcHR5LFxuLm13LXVuZGVsZXRlLXN1YnRpdGxlOmVtcHR5IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5jbGllbnQtZGFya21vZGUgW3R5cGVvZn49J213OkZpbGUnXSBpbWcsXG4uY2xpZW50LWRhcmttb2RlIFt0eXBlb2Z+PSdtdzpGaWxlL1RodW1iJ10gaW1nLFxuLmNsaWVudC1kYXJrbW9kZSBbdHlwZW9mfj0nbXc6RmlsZS9GcmFtZSddIGltZyxcbi5jbGllbnQtZGFya21vZGUgW3R5cGVvZn49J213OkZpbGUvRnJhbWVsZXNzJ10gaW1nLFxuLmNsaWVudC1kYXJrbW9kZSAubXctaGFsaWduLWxlZnQgaW1nLFxuLmNsaWVudC1kYXJrbW9kZSAubXctaGFsaWduLXJpZ2h0IGltZyxcbi5jbGllbnQtZGFya21vZGUgLm13LWhhbGlnbi1jZW50ZXIgaW1nIHtcbiAgd2lkdGg6IGF1dG87XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLENBQUMsV0FBVyxDQUFDO0FBQ1gsV0FBUztBQUNULG9CQUFrQixnQkFBZ0IsV0FBVyxFQUFFO0FBQy9DLFdBQVM7QUFDVCxTQUFPO0FBQ1AsVUFBUTtBQUNSLGtCQUFnQjtBQUNsQjtBQUNBLENBQUMsY0FBYyxDQUFDO0FBQ2QsV0FBUztBQUNULG9CQUFrQixnQkFBZ0IsV0FBVyxFQUFFO0FBQy9DLFdBQVM7QUFDVCxTQUFPO0FBQ1AsVUFBUTtBQUNSLGtCQUFnQjtBQUNsQjtBQUNBLENB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 */ +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL1NraW5DaXRpemVuX0NTUy9Ta2luQ2l0aXplbl9DU1MubGVzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyog5q2k5aSE55qEQ1NT5Y+q5Lya5b2x5ZON5L2/55SoQ2l0aXplbuearuiCpOeahOeUqOaItyAqL1xuI24tdGVhaG91c2UgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvZS9lZC9UZWFob3VzZV9pY29uLnN2ZycpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuI24tbm90aWNlYm9hcmQgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMS8xOC9Ob3RpY2VfYm9hcmRfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLWNvbnRyaWJ1dGlvbnNjb3JlcyBhOjpiZWZvcmUge1xuICBjb250ZW50OiB1cmwoJ2h0dHBzOi8veW91c2hvdS53aWtpL2ltYWdlcy8wLzA3L0NvbnRyaWJ1dGlvbl9zY29yZV9pY29uLnN2ZycpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuI24taGVscG1lbnUgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMi8yYi9IZWxwX21lbnVfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLWdldHN0YXJ0IGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzIvMjIvR2V0X3N0YXJ0X2ljb24uc3ZnJyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4jbi1mb3JtYXRib29rIGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzMvMzMvRm9ybWF0X2Jvb2tfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLXJ1bGVzIGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzIvMmUvUnVsZXNfaWNvbi5zdmcnKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiNuLWZhbm1hZGUtbWFpbnBhZ2UgYTo6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMC8wMi9GYW5tYWRlX21haW5wYWdlX2ljb24uc3ZnJyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4jbi1mYW5tYWRlLWd1aWRlIGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzcvNzEvRmFubWFkZV9ndWlkZV9pY29uLnN2ZycpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLyog5LyY5YyW5p2h55uu5YiG57G75pi+56S65pWI5p6cICovXG4ubXctbm9ybWFsLWNhdGxpbmtzIHtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBwYWRkaW5nOiAyZW0gbWluKDEuOGVtLCA0dncpIDJlbSBtaW4oMS44ZW0sIDR2dyk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQwLDI0OCwyNTUsMC42NTA5OCk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG4vKiDliIbnsbvlhpLlj7fkuI3mjaLooYwgQnkgQmFpZ2VpICovXG4ubXctbm9ybWFsLWNhdGxpbmtzID4gYSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cbi8qIOWfuuehgOagt+W8jyAqL1xuLyog5Y6f6IOM5pmv5Zu+IGh0dHBzOi8veW91c2hvdS53aWtpL2ltYWdlcy9mL2ZmLyVFNiU5QyU4OSVFNSU4NSVCRCVFNyU4NCU4OSVFNSU4QSVBOCVFNyU5NCVCQiVFNiU4OCVBQSVFNSU5QiVCRS5qcGcgKi9cbi8qIOWOn+iDjOaZr+WbvuWPjeebuCBodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvMy8zYS8lRTYlOUMlODklRTUlODUlQkQlRTclODQlODklRTUlOEElQTglRTclOTQlQkIlRTYlODglQUElRTUlOUIlQkUtJUU1JThGJThEJUU3JTlCJUI4LmpwZyAqL1xuLypcbmJvZHkge1xuXHRiYWNrZ3JvdW5kOiB1cmwoJ2h0dHBzOi8veW91c2hvdS53aWtpL2ltYWdlcy9mL2ZmLyVFNiU5QyU4OSVFNSU4NSVCRCVFNyU4NCU4OSVFNSU4QSVBOCVFNyU5NCVCQiVFNiU4OCVBQSVFNSU5QiVCRS5qcGcnKVxuXHRcdGZpeGVkIDEwMCUgMDtcblx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cbi5jbGllbnQtZGFya21vZGUgYm9keSB7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnaHR0cHM6Ly95b3VzaG91Lndpa2kvaW1hZ2VzLzMvM2EvJUU2JTlDJTg5JUU1JTg1JUJEJUU3JTg0JTg5JUU1JThBJUE4JUU3JTk0JUJCJUU2JTg4JUFBJUU1JTlCJUJFLSVFNSU4RiU4RCVFNyU5QiVCOC5qcGcnKTtcbn1cbiovXG4vKlxu5omL5py65rWP6KeI5ZmoKENocm9tZSwgU2FmYXJpKeeahHZpZXdwb3J05bC65a+45Lya5Zug5Zyw5Z2A5qCP5pS26LW36ICM5pS55Y+Y77yM55u05o6l5L2/55SoYmFja2dyb3VuZC1zaXplOiBjb3Zlclxu5Lya6YCg5oiQ6IOM5pmv6Lez5Yqo44CC5Yib5bu65LiA5Liq5oGS5a6a5aSn5bCP55qE6IOM5pmv5YWD57Sg5Y+v5Lul6KeE6YG/5q2k6Zeu6aKY77yM5ZCM5pe25o+Q5L6b5LqG5Y+q5a+56IOM5pmv5Zu+5bqU55SoZmlsdGVy55qE5py65Lya44CCXG5cbmJhY2tncm91bmQtc2l6ZTogY292ZXIg5oiWIG9iamVjdC1maXQ6IGNvdmVyIOeahOWbvueJh+WwuuWvuOiuoeeul+S4jeS+v+eUqOWFtuS7lkNTU+WunueOsO+8jOWPguingVxuaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTE2NzA4NzQvaXMtdGhlcmUtYW4tZXF1aXZhbGVudC10by1iYWNrZ3JvdW5kLXNpemUtY292ZXItYW5kLWNvbnRhaW4tZm9yLWltYWdlLWVsZW1lbnRzIzI4NzcxODk0XG7ku4Xkvb/nlKggYmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMHZoIOS8muS7pOaoqueJiOiDjOaZr+WbvuS4jei2s+S7peWhq+a7oeWuveWxj+OAglxuKi9cbmh0bWw6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IC01O1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLWhlYWRlci1zaXplKSk7XG4gIG1hcmdpbi10b3A6IHZhcigtLWhlYWRlci1zaXplKTtcbiAgYmFja2dyb3VuZDogdXJsKCdodHRwczovL3lvdXNob3Uud2lraS9pbWFnZXMvZi9mZi8lRTYlOUMlODklRTUlODUlQkQlRTclODQlODklRTUlOEElQTglRTclOTQlQkIlRTYlODglQUElRTUlOUIlQkUuanBnJykgMTAwJSAwO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuaHRtbC5jbGllbnQtZGFya21vZGU6OmJlZm9yZSB7XG4gIGZpbHRlcjogaW52ZXJ0KDEpIGh1ZS1yb3RhdGUoMTgwZGVnKTtcbn1cbmh0bWwsXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xufVxuLyog5L+d6K+B5o6n5Lu26aKc6Imy5qih5byP5LiA6Ie0ICovXG5odG1sIHtcbiAgLS1jc3N0b29scy1jb2xvci1zY2hlbWUtLWxpZ2h0OiBpbml0aWFsO1xuICBjb2xvci1zY2hlbWU6IG9ubHkgbGlnaHQ7XG59XG4vKiDlhoXlrrnmoYbmoLflvI8gKi9cbi5tdy1ib2R5LWNvbnRlbnQge1xuICBwYWRkaW5nOiAyZW0gbWluKDEuOGVtLCA0dncpIDJlbSBtaW4oMS44ZW0sIDR2dyk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQwLDI0OCwyNTUsMC42NTA5OCk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGNvbG9yOiAjMDAwO1xuICBsaW5lLWhlaWdodDogMi4xNDI4NTcxNDtcbn1cbi5tdy1jb250ZW50LWx0ciBvbCB7XG4gIG1hcmdpbjogMC4zZW0gMCAwIDFlbTtcbn1cbi5pbWctdHgyIGltZyB7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbi8qIOa3seiJsuaooeW8j+minOiJsuS4u+mimOmFjee9riAqL1xuaHRtbC5jbGllbnQtZGFya21vZGUgYm9keSB7XG4gIC8qIOWboOS4uuWPjeiJsmJvZHnkuYvlkI7mt7HoibLmqKHlvI/mjqfku7blj5jmiJDkuobmtYXoibIg5omA5Lul6KaB5Y+N5Zue5p2lIOaAjuS5iOagtyDmmK/kuI3mmK/lvojnpZ7lpYcgKi9cbiAgLS1jc3N0b29scy1jb2xvci1zY2hlbWUtLWxpZ2h0OiBpbml0aWFsO1xuICBjb2xvci1zY2hlbWU6IG9ubHkgbGlnaHQ7XG4gIC0tY29sb3Itc3VyZmFjZS0wOiBoc2woMCwgMCUsIDEwMCUpO1xuICAtLWNvbG9yLXN1cmZhY2UtMTogaHNsKDAsIDAlLCA5MCUpO1xuICAtLWNvbG9yLXN1cmZhY2UtMjogaHNsKDIxMCwgMTclLCA4OCUpO1xuICAtLWNvbG9yLXN1cmZhY2UtMzogaHNsKDIyMCwgMTclLCA4NyUpO1xuICAtLWNvbG9yLXN1cmZhY2UtNDogaHNsKDIxMywgOSUsIDg1JSk7XG59XG4vKiDlt6bkuIrop5Llm77moIfkuI3lj43oibIgKi9cbi5jbGllbnQtZGFya21vZGUgLnNraW4tY2l0aXplbiAubXctbG9nby1pY29uIHtcbiAgZmlsdGVyOiBpbnZlcnQoMSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xufVxuLyog5a2Q5qCH6aKY6ZqQ6JePICovXG4jc2l0ZVN1YiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiog5rGJ5Luq5pyJ5YW954SJ5qCH6aKYXG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0hZWW91U2hvdVlhblcnO1xuICBzcmM6IHVybCgnaHR0cHM6Ly9naXRjZG4ucWl1d2VuLm5ldC5jbi9ZU0FSQ0hJVkVTL2ZvbnRzL3Jhdy9icmFuY2gvbWFpbi9zcmMvSFlZb3VTaG91WWFuVy53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0wMDdFLCBVKzRFMDAtOUZGRiwgVStGRjAwLUZGRUY7XG59XG5cbi5tdy1ib2R5LWNvbnRlbnQgaDEsXG4ubXctYm9keS1jb250ZW50IGgyLFxuaDEjZmlyc3RIZWFkaW5nIHtcbiAgZm9udC1mYW1pbHk6XG4gICAgXCJIWVlvdVNob3VZYW5XXCIsXG4gICAgLWFwcGxlLXN5c3RlbSxcbiAgICBCbGlua01hY1N5c3RlbUZvbnQsXG4gICAgXCJNaVNhbnNcIixcbiAgICBcIuWwj+exs+WFsOS6rSBQcm8gVkZcIixcbiAgICBcIk9QUE8gU2Fuc1wiLFxuICAgIFwiSGFybW9ueU9TIFNhbnNcIixcbiAgICBcIkhPTk9SIFNhbnNcIixcbiAgICBcIlNvdXJjZSBTYW5zIDNcIixcbiAgICBcIlNvdXJjZSBTYW5zIFByb1wiLFxuICAgIFwiU291cmNlIEhhbiBTYW5zIFRDXCIsXG4gICAgXCJIZWx2ZXRpY2FcIixcbiAgICBcIlJvYm90b1wiLFxuICAgIFwiU0ZQcm9EaXNwbGF5LVJlZ3VsYXJcIixcbiAgICBzYW5zLXNlcmlmLFxuICAgIFwiUGxhbmdvdGhpYyBQMVwiLFxuICAgIFwiUGxhbmdvdGhpYyBQMlwiLFxuICAgIFwi5pa55q2j5a6L5L2TUy3otoXlpKflrZfnrKbpm4ZcIixcbiAgICBcIuaWueato+Wui+S9k1Mt6LaF5aSn5a2X56ym6ZuGKFNJUClcIixcbiAgICBcIuaWh+aziempv+etieWuveato+m7kVwiLFxuICAgIFwiQmFiZWxTdG9uZSBIYW5cIixcbiAgICBcIkhhbmFNaW5CXCIsXG4gICAgXCJGWlNvbmctRXh0ZW5kZWRcIixcbiAgICBcIkFyaWFsIFVuaWNvZGUgTVNcIixcbiAgICBcIkNvZGUyMDAyXCIsXG4gICAgXCJERlNvbmdTdGRcIixcbiAgICBcInVuaWZvbnRcIixcbiAgICBcIkFwcGxlIENvbG9yIEVtb2ppXCIsXG4gICAgXCJTZWdvZSBVSSBFbW9qaVwiLFxuICAgIFwiU2Vnb2UgVUkgU3ltYm9sXCI7XG59XG4gKi9cbi8qIOe7n+S4gOaJi+acuuerr+eUqOaIt+Wtl+S9k+Wkp+Wwj+S/ruaUueeJiCAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICBib2R5IHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgfVxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICB9XG4gIGgzIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgfVxuICBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICB9XG4gIGg1IHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICB9XG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cbiAgcCB7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuICAubXctc3BlY2lhbC1WaWV3QXZhdGFyIHAgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbiAgI2ZpbGUgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbn1cbi8qIOmhtemdouWGheWuueWuveW6piAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDE0NDBweCkge1xuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gKjpub3QoZmlndXJlKTpub3QoLm13LWhhbGlnbi1sZWZ0KTpub3QoLm13LWhhbGlnbi1jZW50ZXIpOm5vdCgubWJveCkge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gZGl2LnRsZWZ0LFxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gdGFibGUudGxlZnQsXG4gIC5ucy0wIC5tdy1ib2R5LWNvbnRlbnQgLm13LXBhcnNlci1vdXRwdXQgPiBmaWd1cmUudGxlZnQsXG4gIC5ucy0wIC5tdy1ib2R5LWNvbnRlbnQgLm13LXBhcnNlci1vdXRwdXQgPiBkaXYuZmxvYXRsZWZ0LFxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gdGFibGUuZmxvYXRsZWZ0LFxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gZmlndXJlLmZsb2F0bGVmdCxcbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IGRpdi5tdy1oYWxpZ24tbGVmdCxcbiAgLm5zLTAgLm13LWJvZHktY29udGVudCAubXctcGFyc2VyLW91dHB1dCA+IHRhYmxlLm13LWhhbGlnbi1sZWZ0LFxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gZmlndXJlLm13LWhhbGlnbi1sZWZ0IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubnMtMCAubXctYm9keS1jb250ZW50IC5tdy1wYXJzZXItb3V0cHV0ID4gdGFibGU6bm90KC5tZXRhZGF0YSk6bm90KC5pbmZvYm94KTpub3QoLnNpZGViYXIpOm5vdCgudmVydGljYWwtbmF2Ym94KSB7XG4gICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDtcbiAgfVxufVxuLyog5rua5Yqo5p2h5pi+56S65Li76aKY6ImyICovXG4qIHtcbiAgc2Nyb2xsYmFyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KSB0cmFuc3BhcmVudDtcbiAgY2FyZXQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuLyogW1tTcGVjaWFsOuWwj+W3peWFt11d5qCH6aKYICovXG4ubXctc3BlY2lhbC1HYWRnZXRzIGgxLFxuLm13LXNwZWNpYWwtR2FkZ2V0cyBoMixcbi5tdy1zcGVjaWFsLUdhZGdldHMgaDMsXG4ubXctc3BlY2lhbC1HYWRnZXRzIGg0LFxuLm13LXNwZWNpYWwtR2FkZ2V0cyBoNSxcbi5tdy1zcGVjaWFsLUdhZGdldHMgaDYge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuLyogW1tTcGVjaWFsOuacgOi/keabtOaUuV1d5qCH6aKYICovXG4ubXctY2hhbmdlc2xpc3QgaDQge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuLyog5a6a5Yi25YyW5qCH6aKY5qC35byPICovXG5oZWFkZXIubXctYm9keS1oZWFkZXIge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDJweDtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI0MCwgMjU1LCAyNTUsIDAuOCk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjQwLCAyNTUsIDI0MCwgMC43KTtcbiAgcGFkZGluZzogMjBweDtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbn1cbi8qIOmakOiXj+agh+mimOWOn+iDjOaZryAqL1xuLm13LWJvZHktaGVhZGVyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyog55uu5b2VIChUT0MpICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3MjBweCkge1xuICAudG9jLFxuICAjdG9jIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuLyog5LyY5YyW55So5oi36aG15aS05YOP5pi+56S6ICovXG4uc2tpbi1jaXRpemVuICN1c2VyLXJvb3RwYWdlLWF2YXRhciB7XG4gIG1hcmdpbi1yaWdodDogMC4yZW07XG59XG4vKiDlj5jph48gKi9cbjpyb290IHtcbiAgLS1mb250cy1zYW5zOiAtYXBwbGUtc3lzdGVtLCAnQmxpbmtNYWNTeXN0ZW1Gb250JywgJ01pU2FucycsICflsI/nsbPlhbDkuq0gUHJvIFZGJywgJ09QUE8gU2FucycsICdIYXJtb255T1MgU2FucycsXG5cdFx0J0hPTk9SIFNhbnMnLCAnU291cmNlIFNhbnMgMycsICdTb3VyY2UgU2FucyBQcm8nLCAnU291cmNlIEhhbiBTYW5zIFNDJywgJ0hlbHZldGljYScsICdSb2JvdG8nLFxuXHRcdCdTRlByb0Rpc3BsYXktUmVndWxhcicsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnO1xuICAtLWZvbnRzLXNlcmlmOiAnU291cmNlIFNlcmlmJywgJ1NvdXJjZSBIYW4gU2VyaWYgU0MnLCAnTGludXggTGliZXJ0aW5lJywgJ0dlb3JnaWEnLCAnVGltZXMgTmV3IFJvbWFuJywgJ1RpbWVzJyxcblx0XHQnU1RTb25nIFNDJywgJ1NpbVN1bicsIHNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJztcbiAgLS1mb250cy1tb25vc3BhY2U6ICdDb25zb2xhcycsICdKZXRCcmFpbnMgTW9ubycsICdTb3VyY2UgQ29kZSBQcm8nLCAnTWVubG8nLCAnU0ZNb25vLVJlZ3VsYXInLCAnUm9ib3RvIE1vbm8nLFxuXHRcdCdNb25hY28nLCAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgJ0NvdXJpZXInLCBtb25vc3BhY2UsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsXG5cdFx0J1NlZ29lIFVJIFN5bWJvbCc7XG4gIC0tYm9yZGVyLWNvbG9yLWJhc2U6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIC0tYm9yZGVyLWNvbG9yLWJhc2UtLWxpZ2h0ZXI6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgLS1ib3JkZXItY29sb3ItYmFzZS0tZGFya2VyOiByZ2JhKDAsIDAsIDAsIDAuOCk7XG59XG46cm9vdDpsYW5nKHpoLWhhbnQpIHtcbiAgLS1mb250cy1zYW5zOiAtYXBwbGUtc3lzdGVtLCAnQmxpbmtNYWNTeXN0ZW1Gb250JywgJ01pU2FucycsICflsI/nsbPlhbDkuq0gUHJvIFZGJywgJ09QUE8gU2FucycsICdIYXJtb255T1MgU2FucycsXG5cdFx0J0hPTk9SIFNhbnMnLCAnU291cmNlIFNhbnMgMycsICdTb3VyY2UgU2FucyBQcm8nLCAnU291cmNlIEhhbiBTYW5zIFRDJywgJ0hlbHZldGljYScsICdSb2JvdG8nLFxuXHRcdCdTRlByb0Rpc3BsYXktUmVndWxhcicsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnO1xuICAtLWZvbnRzLXNlcmlmOiAnU291cmNlIFNlcmlmJywgJ1NvdXJjZSBIYW4gU2VyaWYgVEMnLCAnTGludXggTGliZXJ0aW5lJywgJ0dlb3JnaWEnLCAnVGltZXMgTmV3IFJvbWFuJywgJ1RpbWVzJyxcblx0XHQnTWluZ0xpVScsICdTaW1TdW4nLCBzZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCc7XG59XG4vKiDlj5jkvZPoj5zljZUgKi9cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDcyMHB4KSB7XG4gICNjaXRpemVuLWxhbmd1YWdlc19fY2FyZCB7XG4gICAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UteHhsKSAqIDIpO1xuICB9XG59XG4vKiDlj6/op4bljJbnvJbovpHlmajnlYzpnaLvvIzpmpDol4/moIfpopggKi9cbi52ZS1hY3RpdmF0ZWQgaDEjZmlyc3RIZWFkaW5nIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi52ZS1hY3RpdmF0ZWQgLmNpdGl6ZW4tYm9keS1oZWFkZXItLXN0aWNreSAubXctYm9keS1oZWFkZXI6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4udmUtaW5pdC1tdy1kZXNrdG9wQXJ0aWNsZVRhcmdldCAjYm9keUNvbnRlbnQge1xuICBtYXJnaW4tdG9wOiBjYWxjKDIgKiB2YXIoLS1zcGFjZS1tZCkpO1xufVxuLm13LXVpLWljb24td2lraW1lZGlhLWhlYXJ0IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHQ9XCIxNzA4MzQ4MTI5NDA3XCIgY2xhc3M9XCJpY29uXCIgdmlld0JveD1cIjAgMCAxMDI0IDEwMjRcIiB2ZXJzaW9uPVwiMS4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHAtaWQ9XCI0MzM4XCIgd2lkdGg9XCIyMDBcIiBoZWlnaHQ9XCIyMDBcIj48cGF0aCBkPVwiTTUxMiA4OTZhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMS0zMC4yOTMzMzMtMTIuMzczMzMzbC0zMzEuNTItMzMxLjk0NjY2N2EyMjQuNDI2NjY3IDIyNC40MjY2NjcgMCAwIDEgMC0zMTUuNzMzMzMzIDIyMy41NzMzMzMgMjIzLjU3MzMzMyAwIDAgMSAzMTUuNzMzMzMzIDBMNTEyIDI4Mi4wMjY2NjdsNDYuMDgtNDYuMDhhMjIzLjU3MzMzMyAyMjMuNTczMzMzIDAgMCAxIDMxNS43MzMzMzMgMCAyMjQuNDI2NjY3IDIyNC40MjY2NjcgMCAwIDEgMCAzMTUuNzMzMzMzbC0zMzEuNTIgMzMxLjk0NjY2N0E0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDUxMiA4OTZ6XCIgcC1pZD1cIjQzMzlcIj48L3BhdGg+PC9zdmc+Jyk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbn1cbi8qIOS/ruWkjSB0b29sYmFyICovXG4jbXctY29udGVudC1zdWJ0aXRsZSxcbi5tdy11bmRlbGV0ZS1zdWJ0aXRsZSB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDAsIDI0OCwgMjU1LCAwLjY1KTtcbiAgcGFkZGluZzogNXB4O1xufVxuI213LWNvbnRlbnQtc3VidGl0bGU6ZW1wdHksXG4ubXctdW5kZWxldGUtc3VidGl0bGU6ZW1wdHkge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmNsaWVudC1kYXJrbW9kZSBbdHlwZW9mfj0nbXc6RmlsZSddIGltZyxcbi5jbGllbnQtZGFya21vZGUgW3R5cGVvZn49J213OkZpbGUvVGh1bWInXSBpbWcsXG4uY2xpZW50LWRhcmttb2RlIFt0eXBlb2Z+PSdtdzpGaWxlL0ZyYW1lJ10gaW1nLFxuLmNsaWVudC1kYXJrbW9kZSBbdHlwZW9mfj0nbXc6RmlsZS9GcmFtZWxlc3MnXSBpbWcsXG4uY2xpZW50LWRhcmttb2RlIC5tdy1oYWxpZ24tbGVmdCBpbWcsXG4uY2xpZW50LWRhcmttb2RlIC5tdy1oYWxpZ24tcmlnaHQgaW1nLFxuLmNsaWVudC1kYXJrbW9kZSAubXctaGFsaWduLWNlbnRlciBpbWcge1xuICB3aWR0aDogYXV0bztcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsQ0FBQyxXQUFXLENBQUM7QUFDWCxXQUFTO0FBQ1Qsb0JBQWtCLGdCQUFnQixXQUFXLEVBQUU7QUFDL0MsV0FBUztBQUNULFNBQU87QUFDUCxVQUFRO0FBQ1Isa0JBQWdCO0FBQ2xCO0FBQ0EsQ0FBQyxjQUFjLENBQUM7QUFDZCxXQUFTO0FBQ1Qsb0JBQWtCLGdCQUFnQixXQUFXLEVBQUU7QUFDL0MsV0FBUztBQUNULFNBQU87QUFDUCxVQUFRO0FBQ1Isa0JBQWdCO0FB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 */ diff --git a/dist/Twinkle/Twinkle.js b/dist/Twinkle/Twinkle.js index bac7b34..d84e8ed 100644 --- a/dist/Twinkle/Twinkle.js +++ b/dist/Twinkle/Twinkle.js @@ -2973,12 +2973,12 @@ var init_twinklewarn = __esm({ list: { "uw-illegal": { level1: { - label: window.wgULS("加入不符合中国价值观的内容", "加入不符合中國價值觀的內容"), - summary: window.wgULS("注意:加入不符合中国价值观的内容", "注意:加入不符合中國價值觀的內容") + label: window.wgULS("加入违法违规内容", "加入違法違規內容"), + summary: window.wgULS("注意:加入违法违规内容", "注意:加入違法違規內容") }, level2: { - label: window.wgULS("加入不符合中国价值观的内容", "加入不符合中國價值觀的內容"), - summary: window.wgULS("警告:加入不符合中国价值观的内容", "警告:加入不符合中國價值觀的內容") + label: window.wgULS("加入违法违规内容", "加入違法違規內容"), + summary: window.wgULS("警告:加入违法违规内容", "警告:加入違法違規內容") } }, "uw-own": { @@ -4611,8 +4611,8 @@ var init_twinkleblock = __esm({ expiry: "1 day", nocreate: true, pageParam: true, - reason: window.wgULS("持续加入不符合中国价值观的非法内容", "持續加入不符合中國價值觀的非法內容"), - summary: window.wgULS("封禁通知:持续加入不符合中国价值观的非法内容", "封鎖通知:持續加入不符合中國價值觀的非法內容") + reason: window.wgULS("持续加入非法内容", "持續加入非法內容"), + summary: window.wgULS("封禁通知:持续加入非法内容", "封鎖通知:持續加入非法內容") }, "uw-sockblock": { autoblock: true, @@ -4873,7 +4873,7 @@ var init_twinkleblock = __esm({ selected: true }, { - label: window.wgULS("持续加入不符合中国价值观的非法内容", "持續加入不符合中國價值觀的非法內容"), + label: window.wgULS("持续加入非法内容", "持續加入非法內容"), value: "uw-illegalblock" }, { @@ -16651,4 +16651,4 @@ var init_twinkleconfig = __esm({ /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwtdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zZXQtbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZS5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVhcnYuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xld2Fybi5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVibG9jay5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL2ZyaWVuZGx5dGFsa2JhY2suanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlc3BlZWR5LmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWNvcHl2aW8uanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xleGZkLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWltYWdlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZXByb3RlY3QuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy9mcmllbmRseXRhZy5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVzdHViLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWRpZmYuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xldW5saW5rLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWZsdWZmLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWJhdGNoZGVsZXRlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWJhdGNodW5kZWxldGUuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlYmF0Y2hwcm90ZWN0LmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWNsb3NlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWNvbmZpZy5qcyIsICJzcmMvVHdpbmtsZS9Ud2lua2xlLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIndXNlIHN0cmljdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICBjaGVjayh0eXBlb2YgdGhpcyA9PSAnb2JqZWN0JyAmJiB0aGlzKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgISRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyh7fS50b1N0cmluZyk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBzdHJpbmdTbGljZSh0b1N0cmluZyhpdCksIDgsIC0xKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gISRPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PT0gJ1N0cmluZycgPyBzcGxpdChpdCwgJycpIDogJE9iamVjdChpdCk7XG59IDogJE9iamVjdDtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdFxudmFyIGRvY3VtZW50QWxsID0gdHlwZW9mIGRvY3VtZW50ID09ICdvYmplY3QnICYmIGRvY3VtZW50LmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFRoaXNbbmFtZXNwYWNlXSkgOiBnbG9iYWxUaGlzW25hbWVzcGFjZV0gJiYgZ2xvYmFsVGhpc1tuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsVGhpcy5uYXZpZ2F0b3I7XG52YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbm1vZHVsZS5leHBvcnRzID0gdXNlckFnZW50ID8gU3RyaW5nKHVzZXJBZ2VudCkgOiAnJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xudmFyIERlbm8gPSBnbG9iYWxUaGlzLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsVGhpcy5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MXG4gICYmICFTeW1ib2wuc2hhbVxuICAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ09iamVjdCc7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NhbGxhYmxlKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBkZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFRoaXNba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpc1tTSEFSRURdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFNIQVJFRCwge30pO1xuXG4oc3RvcmUudmVyc2lvbnMgfHwgKHN0b3JlLnZlcnNpb25zID0gW10pKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzguMScsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzguMS9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbFRoaXMuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9PSA0Mjtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcigkU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgRU5VTUVSQUJMRSA9ICdlbnVtZXJhYmxlJztcbnZhciBDT05GSUdVUkFCTEUgPSAnY29uZmlndXJhYmxlJztcbnZhciBXUklUQUJMRSA9ICd3cml0YWJsZSc7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmICh0eXBlb2YgTyA9PT0gJ2Z1bmN0aW9uJyAmJiBQID09PSAncHJvdG90eXBlJyAmJiAndmFsdWUnIGluIEF0dHJpYnV0ZXMgJiYgV1JJVEFCTEUgaW4gQXR0cmlidXRlcyAmJiAhQXR0cmlidXRlc1tXUklUQUJMRV0pIHtcbiAgICB2YXIgY3VycmVudCA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgZW51bWVyYWJsZTogRU5VTUVSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tFTlVNRVJBQkxFXSA6IGN1cnJlbnRbRU5VTUVSQUJMRV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH0gcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbn0gOiAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IG5ldyAkVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhGdW5jdGlvbi50b1N0cmluZyk7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgY29yZS1qc0AzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICghaXNDYWxsYWJsZShzdG9yZS5pbnNwZWN0U291cmNlKSkge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsVGhpcy5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWxUaGlzLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkuKiQvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zLmVudW1lcmFibGU7XG4gIHZhciBuYW1lID0gb3B0aW9ucy5uYW1lICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5hbWUgOiBrZXk7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkgbWFrZUJ1aWx0SW4odmFsdWUsIG5hbWUsIG9wdGlvbnMpO1xuICBpZiAob3B0aW9ucy5nbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZUdsb2JhbFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIW9wdGlvbnMudW5zYWZlKSBkZWxldGUgT1trZXldO1xuICAgICAgZWxzZSBpZiAoT1trZXldKSBzaW1wbGUgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogIW9wdGlvbnMubm9uQ29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6ICFvcHRpb25zLm5vbldyaXRhYmxlXG4gICAgfSk7XG4gIH0gcmV0dXJuIE87XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYE1hdGgudHJ1bmNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLnRydW5jXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC10cnVuYyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgudHJ1bmMgfHwgZnVuY3Rpb24gdHJ1bmMoeCkge1xuICB2YXIgbiA9ICt4O1xuICByZXR1cm4gKG4gPiAwID8gZmxvb3IgOiBjZWlsKShuKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRydW5jID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtdHJ1bmMnKTtcblxuLy8gYFRvSW50ZWdlck9ySW5maW5pdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbnVtYmVyID0gK2FyZ3VtZW50O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICByZXR1cm4gbnVtYmVyICE9PSBudW1iZXIgfHwgbnVtYmVyID09PSAwID8gMCA6IHRydW5jKG51bWJlcik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGludGVnZXIsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYFRvTGVuZ3RoYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBsZW4gPSB0b0ludGVnZXJPckluZmluaXR5KGFyZ3VtZW50KTtcbiAgcmV0dXJuIGxlbiA+IDAgPyBtaW4obGVuLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgTGVuZ3RoT2ZBcnJheUxpa2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1sZW5ndGhvZmFycmF5bGlrZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIGlmIChsZW5ndGggPT09IDApIHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9PSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgaWYgKHZhbHVlICE9PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KGtleXMsIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgZXhjZXB0aW9ucykge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkgJiYgIShleGNlcHRpb25zICYmIGhhc093bihleGNlcHRpb25zLCBrZXkpKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgIH1cbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgICAgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5kb250Q2FsbEdldFNldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXM7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpc1tUQVJHRVRdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXNbVEFSR0VUXSAmJiBnbG9iYWxUaGlzW1RBUkdFVF0ucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMuZG9udENhbGxHZXRTZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgZGVmaW5lQnVpbHRJbih0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNhcnJheVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWlzYXJyYXkgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJndW1lbnQpID09PSAnQXJyYXknO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIFNhZmFyaSA8IDEzIGRvZXMgbm90IHRocm93IGFuIGVycm9yIGluIHRoaXMgY2FzZVxudmFyIFNJTEVOVF9PTl9OT05fV1JJVEFCTEVfTEVOR1RIX1NFVCA9IERFU0NSSVBUT1JTICYmICFmdW5jdGlvbiAoKSB7XG4gIC8vIG1ha2VzIG5vIHNlbnNlIHdpdGhvdXQgcHJvcGVyIHN0cmljdCBtb2RlIHN1cHBvcnRcbiAgaWYgKHRoaXMgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWU7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCAnbGVuZ3RoJywgeyB3cml0YWJsZTogZmFsc2UgfSkubGVuZ3RoID0gMTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3I7XG4gIH1cbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTSUxFTlRfT05fTk9OX1dSSVRBQkxFX0xFTkdUSF9TRVQgPyBmdW5jdGlvbiAoTywgbGVuZ3RoKSB7XG4gIGlmIChpc0FycmF5KE8pICYmICFnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgJ2xlbmd0aCcpLndyaXRhYmxlKSB7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Nhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgnKTtcbiAgfSByZXR1cm4gTy5sZW5ndGggPSBsZW5ndGg7XG59IDogZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICByZXR1cm4gTy5sZW5ndGggPSBsZW5ndGg7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFGRkZGRkZGRkZGRkZGOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA+IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93ICRUeXBlRXJyb3IoJ01heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCcpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgc2V0QXJyYXlMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2V0LWxlbmd0aCcpO1xudmFyIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2VzLW5vdC1leGNlZWQtc2FmZS1pbnRlZ2VyJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIElOQ09SUkVDVF9UT19MRU5HVEggPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbXS5wdXNoLmNhbGwoeyBsZW5ndGg6IDB4MTAwMDAwMDAwIH0sIDEpICE9PSA0Mjk0OTY3Mjk3O1xufSk7XG5cbi8vIFY4IDw9IDEyMSBhbmQgU2FmYXJpIDw9IDE1LjQ7IEZGIDwgMjMgdGhyb3dzIEludGVybmFsRXJyb3Jcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTEyNjgxXG52YXIgcHJvcGVyRXJyb3JPbk5vbldyaXRhYmxlTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgJ2xlbmd0aCcsIHsgd3JpdGFibGU6IGZhbHNlIH0pLnB1c2goKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3I7XG4gIH1cbn07XG5cbnZhciBGT1JDRUQgPSBJTkNPUlJFQ1RfVE9fTEVOR1RIIHx8ICFwcm9wZXJFcnJvck9uTm9uV3JpdGFibGVMZW5ndGgoKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5wdXNoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnB1c2hcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBhcml0eTogMSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBwdXNoOiBmdW5jdGlvbiBwdXNoKGl0ZW0pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlcihsZW4gKyBhcmdDb3VudCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdDb3VudDsgaSsrKSB7XG4gICAgICBPW2xlbl0gPSBhcmd1bWVudHNbaV07XG4gICAgICBsZW4rKztcbiAgICB9XG4gICAgc2V0QXJyYXlMZW5ndGgoTywgbGVuKTtcbiAgICByZXR1cm4gbGVuO1xuICB9XG59KTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZSgkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHRjb25zdCBUd2lua2xlID0ge307XG5cdHdpbmRvdy5Ud2lua2xlIHx8PSBUd2lua2xlOyAvLyBhbGxvdyBnbG9iYWwgYWNjZXNzXG5cdC8vIFdyYXAgd2l0aCBhbm9ueW1vdXMgZnVuY3Rpb25cblx0Ly8gQ2hlY2sgaWYgYWNjb3VudCBpcyBleHBlcmllbmNlZCBlbm91Z2ggdG8gdXNlIFR3aW5rbGVcblx0aWYgKCFNb3JlYml0cy51c2VySXNJbkdyb3VwKCdhdXRvY29uZmlybWVkJykgJiYgIU1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ2NvbmZpcm1lZCcpKSB7XG5cdFx0Y29uc29sZS53YXJuKCdbVHdpbmtsZV0g6Z2e56Gu6K6k55So5oi35oiW6Ieq5Yqo56Gu6K6k55So5oi377yMVHdpbmtsZeS4jeS8mui/kOihjOOAgicpO1xuXHRcdHJldHVybjtcblx0fVxuXHQvKipcblx0ICogVHdpbmtsZS1zcGVjaWZpYyBkYXRhIHNoYXJlZCBieSBtdWx0aXBsZSBtb2R1bGVzXG5cdCAqIExpa2VseSBjdXN0b21pemVkIHBlciBpbnN0YWxsYXRpb25cblx0ICovXG5cdC8vIEN1c3RvbSBjaGFuZ2UgdGFnKHMpIHRvIGJlIGFwcGxpZWQgdG8gYWxsIFR3aW5rbGUgYWN0aW9ucywgY3JlYXRlIGF0IFNwZWNpYWw6VGFnc1xuXHRUd2lua2xlLmNoYW5nZVRhZ3MgPSAnVHdpbmtsZSc7XG5cdC8vIEF2YWlsYWJsZSBmb3IgYWN0aW9ucyB0aGF0IGRvbid0ICh5ZXQpIHN1cHBvcnQgdGFnc1xuXHRUd2lua2xlLnN1bW1hcnlBZCA9ICfvvIhbW0g6VFd8VHdpbmtsZV1d77yJJztcblx0Ly8gVmFyaW91cyBoYXRub3RlIHRlbXBsYXRlcywgdXNlZCB3aGVuIHRhZ2dpbmcgKGNzZC94ZmQvdGFnL3Byb2QvcHJvdGVjdCkgdG8gZW5zdXJlIG9yZGVyXG5cdFR3aW5rbGUuaGF0bm90ZVJlZ2V4ID1cblx0XHQnKD86U2hvcnRbIF9dZGVzY3JpcHRpb24pfCg/OlJlbGxpbmt8SGF0bm90ZXxIQVQpfCg/Ok1haW58W+e7hue0sF1b6IqC56+AXXxNYWluWyBfXWFydGljbGVzfOS4u1vmnaHmop1d55uufEh1cnJpY2FuZVsgX11tYWlufFvmnaHmop1d55uufOS4u3xb6aCB6aG1XemdonzkuLtb6aCB6aG1XemdonzkuLtb6aCB6aG1XXzkuLtb6aGM6aKYXeebrnxNYWluWyBfXWFydGljbGV8QVApfCg/Oldyb25ndGl0bGV8Q29ycmVjdFsgX110aXRsZSl8KD865Li75p2h55uu5raI5q2n5LmJfOS4u+aineebrua2iOatp+e+qXzmtojmrafkuYnpk77mjqV85raI5q2n576p6Y+I5o6lfOa2iOatp+e+qemAo+e1kHzmtojov5585raI6YCjfOa2iOatp+S5iei/nue7k3xEaXNhbWJMaW5rfE5vdGVyZWZ8RGFibGluayl8KD86RGlzdGluZ3Vpc2h85LiN5pivfE5vdHzmj5DnpLp85re35reGfOWIhuWIpXzliIbliKt85Y2A5YilfOWMuuWIq3zmnKzmnaHnm67nmoTkuLvpopjkuI3mmK985pys5qKd55uu55qE5Li76aGM5LiN5pivfOacrOadoeebruS4u+mimOS4jeaYr3zmnKzmop3nm67kuLvpoYzkuI3mmK985p2h55uu5Li76aKY5LiN5pivfOaineebruS4u+mhjOS4jeaYr3zkuLvpopjkuI3mmK985Li76aGM5LiN5pivfENvbmZ1c2VkfOWMuuWIhnzljYDliIZ8Q29uZnVzaW9ufENvbmZ1c2V8UmVkaXJlY3ROT1R8TWlzc3BlbGxpbmcpfCg/OkRpc3Rpbmd1aXNoMnxTZWxmRGlzdGluZ3Vpc2h8Tm90MnzkuI3mmK8yKXwoPzpGb3IpfCg/OkRldGFpbHN8RnVydGhlcnxTZWV85Y+m6KeBfOWPpuimi3xNb3JlfOebuOmXnOaineebrnznm7jlhbPmnaHnm658RGV0YWlsfOingXzopot85pu05aSa6LWE5paZfOabtOWkmuizh+aWmXxGdXJ0aGVyWyBfXWluZm9ybWF0aW9ufOabtOWkmui1hOiur3zmm7TlpJros4foqIp8TW9yZVsgX11pbmZvcm1hdGlvbnzmm7TlpJrkv6Hmga8pfCg/OlNlbGZyZWYpfCg/OkFib3V0fE90aGVydXNlczR85YWz5LqOfOmXnOaWvCl8KD86T3RoZXJbIF9ddXNlc3xPdGhlcnVzZXzmnaHnm67mtojmrafkuYl85qKd55uu5raI5q2n576pfOS7lueUqHxPdGhlcnVzZXMpfCg/Ok90aGVyWyBfXXVzZXMgbGlzdHxPdGhlcnVzZWxpc3R85Li75qKd55uu5raI5q2n576p5YiX6KGofOS4u+adoeebrua2iOatp+S5ieWIl+ihqHxPdGhlcnVzZXNsaXN0fEFib3V0bGlzdHxBYm91dFsgX11saXN0fE90aGVydXNlc1sgX11saXN0KXwoPzpSZWRpcmVjdHzph43lrprlkJHoh7PmraR8UmVkaXJlY3RzWyBfXWhlcmV8UmVkaXJlY3RbIF9ddG8pfCg/OlJlZGlyZWN0MnzkuLvmop3nm67mtojmrafnvqkyfOS4u+adoeebrua2iOatp+S5iTJ8UmVkaXJ86YeN5a6a5ZCR6Iez5q2kMil8KD86UmVkaXJlY3QzKXwoPzpSZWRpcmVjdDQpfCg/OlJlZGlyZWN0LWRpc3Rpbmd1aXNoKXwoPzpSZWRpcmVjdC1zeW5vbnltKXwoPzpSZWRpcmVjdC1tdWx0aSl8KD86U2VlWyBfXVdpa3Rpb25hcnl8U2Vld2lrdCl8KD86U2VlYWxzb3zlj4LnnIt85Y+D55yLfFNlZVsgX11hbHNvfOWPguingXzlj4Popot8QWxzbyl8KD86U2VlWyBfXWFsc28yfFNlZWFsc28yfOS4jei9ieaPm+WPg+imi3zkuI3ovazmjaLlj4Lop4EpfCg/Ok90aGVyWyBfXXBsYWNlcyl8KD86Q29udHJhc3R85bCN5q+UfOWvueavlCknO1xuXHRUd2lua2xlLmluaXRDYWxsYmFja3MgPSBbXTtcblx0LyoqXG5cdCAqIEFkZHMgYSBjYWxsYmFjayB0byBleGVjdXRlIHdoZW4gVHdpbmtsZSBoYXMgbG9hZGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZV0gLSBuYW1lIG9mIG1vZHVsZSB1c2VkIHRvIGNoZWNrIGlmIGlzIGRpc2FibGVkLlxuXHQgKiBJZiBuYW1lIGlzIG5vdCBnaXZlbiwgbW9kdWxlIGlzIGxvYWRlZCB1bmNvbmRpdGlvbmFsbHkuXG5cdCAqL1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayA9IChmdW5jLCBuYW1lKSA9PiB7XG5cdFx0VHdpbmtsZS5pbml0Q2FsbGJhY2tzLnB1c2goe1xuXHRcdFx0ZnVuYyxcblx0XHRcdG5hbWUsXG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuZGVmYXVsdENvbmZpZyA9IHt9O1xuXHQvKipcblx0ICogVGhpcyBob2xkcyB0aGUgZGVmYXVsdCBzZXQgb2YgcHJlZmVyZW5jZXMgdXNlZCBieSBUd2lua2xlLlxuXHQgKiBJdCBpcyBpbXBvcnRhbnQgdGhhdCBhbGwgbmV3IHByZWZlcmVuY2VzIGFkZGVkIGhlcmUsIGVzcGVjaWFsbHkgYWRtaW4tb25seSBvbmVzLCBhcmUgYWxzbyBhZGRlZCB0b1xuXHQgKiB8VHdpbmtsZS5jb25maWcuc2VjdGlvbnN8IGluIHR3aW5rbGVjb25maWcuanMsIHNvIHRoZXkgYXJlIGNvbmZpZ3VyYWJsZSB2aWEgdGhlIFR3aW5rbGUgcHJlZmVyZW5jZXMgcGFuZWwuXG5cdCAqIEZvciBoZWxwIG9uIHRoZSBhY3R1YWwgcHJlZmVyZW5jZXMsIHNlZSB0aGUgY29tbWVudHMgaW4gdHdpbmtsZWNvbmZpZy5qcy5cblx0ICpcblx0ICogRm9ybWVybHkgVHdpbmtsZS5kZWZhdWx0Q29uZmlnLnR3aW5rbGVcblx0ICovXG5cdFR3aW5rbGUuZGVmYXVsdENvbmZpZyA9IHtcblx0XHQvLyBHZW5lcmFsXG5cdFx0dXNlclRhbGtQYWdlTW9kZTogJ3RhYicsXG5cdFx0ZGlhbG9nTGFyZ2VGb250OiBmYWxzZSxcblx0XHRkaXNhYmxlZE1vZHVsZXM6IE1vcmViaXRzLnVzZXJJc1N5c29wID8gW10gOiBbJ2Jsb2NrJ10sXG5cdFx0Ly8gZGVmYXVsdCB0byBkaXNhYmxlIGJsb2NrIGZvciBub24tc3lzb3AsIGlmIGVuYWJsZSBtYW51YWxseSwgdGhleSBjYW4gb25seSB1c2UgaXQgdG8gdGFnIHVzZXJwYWdlXG5cdFx0ZGlzYWJsZWRTeXNvcE1vZHVsZXM6IFtdLFxuXHRcdC8vIEFSVlxuXHRcdHNwaVdhdGNoUmVwb3J0OiAneWVzJyxcblx0XHQvLyBCbG9ja1xuXHRcdGRlZmF1bHRUb0Jsb2NrNjQ6IGZhbHNlLFxuXHRcdGRlZmF1bHRUb1BhcnRpYWxCbG9ja3M6IGZhbHNlLFxuXHRcdGJsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2s6IGZhbHNlLFxuXHRcdHdhdGNoQmxvY2tOb3RpY2VzOiAneWVzJyxcblx0XHRjdXN0b21CbG9ja1JlYXNvbkxpc3Q6IFtdLFxuXHRcdC8vIEZsdWZmIChyZXZlcnQgYW5kIHJvbGxiYWNrKVxuXHRcdG9wZW5UYWxrUGFnZTogW10sXG5cdFx0b3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0OiBmYWxzZSxcblx0XHRyb2xsYmFja0luUGxhY2U6IGZhbHNlLFxuXHRcdG1hcmtSZXZlcnRlZFBhZ2VzQXNNaW5vcjogWyd2YW5kJ10sXG5cdFx0d2F0Y2hSZXZlcnRlZFBhZ2VzOiBbJ25vcm0nLCAndmFuZCcsICd0b3JldiddLFxuXHRcdHdhdGNoUmV2ZXJ0ZWRFeHBpcnk6ICd5ZXMnLFxuXHRcdG9mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQ6IHRydWUsXG5cdFx0Y29uZmlybU9uRmx1ZmY6IGZhbHNlLFxuXHRcdHNob3dSb2xsYmFja0xpbmtzOiBbJ2RpZmYnLCAnb3RoZXJzJ10sXG5cdFx0Y3VzdG9tUmV2ZXJ0U3VtbWFyeTogW10sXG5cdFx0Ly8gREkgKHR3aW5rbGVpbWFnZSlcblx0XHRub3RpZnlVc2VyT25EZWxpOiB0cnVlLFxuXHRcdGRlbGlXYXRjaFBhZ2U6ICdkZWZhdWx0Jyxcblx0XHRkZWxpV2F0Y2hVc2VyOiAnZGVmYXVsdCcsXG5cdFx0Ly8gUHJvdGVjdFxuXHRcdHdhdGNoUmVxdWVzdGVkUGFnZXM6ICd5ZXMnLFxuXHRcdHdhdGNoUFBUYWdnZWRQYWdlczogJ2RlZmF1bHQnLFxuXHRcdHdhdGNoUHJvdGVjdGVkUGFnZXM6ICdkZWZhdWx0Jyxcblx0XHQvLyBDU0Rcblx0XHRzcGVlZHlTZWxlY3Rpb25TdHlsZTogJ2J1dHRvbkNsaWNrJyxcblx0XHR3YXRjaFNwZWVkeVBhZ2VzOiBbJ2cxJywgJ2czJywgJ2c0JywgJ2c3JywgJ2c4J10sXG5cdFx0d2F0Y2hTcGVlZHlFeHBpcnk6ICd5ZXMnLFxuXHRcdG1hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkOiBmYWxzZSxcblx0XHR3YXRjaFNwZWVkeVVzZXI6ICcxIG1vbnRoJyxcblx0XHQvLyB0aGVzZSBuZXh0IHR3byBzaG91bGQgcHJvYmFibHkgYmUgaWRlbnRpY2FsIGJ5IGRlZmF1bHRcblx0XHRub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb246IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRcdCdmMScsXG5cdFx0XHQnZjInLFxuXHRcdFx0J2YzJyxcblx0XHRcdCdmNCcsXG5cdFx0XHQnZjUnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdF0sXG5cdFx0d2FyblVzZXJPblNwZWVkeURlbGV0ZTogW1xuXHRcdFx0J2RiJyxcblx0XHRcdCdnMScsXG5cdFx0XHQnZzInLFxuXHRcdFx0J2czJyxcblx0XHRcdCdnNCcsXG5cdFx0XHQnZzUnLFxuXHRcdFx0J2c2Jyxcblx0XHRcdCdnNycsXG5cdFx0XHQnZzgnLFxuXHRcdFx0J2c5Jyxcblx0XHRcdCdhMScsXG5cdFx0XHQnYTInLFxuXHRcdFx0J2EzJyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdFx0J2YxJyxcblx0XHRcdCdmMicsXG5cdFx0XHQnZjMnLFxuXHRcdFx0J2Y0Jyxcblx0XHRcdCdmNScsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XSxcblx0XHRwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnk6IFtdLFxuXHRcdG9wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZTogW10sXG5cdFx0ZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZTogdHJ1ZSxcblx0XHRkZWxldGVSZWRpcmVjdHNPbkRlbGV0ZTogdHJ1ZSxcblx0XHRkZWxldGVTeXNvcERlZmF1bHRUb0RlbGV0ZTogZmFsc2UsXG5cdFx0c3BlZWR5V2luZG93SGVpZ2h0OiA1MDAsXG5cdFx0c3BlZWR5V2luZG93V2lkdGg6IDgwMCxcblx0XHRsb2dTcGVlZHlOb21pbmF0aW9uczogdHJ1ZSxcblx0XHRzcGVlZHlMb2dQYWdlTmFtZTogJ0NTROaXpeW/lycsXG5cdFx0bm9Mb2dPblNwZWVkeU5vbWluYXRpb246IFsnbzEnXSxcblx0XHRlbmxhcmdlRzdJbnB1dDogZmFsc2UsXG5cdFx0Ly8gVW5saW5rXG5cdFx0dW5saW5rTmFtZXNwYWNlczogWycwJywgJzYnLCAnMTAnLCAnMzAyJ10sXG5cdFx0Ly8gV2FyblxuXHRcdGRlZmF1bHRXYXJuaW5nR3JvdXA6ICcxJyxcblx0XHRjb21iaW5lZFNpbmdsZXRNZW51czogZmFsc2UsXG5cdFx0d2F0Y2hXYXJuaW5nczogJ3llcycsXG5cdFx0b2xkU2VsZWN0OiBmYWxzZSxcblx0XHRjdXN0b21XYXJuaW5nTGlzdDogW10sXG5cdFx0YXV0b01lbnVBZnRlclJvbGxiYWNrOiBmYWxzZSxcblx0XHQvLyBYZkRcblx0XHRsb2dYZmROb21pbmF0aW9uczogdHJ1ZSxcblx0XHR4ZmRMb2dQYWdlTmFtZTogJ1hmROaXpeW/lycsXG5cdFx0bm9Mb2dPblhmZE5vbWluYXRpb246IFtdLFxuXHRcdHhmZFdhdGNoRGlzY3Vzc2lvbjogJ2RlZmF1bHQnLFxuXHRcdHhmZFdhdGNoUGFnZTogJ2RlZmF1bHQnLFxuXHRcdHhmZFdhdGNoVXNlcjogJ2RlZmF1bHQnLFxuXHRcdG1hcmtYZmRQYWdlc0FzUGF0cm9sbGVkOiB0cnVlLFxuXHRcdEZ3ZENzZFRvWGZkOiBNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRhZmREZWZhdWx0Q2F0ZWdvcnk6ICdkZWxldGUnLFxuXHRcdGFmZEZhbWVEZWZhdWx0UmVhc29uOiAn5rKh5pyJ6Laz5aSf55qE5Y+v6Z2g5p2l5rqQ6K+B5piO5q2k5p2h55uu56ym5ZCIW1tMSUI65pS25b2V5qCH5YeGfOaUtuW9leagh+WHhl1dJyxcblx0XHRhZmRTdWJzdHViRGVmYXVsdFJlYXNvbjogJ+i/h+acn+Wwj+Wwj+S9nOWTgScsXG5cdFx0WGZkQ2xvc2U6IE1vcmViaXRzLnVzZXJJc1N5c29wID8gJ2FsbCcgOiAnaGlkZScsXG5cdFx0Ly8gQ29weXZpb1xuXHRcdGNvcHl2aW9XYXRjaFBhZ2U6ICd5ZXMnLFxuXHRcdGNvcHl2aW9XYXRjaFVzZXI6ICd5ZXMnLFxuXHRcdG1hcmtDb3B5dmlvUGFnZXNBc1BhdHJvbGxlZDogdHJ1ZSxcblx0XHQvLyBIaWRkZW4gcHJlZmVyZW5jZXNcblx0XHRhdXRvbGV2ZWxTdGFsZURheXM6IDMsXG5cdFx0cmV2ZXJ0TWF4UmV2aXNpb25zOiA1MCxcblx0XHQvLyBpbnRlbnRpb25hbGx5IGxpbWl0ZWRcblx0XHRiYXRjaE1heDogNTAwMCxcblx0XHRiYXRjaENodW5rczogNTAsXG5cdFx0Y29uZmlnUGFnZTogJ0hlbHA6VHdpbmtsZS/lj4LmlbDorr7nva4nLFxuXHRcdHByb2plY3ROYW1lc3BhY2VOYW1lOiBtdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVs0XSxcblx0XHRzYW5kYm94UGFnZTogJ0xJQjrmspnnm5InLFxuXHRcdC8vIERlcHJlY2F0ZWQgb3B0aW9ucywgYXMgYSBmYWxsYmFjayBmb3IgYWRkLW9uIHNjcmlwdHMvbW9kdWxlc1xuXHRcdHN1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdGRlbGV0aW9uU3VtbWFyeUFkOiAn77yIW1tIOlRXfFR3aW5rbGVdXe+8iScsXG5cdFx0cHJvdGVjdGlvblN1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdGJsb2NrU3VtbWFyeUFkOiAn77yIW1tIOlRXfFR3aW5rbGVdXe+8iScsXG5cdFx0Ly8gVGFnXG5cdFx0Z3JvdXBCeURlZmF1bHQ6IHRydWUsXG5cdFx0d2F0Y2hUYWdnZWRQYWdlczogJ3llcycsXG5cdFx0d2F0Y2hNZXJnZURpc2N1c3Npb25zOiAneWVzJyxcblx0XHRtYXJrVGFnZ2VkUGFnZXNBc01pbm9yOiBmYWxzZSxcblx0XHRtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZDogdHJ1ZSxcblx0XHR0YWdBcnRpY2xlU29ydE9yZGVyOiAnY2F0Jyxcblx0XHRjdXN0b21UYWdMaXN0OiBbXSxcblx0XHRjdXN0b21GaWxlVGFnTGlzdDogW10sXG5cdFx0Y3VzdG9tUmVkaXJlY3RUYWdMaXN0OiBbXSxcblx0XHQvLyBTdHViXG5cdFx0d2F0Y2hTdHViYmVkUGFnZXM6IGZhbHNlLFxuXHRcdG1hcmtTdHViYmVkUGFnZXNBc01pbm9yOiBmYWxzZSxcblx0XHRtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQ6IHRydWUsXG5cdFx0c3R1YkFydGljbGVTb3J0T3JkZXI6ICdjYXQnLFxuXHRcdGN1c3RvbVN0dWJMaXN0OiBbXSxcblx0XHQvLyBUYWxrYmFja1xuXHRcdG1hcmtUYWxrYmFja0FzTWlub3I6IHRydWUsXG5cdFx0aW5zZXJ0VGFsa2JhY2tTaWduYXR1cmU6IHRydWUsXG5cdFx0Ly8gYWx3YXlzIHNpZ24gdGFsa2JhY2sgdGVtcGxhdGVzXG5cdFx0dGFsa2JhY2tIZWFkaW5nOiB3aW5kb3cud2dVTFMoJ+WbnuWkjemAmuWRiicsICflm57opobpgJrlkYonKSxcblx0XHRtYWlsSGVhZGluZzogd2luZG93LndnVUxTKCfmgqjmnInmlrDpgq7ku7bvvIEnLCAn5oKo5pyJ5paw6YO15Lu277yBJyksXG5cdH07XG5cdC8vIG5vdyBzb21lIHNraW4gZGVwZW5kZW50IGNvbmZpZy5cblx0c3dpdGNoIChtdy5jb25maWcuZ2V0KCdza2luJykpIHtcblx0XHRjYXNlICd2ZWN0b3InOlxuXHRcdGNhc2UgJ3ZlY3Rvci0yMDIyJzpcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0QXJlYSA9ICdyaWdodC1uYXZpZ2F0aW9uJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0SWQgPSAncC10d2lua2xlJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmFtZSA9ICdUVyc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldFR5cGUgPSAnbWVudSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5leHQgPSAncC1zZWFyY2gnO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnZ29uZ2JpJzpcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0QXJlYSA9XG5cdFx0XHRcdCRib2R5LmZpbmQoJyNwYWdlLXRvb2xzIC5zaWRlYmFyLWlubmVyJykubGVuZ3RoID4gMFxuXHRcdFx0XHRcdD8gJyNwYWdlLXRvb2xzIC5zaWRlYmFyLWlubmVyJ1xuXHRcdFx0XHRcdDogJyNwYWdlLW1vcmUgLnNpZGViYXItaW5uZXInO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRJZCA9ICdwLXR3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROYW1lID0gJ1R3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gbnVsbDtcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmV4dCA9XG5cdFx0XHRcdCRib2R5LmZpbmQoJyNwYWdlLXRvb2xzIC5zaWRlYmFyLWlubmVyJykubGVuZ3RoID4gMCA/ICdwYWdlLW1vcmUnIDogbnVsbDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2NpdGl6ZW4nOlxuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRBcmVhID0gJyNwYWdlLWFjdGlvbnMtbW9yZV9fY2FyZCc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldElkID0gJ3AtdHdpbmtsZSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5hbWUgPSAnVHdpbmtsZSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldFR5cGUgPSAnbmF2Jztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmV4dCA9ICdwLXRiJztcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldEFyZWEgPSBudWxsO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRJZCA9ICdwLWNhY3Rpb25zJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmFtZSA9IG51bGw7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldFR5cGUgPSBudWxsO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROZXh0ID0gbnVsbDtcblx0fVxuXHRUd2lua2xlLmdldFByZWYgPSAobmFtZSkgPT4ge1xuXHRcdGlmICh0eXBlb2YgVHdpbmtsZS5wcmVmcyA9PT0gJ29iamVjdCcgJiYgVHdpbmtsZS5wcmVmc1tuYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gVHdpbmtsZS5wcmVmc1tuYW1lXTtcblx0XHR9XG5cdFx0Ly8gT2xkIHByZWZlcmVuY2VzIGZvcm1hdCwgdXNlZCBiZWZvcmUgdHdpbmtsZW9wdGlvbnMuanMgd2FzIGEgdGhpbmdcblx0XHRpZiAodHlwZW9mIHdpbmRvdy5Ud2lua2xlQ29uZmlnID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuVHdpbmtsZUNvbmZpZ1tuYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gd2luZG93LlR3aW5rbGVDb25maWdbbmFtZV07XG5cdFx0fVxuXHRcdHJldHVybiBUd2lua2xlLmRlZmF1bHRDb25maWdbbmFtZV07XG5cdH07XG5cdC8qKlxuXHQgKiAqKioqKioqKioqKioqKioqIFR3aW5rbGUuYWRkUG9ydGxldCgpICoqKioqKioqKioqKioqKipcblx0ICpcblx0ICogQWRkcyBhIHBvcnRsZXQgbWVudSB0byBvbmUgb2YgdGhlIG5hdmlnYXRpb24gYXJlYXMgb24gdGhlIHBhZ2UuXG5cdCAqIFRoaXMgaXMgbmVjZXNzYXJpbHkgcXVpdGUgYSBoYWNrIHNpbmNlIHNraW5zLCBuYXZpZ2F0aW9uIGFyZWFzLCBhbmRcblx0ICogcG9ydGxldCBtZW51IHR5cGVzIGFsbCB3b3JrIHNsaWdodGx5IGRpZmZlcmVudC5cblx0ICpcblx0ICogQXZhaWxhYmxlIG5hdmlnYXRpb24gYXJlYXMgZGVwZW5kIG9uIHRoZSBza2luIHVzZWQuXG5cdCAqIFZlY3Rvcjpcblx0ICogLSBGb3IgZWFjaCBvcHRpb24sIHRoZSBvdXRlciBuYXYgY2xhc3MgY29udGFpbnMgXCJ2ZWN0b3ItbWVudVwiLCB0aGUgaW5uZXIgZGl2IGNsYXNzIGlzIFwidmVjdG9yLW1lbnUtY29udGVudFwiLCBhbmQgdGhlIHVsIGlzIFwidmVjdG9yLW1lbnUtY29udGVudC1saXN0XCJcblx0ICogLSBcIm13LXBhbmVsXCIsIG91dGVyIG5hdiBjbGFzcyBjb250YWlucyBcInZlY3Rvci1tZW51LXBvcnRhbFwiLiBFeGlzdGluZyBwb3J0bGV0cy9lbGVtZW50czogXCJwLWxvZ29cIiwgXCJwLW5hdmlnYXRpb25cIiwgXCJwLWludGVyYWN0aW9uXCIsIFwicC10YlwiLCBcInAtY29sbC1wcmludF9leHBvcnRcIlxuXHQgKiAtIFwibGVmdC1uYXZpZ2F0aW9uXCIsIG91dGVyIG5hdiBjbGFzcyBjb250YWlucyBcInZlY3Rvci1tZW51LXRhYnNcIiBvciBcInZlY3Rvci1tZW51LWRyb3Bkb3duXCIuIEV4aXN0aW5nIHBvcnRsZXRzOiBcInAtbmFtZXNwYWNlc1wiLCBcInAtdmFyaWFudHNcIiAobWVudSlcblx0ICogLSBcInJpZ2h0LW5hdmlnYXRpb25cIiwgb3V0ZXIgbmF2IGNsYXNzIGNvbnRhaW5zIFwidmVjdG9yLW1lbnUtdGFic1wiIG9yIFwidmVjdG9yLW1lbnUtZHJvcGRvd25cIi4gRXhpc3RpbmcgcG9ydGxldHM6IFwicC12aWV3c1wiLCBcInAtY2FjdGlvbnNcIiAobWVudSksIFwicC1zZWFyY2hcIlxuXHQgKiAtIFNwZWNpYWwgbGF5b3V0IG9mIHAtcGVyc29uYWwgcG9ydGxldCAocGFydCBvZiBcImhlYWRcIikgdGhyb3VnaCBzcGVjaWFsaXplZCBzdHlsZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYXZpZ2F0aW9uIC0tIGlkIG9mIHRoZSB0YXJnZXQgbmF2aWdhdGlvbiBhcmVhIChza2luIGRlcGVuZGFudCwgb24gdmVjdG9yIGVpdGhlciBvZiBcImxlZnQtbmF2aWdhdGlvblwiLCBcInJpZ2h0LW5hdmlnYXRpb25cIiwgb3IgXCJtdy1wYW5lbFwiKVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWQgLS0gaWQgb2YgdGhlIHBvcnRsZXQgbWVudSB0byBjcmVhdGUsIHByZWZlcmFibHkgc3RhcnQgd2l0aCBcInAtXCIuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0tIG5hbWUgb2YgdGhlIHBvcnRsZXQgbWVudSB0byBjcmVhdGUuIFZpc2liaWxpdHkgZGVwZW5kcyBvbiB0aGUgY2xhc3MgdXNlZC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLS0gdHlwZSBvZiBwb3J0bGV0LiBDdXJyZW50bHkgb25seSB1c2VkIGZvciB0aGUgdmVjdG9yIG5vbi1zaWRlYmFyIHBvcnRsZXRzLCBwYXNzIFwibWVudVwiIHRvIG1ha2UgdGhpcyBwb3J0bGV0IGEgZHJvcCBkb3duIG1lbnUuXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbmV4dG5vZGVpZCAtLSB0aGUgaWQgb2YgdGhlIG5vZGUgYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRkZWQsIHNob3VsZCBiZSBhbm90aGVyIGl0ZW0gaW4gdGhlIHNhbWUgbGlzdCwgb3IgdW5kZWZpbmVkIHRvIHBsYWNlIGl0IGF0IHRoZSBlbmQuXG5cdCAqXG5cdCAqIEByZXR1cm4ge05vZGV9IC0tIHRoZSBET00gbm9kZSBvZiB0aGUgbmV3IGl0ZW0gKGEgRElWIGVsZW1lbnQpIG9yIG51bGxcblx0ICovXG5cdFR3aW5rbGUuYWRkUG9ydGxldCA9IChuYXZpZ2F0aW9uLCBpZCwgdGV4dCwgdHlwZSwgbmV4dG5vZGVpZCkgPT4ge1xuXHRcdC8vIHNhbml0eSBjaGVja3MsIGFuZCBnZXQgcmVxdWlyZWQgRE9NIG5vZGVzXG5cdFx0Y29uc3Qgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoL14oPzojfFxcLikvLnRlc3QobmF2aWdhdGlvbikgPyBuYXZpZ2F0aW9uIDogYCMke25hdmlnYXRpb259YCk7XG5cdFx0aWYgKCFyb290KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0Y29uc3QgaXRlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfWApO1xuXHRcdGlmIChpdGVtKSB7XG5cdFx0XHRpZiAoaXRlbS5wYXJlbnROb2RlICYmIGl0ZW0ucGFyZW50Tm9kZSA9PT0gcm9vdCkge1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRsZXQgbmV4dG5vZGU7XG5cdFx0aWYgKG5leHRub2RlaWQpIHtcblx0XHRcdG5leHRub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7bmV4dG5vZGVpZH1gKTtcblx0XHR9XG5cdFx0Ly8gdmVyaWZ5L25vcm1hbGl6ZSBpbnB1dFxuXHRcdGNvbnN0IHNraW4gPSBtdy5jb25maWcuZ2V0KCdza2luJyk7XG5cdFx0aWYgKFxuXHRcdFx0KHNraW4gIT09ICd2ZWN0b3InICYmIHNraW4gIT09ICd2ZWN0b3ItMjAyMicpIHx8XG5cdFx0XHQobmF2aWdhdGlvbiAhPT0gJ2xlZnQtbmF2aWdhdGlvbicgJiYgbmF2aWdhdGlvbiAhPT0gJ3JpZ2h0LW5hdmlnYXRpb24nKVxuXHRcdCkge1xuXHRcdFx0dHlwZSA9IG51bGw7IC8vIG1lbnUgc3VwcG9ydGVkIG9ubHkgaW4gdmVjdG9yJ3MgI2xlZnQtbmF2aWdhdGlvbiAmICNyaWdodC1uYXZpZ2F0aW9uXG5cdFx0fVxuXHRcdGxldCBvdXRlck5hdkNsYXNzO1xuXHRcdGxldCBpbm5lckRpdkNsYXNzO1xuXHRcdHN3aXRjaCAoc2tpbikge1xuXHRcdFx0Y2FzZSAndmVjdG9yJzpcblx0XHRcdGNhc2UgJ3ZlY3Rvci0yMDIyJzpcblx0XHRcdFx0Ly8gWFhYOiBwb3J0YWwgZG9lc24ndCB3b3JrXG5cdFx0XHRcdGlmIChuYXZpZ2F0aW9uICE9PSAncG9ydGFsJyAmJiBuYXZpZ2F0aW9uICE9PSAnbGVmdC1uYXZpZ2F0aW9uJyAmJiBuYXZpZ2F0aW9uICE9PSAncmlnaHQtbmF2aWdhdGlvbicpIHtcblx0XHRcdFx0XHRuYXZpZ2F0aW9uID0gJ213LXBhbmVsJztcblx0XHRcdFx0fVxuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ213LXBvcnRsZXQgdmVjdG9yLW1lbnUnO1xuXHRcdFx0XHRpZiAobmF2aWdhdGlvbiA9PT0gJ213LXBhbmVsJykge1xuXHRcdFx0XHRcdG91dGVyTmF2Q2xhc3MgKz0gJyB2ZWN0b3ItbWVudS1wb3J0YWwnO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGUgPT09ICdtZW51Jykge1xuXHRcdFx0XHRcdG91dGVyTmF2Q2xhc3MgKz0gJyB2ZWN0b3ItbWVudS1kcm9wZG93biB2ZWN0b3ItZHJvcGRvd24gdmVjdG9yLW1lbnUtZHJvcGRvd24tbm9pY29uJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRvdXRlck5hdkNsYXNzICs9ICcgdmVjdG9yLW1lbnUtdGFicyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5uZXJEaXZDbGFzcyA9ICd2ZWN0b3ItbWVudS1jb250ZW50IHZlY3Rvci1kcm9wZG93bi1jb250ZW50Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdnb25nYmknOlxuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ213LXBvcnRsZXQnO1xuXHRcdFx0XHRpbm5lckRpdkNsYXNzID0gJ213LXBvcnRsZXQtYm9keSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnY2l0aXplbic6XG5cdFx0XHRcdG91dGVyTmF2Q2xhc3MgPSAnbXctcG9ydGxldCc7XG5cdFx0XHRcdGlubmVyRGl2Q2xhc3MgPSAnbXctcG9ydGxldC10d2lua2xlJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRuYXZpZ2F0aW9uID0gJ2NvbHVtbi1vbmUnO1xuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ3BvcnRsZXQnO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gQnVpbGQgdGhlIERPTSBlbGVtZW50cy5cblx0XHRsZXQgb3V0ZXJOYXY7XG5cdFx0bGV0IGhlYWRpbmc7XG5cdFx0aWYgKHNraW4gPT09ICd2ZWN0b3ItMjAyMicpIHtcblx0XHRcdG91dGVyTmF2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0ZXJOYXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduYXYnKTtcblx0XHRcdGhlYWRpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMycpO1xuXHRcdH1cblx0XHRvdXRlck5hdi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIGAke2lkfS1sYWJlbGApO1xuXHRcdC8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBoZXJlIChvdXRlck5hdkNsYXNzKTpcblx0XHQvLyAqIG13LXBvcnRsZXQgdmVjdG9yLW1lbnUgdmVjdG9yLW1lbnUtKlxuXHRcdC8vICogbXctcG9ydGxldFxuXHRcdC8vICogY29sdW1uLW9uZVxuXHRcdC8vIFZlY3RvciBnZXR0aW5nIHZlY3Rvci1tZW51LWVtcHR5IEZJWE1FIFRPRE9cblx0XHRvdXRlck5hdi5jbGFzc05hbWUgPSBgJHtvdXRlck5hdkNsYXNzfSBlbXB0eVBvcnRsZXRgO1xuXHRcdG91dGVyTmF2LmlkID0gaWQ7XG5cdFx0aWYgKG5leHRub2RlICYmIG5leHRub2RlLnBhcmVudE5vZGUgPT09IHJvb3QpIHtcblx0XHRcdHJvb3QuaW5zZXJ0QmVmb3JlKG91dGVyTmF2LCBuZXh0bm9kZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJvb3QuYXBwZW5kQ2hpbGQob3V0ZXJOYXYpO1xuXHRcdH1cblx0XHRoZWFkaW5nLmlkID0gYCR7aWR9LWxhYmVsYDtcblx0XHRjb25zdCB1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7XG5cdFx0aWYgKHNraW4gPT09ICd2ZWN0b3InIHx8IHNraW4gPT09ICd2ZWN0b3ItMjAyMicpIHtcblx0XHRcdGhlYWRpbmcuc2V0QXR0cmlidXRlKCdmb3InLCBgJHtpZH0tZHJvcGRvd24tY2hlY2tib3hgKTtcblx0XHRcdHVsLmNsYXNzTmFtZSA9ICd2ZWN0b3ItbWVudS1jb250ZW50LWxpc3QnO1xuXHRcdFx0aGVhZGluZy5jbGFzc05hbWUgPSAndmVjdG9yLW1lbnUtaGVhZGluZyB2ZWN0b3ItZHJvcGRvd24tbGFiZWwnO1xuXHRcdFx0Ly8gYWRkIGludmlzaWJsZSBjaGVja2JveCB0byBrZWVwIG1lbnUgb3BlbiB3aGVuIGNsaWNrZWRcblx0XHRcdC8vIHNpbWlsYXIgdG8gdGhlIHAtY2FjdGlvbnMgKFwiTW9yZVwiKSBtZW51XG5cdFx0XHRpZiAob3V0ZXJOYXZDbGFzcy5pbmNsdWRlcygndmVjdG9yLW1lbnUtZHJvcGRvd24nKSkge1xuXHRcdFx0XHRjb25zdCBjaGtib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRjaGtib3guaWQgPSBgJHtpZH0tZHJvcGRvd24tY2hlY2tib3hgO1xuXHRcdFx0XHRjaGtib3guY2xhc3NOYW1lID0gJ3ZlY3Rvci1tZW51LWNoZWNrYm94IHZlY3Rvci1kcm9wZG93bi1jaGVja2JveCc7XG5cdFx0XHRcdGNoa2JveC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTtcblx0XHRcdFx0Y2hrYm94LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgYCR7aWR9LWxhYmVsYCk7XG5cdFx0XHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKGNoa2JveCk7XG5cdFx0XHRcdC8vIFZlY3RvciBnZXRzIGl0cyB0aXRsZSBpbiBhIHNwYW47IGFsbCBvdGhlcnMgZXhjZXB0XG5cdFx0XHRcdC8vIGdvbmdiaSBoYXZlIG5vIHRpdGxlLCBhbmQgaXQgaGFzIG5vIHNwYW5cblx0XHRcdFx0Y29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG5cdFx0XHRcdGhlYWRpbmcuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cdFx0XHRcdGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdGEuaHJlZiA9ICcjJztcblx0XHRcdFx0JChhKS5vbignY2xpY2snLCAoZSkgPT4ge1xuXHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGhlYWRpbmcuYXBwZW5kQ2hpbGQoYSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEJhc2ljYWxseSBqdXN0IEdvbmdiaVxuXHRcdFx0aGVhZGluZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG5cdFx0fVxuXHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKGhlYWRpbmcpO1xuXHRcdGlmIChpbm5lckRpdkNsYXNzKSB7XG5cdFx0XHRjb25zdCBpbm5lckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0Ly8gVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB1c2VkIGhlcmUgKGlubmVyRGl2Q2xhc3MpOlxuXHRcdFx0Ly8gKiB2ZWN0b3ItbWVudS1jb250ZW50XG5cdFx0XHQvLyAqIG13LXBvcnRsZXQtYm9keVxuXHRcdFx0Ly8gKiBtdy1wb3J0bGV0LXR3aW5rbGVcblx0XHRcdC8vICogcG9ydGxldFxuXHRcdFx0aW5uZXJEaXYuY2xhc3NOYW1lID0gaW5uZXJEaXZDbGFzcztcblx0XHRcdGlubmVyRGl2LmFwcGVuZENoaWxkKHVsKTtcblx0XHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKGlubmVyRGl2KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0ZXJOYXYuYXBwZW5kQ2hpbGQodWwpO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0ZXJOYXY7XG5cdH07XG5cdC8qKlxuXHQgKiAqKioqKioqKioqKioqKioqIFR3aW5rbGUuYWRkUG9ydGxldExpbmsoKSAqKioqKioqKioqKioqKioqXG5cdCAqIEJ1aWxkcyBhIHBvcnRsZXQgbWVudSBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldCwgYW5kIGFkZCB0aGUgcG9ydGxldCBsaW5rLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbn0gdGFzayAtLSBFaXRoZXIgYSBVUkwgZm9yIHRoZSBwb3J0bGV0IGxpbmsgb3IgYSBmdW5jdGlvbiB0byBleGVjdXRlLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRvb2x0aXBcblx0ICogQHJldHVybiB7T2JqZWN0fSBsaW5rXG5cdCAqL1xuXHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rID0gKHRhc2ssIHRleHQsIGlkLCB0b29sdGlwKSA9PiB7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldEFyZWEnKSAhPT0gbnVsbCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0KFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXRBcmVhJyksXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldElkJyksXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldE5hbWUnKSxcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0VHlwZScpLFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXROZXh0Jylcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGNvbnN0IGxpbmsgPSBtdy51dGlsLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0SWQnKSxcblx0XHRcdHR5cGVvZiB0YXNrID09PSAnc3RyaW5nJyA/IHRhc2sgOiAnIycsXG5cdFx0XHR0ZXh0LFxuXHRcdFx0aWQsXG5cdFx0XHR0b29sdGlwXG5cdFx0KTtcblx0XHQkYm9keS5maW5kKCcuY2xpZW50LWpzIC5za2luLXZlY3RvciAjcC1jYWN0aW9ucycpLmNzcygnbWFyZ2luLXJpZ2h0JywgJ2luaXRpYWwnKTtcblx0XHRpZiAodHlwZW9mIHRhc2sgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdCQobGluaylcblx0XHRcdFx0LmZpbmQoJ2EnKVxuXHRcdFx0XHQub24oJ2NsaWNrJywgKGV2KSA9PiB7XG5cdFx0XHRcdFx0dGFzaygpO1xuXHRcdFx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoJC5jb2xsYXBzaWJsZVRhYnMpIHtcblx0XHRcdCQuY29sbGFwc2libGVUYWJzLmhhbmRsZVJlc2l6ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gbGluaztcblx0fTtcblx0LyoqXG5cdCAqICoqKioqKioqKioqKioqKiogR2VuZXJhbCBpbml0aWFsaXphdGlvbiBjb2RlICoqKioqKioqKioqKioqKipcblx0ICovXG5cdGNvbnN0IHNjcmlwdHVybCA9IG13LnV0aWwuZ2V0VXJsKGBVc2VyOiR7bXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpfS90d2lua2xlb3B0aW9ucy5qc2AsIHtcblx0XHRhY3Rpb246ICdyYXcnLFxuXHRcdGN0eXBlOiAndGV4dC9qYXZhc2NyaXB0Jyxcblx0XHRoYXBweTogJ3llcycsXG5cdH0pO1xuXHQvLyBSZXRyaWV2ZSB0aGUgdXNlcidzIFR3aW5rbGUgcHJlZmVyZW5jZXMgKHdpbmRvdy5Ud2lua2xlLnByZWZzKVxuXHRUd2lua2xlLnByZWZzIHx8PSB7fTtcblx0bXcubG9hZGVyXG5cdFx0LmdldFNjcmlwdChzY3JpcHR1cmwpXG5cdFx0LmZhaWwoKCkgPT4ge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5pyq6IO95Yqg6L295oKo55qEVHdpbmtsZeWPguaVsOiuvue9ricsICfmnKrog73ovInlhaXmgqjnmoRUd2lua2xl5YGP5aW96Kit5a6aJyksIHtcblx0XHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZScsXG5cdFx0XHR9KTtcblx0XHR9KVxuXHRcdC5hbHdheXMoKCkgPT4ge1xuXHRcdFx0JChUd2lua2xlLmxvYWQpO1xuXHRcdH0pO1xuXHQvLyBEZXZlbG9wZXJzOiB5b3UgY2FuIGltcG9ydCBjdXN0b20gVHdpbmtsZSBtb2R1bGVzIGhlcmVcblx0Ly8gRm9yIGV4YW1wbGUsIG13LmxvYWRlci5sb2FkKHNjcmlwdHBhdGhiZWZvcmUgKyBcIlVzZXI6VW5jbGVEb3VnZ2llL21vcmViaXRzLXRlc3QuanNcIiArIHNjcmlwdHBhdGhhZnRlcik7XG5cdFR3aW5rbGUubG9hZCA9ICgpID0+IHtcblx0XHQvLyBEb24ndCBhY3RpdmF0ZSBvbiBzcGVjaWFsIHBhZ2VzIG90aGVyIHRoYW4gdGhvc2UgbGlzdGVkIGhlcmUsIHNvXG5cdFx0Ly8gdGhhdCBvdGhlcnMgbG9hZCBmYXN0ZXIsIGVzcGVjaWFsbHkgdGhlIHdhdGNobGlzdC5cblx0XHRsZXQgYWN0aXZlU3BlY2lhbFBhZ2VMaXN0ID0gWydCbG9jaycsICdDb250cmlidXRpb25zJywgJ0FidXNlTG9nJywgJ1JlY2VudGNoYW5nZXMnLCAnUmVjZW50Y2hhbmdlc2xpbmtlZCddOyAvLyB3Z1JlbGV2YW50VXNlck5hbWUgZGVmaW5lZCBmb3Igbm9uLXN5c29wcyBvbiBTcGVjaWFsOkJsb2NrXG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRhY3RpdmVTcGVjaWFsUGFnZUxpc3QgPSBbXG5cdFx0XHRcdC4uLmFjdGl2ZVNwZWNpYWxQYWdlTGlzdCxcblx0XHRcdFx0J0RlbGV0ZWRDb250cmlidXRpb25zJyxcblx0XHRcdFx0J1ByZWZpeGluZGV4Jyxcblx0XHRcdFx0J0Jyb2tlblJlZGlyZWN0cycsXG5cdFx0XHRdO1xuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAtMSAmJlxuXHRcdFx0IWFjdGl2ZVNwZWNpYWxQYWdlTGlzdC5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBQcmV2ZW50IGNsaWNramFja2luZ1xuXHRcdGlmICh3aW5kb3cudG9wICE9PSB3aW5kb3cuc2VsZikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBTZXQgY3VzdG9tIEFwaS1Vc2VyLUFnZW50IGhlYWRlciwgZm9yIHNlcnZlci1zaWRlIGxvZ2dpbmcgcHVycG9zZXNcblx0XHRUd2lua2xlLnVzZXJBZ2VudCA9ICdUd2lua2xlLzEuMSc7XG5cdFx0TW9yZWJpdHMud2lraS5hcGkuc2V0QXBpVXNlckFnZW50KFR3aW5rbGUudXNlckFnZW50KTtcblx0XHRUd2lua2xlLmRpc2FibGVkTW9kdWxlcyA9IFsuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkTW9kdWxlcycpLCAuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkU3lzb3BNb2R1bGVzJyldO1xuXHRcdC8vIFJlZGVmaW5lIGFkZEluaXRDYWxsYmFjayBzbyB0aGF0IGFueSBtb2R1bGVzIGJlaW5nIGxvYWRlZCBub3cgb24gYXJlIGRpcmVjdGx5XG5cdFx0Ly8gaW5pdGlhbGlzZWQgcmF0aGVyIHRoYW4gYWRkZWQgdG8gaW5pdENhbGxiYWNrcyBhcnJheVxuXHRcdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrID0gKGZ1bmMsIG5hbWUpID0+IHtcblx0XHRcdGlmICghbmFtZSB8fCAhVHdpbmtsZS5kaXNhYmxlZE1vZHVsZXMuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdFx0ZnVuYygpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gSW5pdGlhbGlzZSBtb2R1bGVzIHRoYXQgd2VyZSBzYXZlZCBpbiBpbml0Q2FsbGJhY2tzIGFycmF5XG5cdFx0Zm9yIChjb25zdCBtb2R1bGUgb2YgVHdpbmtsZS5pbml0Q2FsbGJhY2tzKSB7XG5cdFx0XHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhtb2R1bGUuZnVuYywgbW9kdWxlLm5hbWUpO1xuXHRcdH1cblx0XHQvLyBJbmNyZWFzZXMgdGV4dCBzaXplIGluIFR3aW5rbGUgZGlhbG9ncywgaWYgc28gY29uZmlndXJlZFxuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2RpYWxvZ0xhcmdlRm9udCcpKSB7XG5cdFx0XHRtdy51dGlsLmFkZENTUyhcblx0XHRcdFx0Jy5tb3JlYml0cy1kaWFsb2ctY29udGVudCwubW9yZWJpdHMtZGlhbG9nLWZvb3Rlcmxpbmtze2ZvbnQtc2l6ZToxMDAlIWltcG9ydGFudH0ubW9yZWJpdHMtZGlhbG9nIGlucHV0LC5tb3JlYml0cy1kaWFsb2cgc2VsZWN0LC5tb3JlYml0cy1kaWFsb2ctY29udGVudCBidXR0b257Zm9udC1zaXplOmluaGVyaXQgIWltcG9ydGFudH0nXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvLyBIaWRlIHRoZSBsaW5nZXJpbmcgc3BhY2UgaWYgdGhlIFRXIG1lbnUgaXMgZW1wdHlcblx0XHRjb25zdCBpc1ZlY3RvciA9IFsndmVjdG9yJywgJ3ZlY3Rvci0yMDIyJ10uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnc2tpbicpKTtcblx0XHRpZiAoaXNWZWN0b3IgJiYgVHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0VHlwZScpID09PSAnbWVudScgJiYgJGJvZHkuZmluZCgnI3AtdHdpbmtsZScpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0JGJvZHkuZmluZCgnI3AtY2FjdGlvbnMnKS5jc3MoJ21hcmdpbi1yaWdodCcsICdpbml0aWFsJyk7XG5cdFx0fVxuXHR9O1xuXHQvKipcblx0ICogVHdpbmtsZS1zcGVjaWZpYyB1dGlsaXR5IGZ1bmN0aW9ucyBzaGFyZWQgYnkgbXVsdGlwbGUgbW9kdWxlc1xuXHQgKlxuXHQgKiBAcGFyYW0geyp9IGZpcnN0XG5cdCAqIEBwYXJhbSB7Kn0gc2Vjb25kXG5cdCAqL1xuXHQvLyBVc2VkIGluIGJhdGNoLCB1bmxpbmssIGFuZCBkZXByb2QgdG8gc29ydCBwYWdlcyBieSBuYW1lc3BhY2UsIGFzXG5cdC8vIGpzb24gZm9ybWF0dmVyc2lvbj0yIHNvcnRzIGJ5IHBhZ2VpZCBpbnN0ZWFkICgjMTI1MSlcblx0VHdpbmtsZS5zb3J0QnlOYW1lc3BhY2UgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuXHRcdHJldHVybiBmaXJzdC5ucyAtIHNlY29uZC5ucyB8fCAoZmlyc3QudGl0bGUgPiBzZWNvbmQudGl0bGUgPyAxIDogLTEpO1xuXHR9O1xuXHQvLyBVc2VkIGluIHVubGluayBsaXN0aW5ncyB0byBsaW5rIHRoZSBwYWdlIHRpdGxlXG5cdFR3aW5rbGUuZ2VuZXJhdGVCYXRjaFBhZ2VMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICRjaGVja2JveC52YWwoKSk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3R3LWJhdGNocGFnZS1saW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgkY2hlY2tib3gudmFsKCkpKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdCRjaGVja2JveC5uZXh0KCkucHJlcGVuZChbbGluaywgJyAnXSk7XG5cdH07XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYXJ2LmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWFydigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZWFydi5qczogQVJWIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJBUlZcIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicywgZXRjLilcblx0ICovXG5cdFR3aW5rbGUuYXJ2ID0gKCkgPT4ge1xuXHRcdGNvbnN0IHVzZXJuYW1lID0gbXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyk7XG5cdFx0aWYgKCF1c2VybmFtZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBpc0lQID0gbXcudXRpbC5pc0lQQWRkcmVzcyh1c2VybmFtZSk7XG5cdFx0Y29uc3QgdGl0bGUgPSBpc0lQXG5cdFx0XHQ/IHdpbmRvdy53Z1VMUygn5oql5ZGKSVDnu5nnrqHnkIblkZgnLCAn5aCx5ZGKSVDntabnrqHnkIblk6EnKVxuXHRcdFx0OiB3aW5kb3cud2dVTFMoJ+aKpeWRiueUqOaIt+e7meeuoeeQhuS6uuWRmCcsICfloLHlkYrkvb/nlKjogIXntabnrqHnkIbkurrlk6EnKTtcblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmFydi5jYWxsYmFjayh1c2VybmFtZSwgaXNJUCk7XG5cdFx0XHR9LFxuXHRcdFx0d2luZG93LndnVUxTKCflkYrnirYnLCAn5ZGK54uAJyksXG5cdFx0XHQndHctYXJ2Jyxcblx0XHRcdHRpdGxlXG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sgPSAodWlkLCBpc0lQKSA9PiB7XG5cdFx0aWYgKHVpZCA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfkvaDkuI3mg7PmiqXlkYrkvaDoh6rlt7HvvIzlr7nlkKfvvJ8nLCAn5L2g5LiN5oOz5aCx5ZGK5L2g6Ieq5bex77yM5bCN5ZCn77yfJyksIHtcblx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNTAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmiqXlkYrnlKjmiLfnu5nnrqHnkIbkurrlkZgnLCAn5aCx5ZGK5L2/55So6ICF57Wm566h55CG5Lq65ZOhJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflkYrnirborr7nva4nLCAn5ZGK54uA6Kit5a6aJyksICdIOlRXL1BSRUYjYXJ2Jyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcj5ZGK54uAJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5hcnYuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGNvbnN0IGNhdGVnb3JpZXMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdjYXRlZ29yeScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nmiqXlkYrnsbvlnovvvJonLCAn6YG45pOH5aCx5ZGK6aGe5Yil77yaJyksXG5cdFx0XHRldmVudDogVHdpbmtsZS5hcnYuY2FsbGJhY2suY2hhbmdlQ2F0ZWdvcnksXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnoLTlnY/vvIhMSUI6VklQ77yJJywgJ+egtOWjnu+8iExJQjpWSVDvvIknKSxcblx0XHRcdHZhbHVlOiAnYWl2Jyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8lui+keS6ieiuru+8iExJQjpFV0lQ77yJJywgJ+e3qOi8r+eIreitsO+8iExJQjpFV0lQ77yJJyksXG5cdFx0XHR2YWx1ZTogJ2V3aXAnLFxuXHRcdH0pO1xuXHRcdGNhdGVnb3JpZXMuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35ZCN77yITElCOlVBQe+8iScsICfkvb/nlKjogIXlkI3nqLHvvIhMSUI6VUFB77yJJyksXG5cdFx0XHR2YWx1ZTogJ3VzZXJuYW1lJyxcblx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHVpZCksXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflgoDlhKHosIPmn6XvvIhMSUI6U1BJ77yJJywgJ+WCgOWEoeiqv+afpe+8iExJQjpTUEnvvIknKSxcblx0XHRcdHZhbHVlOiAnc3BpJyxcblx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHVpZCksXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRsYWJlbDogJycsXG5cdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdGlkOiAndHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICdXb3JrIGFyZWEnLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRsYWJlbDogJ+aPkOS6pCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2hpZGRlbicsXG5cdFx0XHRuYW1lOiAndWlkJyxcblx0XHRcdHZhbHVlOiB1aWQsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIHVzZXIgaXMgYmxvY2tlZCwgdXBkYXRlIG5vdGljZVxuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0bGlzdDogJ2Jsb2NrcycsXG5cdFx0XHRia3Byb3A6ICdyYW5nZXxmbGFncycsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHR9O1xuXHRcdGlmIChpc0lQKSB7XG5cdFx0XHRxdWVyeS5ia2lwID0gdWlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gdWlkO1xuXHRcdH1cblx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkod2luZG93LndnVUxTKCfmo4Dmn6XnlKjmiLfnmoTlsIHnpoHnirbmgIEnLCAn5qqi5p+l5L2/55So6ICF55qE5bCB6Y6W54uA5oWLJyksIHF1ZXJ5LCAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBibG9ja2xpc3QgPSBhcGlvYmouZ2V0UmVzcG9uc2UoKS5xdWVyeS5ibG9ja3M7XG5cdFx0XHRpZiAoYmxvY2tsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBbYmxvY2tdID0gYmxvY2tsaXN0O1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9XG5cdFx0XHRcdFx0KGlzSVAgPyB3aW5kb3cud2dVTFMoJ+atpElQ5Zyw5Z2AJywgJ+atpElQ5L2N5Z2AJykgOiB3aW5kb3cud2dVTFMoJ+atpOi0puWPtycsICfmraTos6zomZ8nKSkgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bey57uP6KKrJywgJ+W3sue2k+iiqycpICtcblx0XHRcdFx0XHQoYmxvY2sucGFydGlhbCA/ICfpg6jliIYnIDogJycpO1xuXHRcdFx0XHQvLyBTdGFydCBhbmQgZW5kIGRpZmZlciwgcmFuZ2UgYmxvY2tlZFxuXHRcdFx0XHRtZXNzYWdlICs9IGJsb2NrLnJhbmdlc3RhcnQgPT09IChibG9jay5yYW5nZWVuZCA/ICfmrrUnIDogJycpICsgd2luZG93LndnVUxTKCflsIHnpoHjgIInLCAn5bCB6Y6W44CCJyk7XG5cdFx0XHRcdGlmIChibG9jay5wYXJ0aWFsKSB7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtYXJ2LWJsb2Nrd2FybmluZycpLmNzcygnY29sb3InLCAnYmxhY2snKTsgLy8gTGVzcyBzZXZlcmVcblx0XHRcdFx0fVxuXHRcdFx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJykudGV4dChtZXNzYWdlKTtcblx0XHRcdH1cblx0XHR9KS5wb3N0KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZVxuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2Lmx0YV9saXN0ID0gW1xuXHRcdHtcblx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmFydi5jYWxsYmFjay5zb2NrbWFzdGVyX2NoYW5nZWQgPSAoZSkgPT4ge1xuXHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnNldF9zb2NrbWFzdGVyKGUudGFyZ2V0LnZhbHVlKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIgPSAoc29ja21hc3RlcikgPT4ge1xuXHRcdCRib2R5LmZpbmQoJ2NvZGUudHctYXJ2LXNvY2ttYXN0ZXInKS50ZXh0KCd7eycuY29uY2F0KCdzdWJzdDonLCBgU29ja3N1c3BlY3Rub3RpY2V8MT0ke3NvY2ttYXN0ZXJ9fX1gKSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmNoYW5nZUNhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCB2YWx1ZV8gPSBlLnRhcmdldC52YWx1ZTtcblx0XHRjb25zdCByb290XyA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyb290XywgJ3dvcmtfYXJlYScpO1xuXHRcdGxldCB3b3JrX2FyZWEgPSBudWxsO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdHByZXZpZXdsaW5rLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblx0XHRwcmV2aWV3bGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6aKE6KeIJywgJ+mgkOimvScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnByZXZpZXcocm9vdF8pO1xuXHRcdH0pO1xuXHRcdHN3aXRjaCAodmFsdWVfKSB7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aKpeWRiue8lui+keS6ieiuricsICfloLHlkYrnt6jovK/niK3orbAnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ebuOWFs+mhtemdou+8micsICfnm7jpl5zpoIHpnaLvvJonKSxcblx0XHRcdFx0XHRzdWJsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLvvJonLCAn6aCB6Z2i77yaJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflpoLkuI3luIzmnJvorqnmiqXlkYrpk77mjqXliLDpobXpnaLvvIzor7fnlZnnqbonLCAn5aaC5LiN5biM5pyb6K6T5aCx5ZGK6YCj57WQ5Yiw6aCB6Z2i77yM6KuL55WZ56m6JyksXG5cdFx0XHRcdFx0bWluOiAxLFxuXHRcdFx0XHRcdG1heDogMTAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK5LiN5b2T55So5oi35ZCNJywgJ+WgseWRiuS4jeeVtuS9v+eUqOiAheWQjeeosScpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5b2T55So5oi35ZCN57G75Z6LJywgJ+S4jeeVtuS9v+eUqOiAheWQjeeosemhnuWIpScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmnInlhb3moaPmoYjppobkuI3lhYHorrjkvb/nlKjluKbmnInor6/lr7zmgKfjgIHlrqPkvKDmgKfjgIHkvq7ovrHmgKfmiJbnoLTlnY/mgKfnmoTnlKjmiLflkI3jgILmraTlpJbvvIzkvb/nlKjln5/lkI3lj4rpgq7nrrHlnLDlnYDnmoTnlKjmiLflkI3kuqbooqvnpoHmraLjgILov5nkupvlh4bliJnkv7HlupTlupTnlKjoh7PnlKjmiLflkI3lj4rnrb7lkI3jgILlnKjlhbbku5bor63oqIDkuK3kuI3lvZPnmoTnlKjmiLflkI3miJbpgJrov4fplJnmi7zjgIHmm7/ku6PjgIHmmpfnpLrjgIHmi4blrZfmiJbku7vkvZXpl7TmjqXmlrnms5Xovr7miJDnmoTpnZ7lpqXlvZPnlKjmiLflkI3lkIzmoLfop4bkuLrov53op4TjgIInLFxuXHRcdFx0XHRcdFx0J+acieeNuOaqlOahiOmkqOS4jeWFgeioseS9v+eUqOW4tuacieiqpOWwjuaAp+OAgeWuo+WCs+aAp+OAgeS+rui+seaAp+aIluegtOWjnuaAp+eahOS9v+eUqOiAheWQjeeoseOAguatpOWklu+8jOS9v+eUqOWfn+WQjeWPiumbu+WtkOS/oeeuseS9jeWdgOeahOS9v+eUqOiAheWQjeeoseS6puiiq+emgeatouOAgumAmeS6m+a6luWJh+S/seaHieaHieeUqOiHs+S9v+eUqOiAheWQjeeoseWPiuewveWQjeOAguWcqOWFtuS7luiqnuiogOS4reS4jeeVtueahOS9v+eUqOiAheWQjeeoseaIlumAmumBjumMr+aLvOOAgeabv+S7o+OAgeaal+ekuuOAgeaLhuWtl+aIluS7u+S9lemWk+aOpeaWueazlemBlOaIkOeahOmdnuWmpeeVtuS9v+eUqOiAheWQjeeoseWQjOaoo+imlueCuumBleimj+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor6/lr7zmgKfnlKjmiLflkI0nLCAn6Kqk5bCO5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+ivr+WvvOaApycsICfoqqTlsI7mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor6/lr7zmgKfnlKjmiLflkI3pmpDlkKvnnYDkuI7otKHnjK7ogIXnm7jlhbPmiJbor6/lr7zku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lrp7op4LngrnjgIHmmpfnpLrotKblj7fmi6XmnInnibnlrprmnYPpmZDmiJbmmpfnpLror6XotKblj7flubbpnZ7nlLHkuIDkurrmi6XmnInogIzmmK/nlLHkuIDkuKrnu4TnvqTjgIHkuIDkuKrpobnnm67miJbkuIDkuKrpm4bkvZPov5DkvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoqqTlsI7mgKfkvb/nlKjogIXlkI3nqLHpmrHlkKvokZfoiIfosqLnjbvogIXnm7jpl5zmiJboqqTlsI7ku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lr6bop4Dpu57jgIHmmpfnpLros6zomZ/mk4HmnInnibnlrprmrIrpmZDmiJbmmpfnpLroqbLos6zomZ/kuKbpnZ7nlLHkuIDkurrmk4HmnInogIzmmK/nlLHkuIDlgIvnvqTntYTjgIHkuIDlgIvoqIjnlavmiJbkuIDlgIvpm4bpq5TpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrqPkvKDmgKfnlKjmiLflkI0nLCAn5a6j5YKz5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+Wuo+S8oOaApycsICflrqPlgrPmgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflrqPkvKDmgKfnlKjmiLflkI3kvJrkuo7mnInlhb3moaPmoYjppobkuIrotbfmjqjplIDkuIDkuKrnu4TnvqTmiJbkuIDpl7Tlhazlj7jnmoTkvZznlKjjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmnIPmlrzmnInnjbjmqpTmoYjppKjkuIrotbfmjqjpirfkuIDlgIvnvqTntYTmiJbkuIDplpPlhazlj7jnmoTkvZznlKjjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmpfnpLrlubbpnZ7nlLHkuIDkurrmi6XmnIknLCAn5pqX56S65Lim6Z2e55Sx5LiA5Lq65pOB5pyJJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnc2hhcmVkJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/kuKrotKblj7flj6rlj6/ku6Xku6PooajkuKrkurrvvIjlrrnorrjkuIDkupvkvovlpJbmg4XlhrXvvInvvIzmiYDmnInkuI7ku5bkurrliIbkuqvotKblj7fnmoTooYzkuLrvvIjljIXmi6zliIbkuqvotKblj7flr4bnoIHvvInlnYfooqvnpoHmraLjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/lgIvos6zomZ/lj6rlj6/ku6Xku6PooajlgIvkurrvvIjlrrnoqLHkuIDkupvkvovlpJbmg4Xms4HvvInvvIzmiYDmnInoiIfku5bkurrliIbkuqvos6zomZ/nmoTooYzngrrvvIjljIXmi6zliIbkuqvos6zomZ/lr4bnorzvvInlnYfooqvnpoHmraLjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvq7ovrHmgKfnlKjmiLflkI0nLCAn5L6u6L6x5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAn5L6u6L6x5oCnJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfnlKjmiLflkI3ku6TljY/osIPnvJbovpHlj5jlvpflm7Dpmr7vvIznlJroh7Pml6Dlj6/og73jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHku6TljZToqr/nt6jovK/ororlvpflm7Dpm6PvvIznlJroh7PnhKHlj6/og73jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnoLTlnY/mgKfnlKjmiLflkI0nLCAn56C05aOe5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+egtOWdj+aApycsICfnoLTlo57mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlnY/mgKfnlKjmiLflkI3ljIXmi6zkurrouqvmlLvlh7vjgIHkvKrlhpLku5bkurrmiJblhbbku5bkuIDliIfmnInnnYDmuIXmmbDlj6/op4HnmoTnoLTlnY/mnInlhb3moaPmoYjppobmhI/lm77nmoTnlKjmiLflkI3jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlo57mgKfkvb/nlKjogIXlkI3nqLHljIXmi6zkurrouqvmlLvmk4rjgIHlgb3lhpLku5bkurrmiJblhbbku5bkuIDliIfmnInokZfmuIXmmbDlj6/opovnmoTnoLTlo57mnInnjbjmqpTmoYjppKjmhI/lnJbnmoTkvb/nlKjogIXlkI3nqLHjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5LiK6ZqQ6JeP55So5oi35ZCN77yI6ZyA55uR552j55qE55So5oi35ZCN6K+35Yu/5LqO56uZ5YaF5oql5ZGK77yM5Yu+6YCJ5q2k6aG55bm25LiN5p6E5oiQ6IO95Zyo56uZ5YaF5oql5ZGK55qE55CG55Sx77yJJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK6Zqx6JeP5L2/55So6ICF5ZCN56ix77yI6ZyA55uj552j55qE5L2/55So6ICF5ZCN56ix6KuL5Yu/5pa856uZ5YWn5aCx5ZGK77yM5Yu+6YG45q2k6aCF5Lim5LiN5qeL5oiQ6IO95Zyo56uZ5YWn5aCx5ZGK55qE55CG55Sx77yJJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeeUqOaIt+WQjeS4jeW9k+ivt+WLvumAieatpOmhue+8jOazqOaEj++8muivt+iAg+iZkeengeS4i+iBlOezu+euoeeQhuWRmOWkhOeQhuOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeS9v+eUqOiAheWQjeeoseS4jeeVtuiri+WLvumBuOatpOmghe+8jOazqOaEj++8muiri+iAg+aFruengeS4i+iBr+e1oeeuoeeQhuWToeiZleeQhuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2hpZGVuYW1lJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdoaWRlbmFtZScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0c3R5bGU6ICdmb250LXdlaWdodDogYm9sZDsnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor4TorrrvvJonLCAn6KmV6KuW77yaJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3NwaSc6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5HotbflgoDlhKHosIPmn6UnLCAn55m86LW35YKA5YSh6Kq/5p+lJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzb2NrbWFzdGVyJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+S4u+i0puWPt+eahOeUqOaIt+WQje+8iOS4jeWQq1VzZXI65YmN57yA77yJJywgJ+S4u+izrOiZn+eahOS9v+eUqOiAheWQjeeose+8iOS4jeWQq1VzZXI65a2X6aaW77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6IHJvb3RfLnVpZC52YWx1ZSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5hcnYuY2FsbGJhY2suc29ja21hc3Rlcl9jaGFuZ2VkLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXNwaW5vdGljZWJveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvY2twdXBwZXQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YKA5YShJyxcblx0XHRcdFx0XHRzdWJsYWJlbDogJ+WCgOWEoe+8micsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflgoDlhKHnmoTnlKjmiLflkI3vvIjkuI3lkKtVc2VyOuWJjee8gO+8iScsICflgoDlhKHnmoTkvb/nlKjogIXlkI3nqLHvvIjkuI3lkKtVc2VyOuWtl+mmlu+8iScpLFxuXHRcdFx0XHRcdG1pbjogMixcblx0XHRcdFx0XHRtYXg6IDksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivgeaNru+8micsICforYnmk5rvvJonKSxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L6T5YWl6IO95aSf55So5p2l5L2T546w6L+Z5Lqb55So5oi35Y+v6IO95rul55So5aSa6YeN6LSm5Y+355qE6K+B5o2u77yM6L+Z6YCa5bi45YyF5ous6Iy26aaG5Y+R6KiA44CB6aG16Z2i5Y6G5Y+y5oiW5YW25LuW5pyJ5YWz55qE5L+h5oGv44CC6K+36YG/5YWN5Zyo5q2k5aSE5o+Q5L6b6Z2e5LiO5YKA5YSh5oiW5rul55So5aSa6YeN6LSm5Y+355u45YWz55qE5YW25LuW6K6o6K6644CCJyxcblx0XHRcdFx0XHRcdCfovLjlhaXog73lpKDnlKjkvobpq5Tnj77pgJnkupvkvb/nlKjogIXlj6/og73mv6vnlKjlpJrph43os6zomZ/nmoTorYnmk5rvvIzpgJnpgJrluLjljIXmi6zojLbppKjnmbzoqIDjgIHpoIHpnaLmrbflj7LmiJblhbbku5bmnInpl5znmoTos4foqIrjgILoq4vpgb/lhY3lnKjmraTomZXmj5DkvpvpnZ7oiIflgoDlhKHmiJbmv6vnlKjlpJrph43os6zomZ/nm7jpl5znmoTlhbbku5boqI7oq5bjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLnlKjmiLfmn6XmoLgnLCAn6KuL5rGC5L2/55So6ICF5p+l5qC4JyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdjaGVja3VzZXInLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOaIt+afpeaguOaYr+S4gOenjeeUqOS6juiOt+WPluWCgOWEoeaMh+aOp+ebuOWFs+aKgOacr+ivgeaNrueahOW3peWFt++8jOiLpeayoeacieato+W9k+eQhueUseWImeS4jeS8muS9v+eUqO+8jOaCqOW/hemhu+WcqOivgeaNruWtl+auteWFheWIhuino+mHiuS4uuS7gOS5iOmcgOimgeS9v+eUqOivpeW3peWFt+OAgueUqOaIt+afpeaguOS4jeS8mueUqOS6juWFrOW8gOi/nuaOpeeUqOaIt+i0puWPt+S9v+eUqOeahElQ5Zyw5Z2A44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So6ICF5p+l5qC45piv5LiA56iu55So5pa8542y5Y+W5YKA5YSh5oyH5o6n55u46Zec5oqA6KGT6K2J5pOa55qE5bel5YW377yM6Iul5rKS5pyJ5q2j55W255CG55Sx5YmH5LiN5pyD5L2/55So77yM5oKo5b+F6aCI5Zyo6K2J5pOa5qyE5L2N5YWF5YiG6Kej6YeL54K65LuA6bq86ZyA6KaB5L2/55So6Kmy5bel5YW344CC5L2/55So6ICF5p+l5qC45LiN5pyD55So5pa85YWs6ZaL6YCj5o6l5L2/55So6ICF6LOs6Jmf5L2/55So55qESVDkvY3lnYDjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRsYWJlbDogW1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fkvb/nlKjluLjor4blhrPlrprmmK/lkKbku6UnLCAn6KuL5L2/55So5bi46K2Y5rG65a6a5piv5ZCm5LulJyksXG5cdFx0XHRcdFx0XHQkKCc8Y29kZT4nKS5hZGRDbGFzcygndHctYXJ2LXNvY2ttYXN0ZXInKS5jc3MoJ21hcmdpbicsICcycHg7JylbMF0sXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfpgJrnn6XnlKjmiLfjgILov5nkuI3mmK/lv4XpobvnmoTvvIzlr7nkuo7mtonlj4rmlrDnlKjmiLfnmoTmiqXlkYrogIzoqIDvvIzpgJrnn6Xku5bku6zog73orqnmiqXlkYrmmL7lvpfmm7TlhazlubPvvIzkvYbmmK/orrjlpJrmg4XlhrXkuIvvvIjlpoLplb/mnJ/noLTlnY/ogIXvvInpgJrnn6Xmm7Tlj6/og73pgILlvpflhbblj43jgIInLFxuXHRcdFx0XHRcdFx0XHQn6YCa55+l5L2/55So6ICF44CC6YCZ5LiN5piv5b+F6aCI55qE77yM5bCN5pa85raJ5Y+K5paw5L2/55So6ICF55qE5aCx5ZGK6ICM6KiA77yM6YCa55+l5LuW5YCR6IO96K6T5aCx5ZGK6aGv5b6X5pu05YWs5bmz77yM5L2G5piv6Kix5aSa5oOF5rOB5LiL77yI5aaC6ZW35pyf56C05aOe6ICF77yJ6YCa55+l5pu05Y+v6IO96YGp5b6X5YW25Y+N44CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhID0gd29ya19hcmVhLnJlbmRlcigpO1xuXHRcdFx0XHQkKCdpbnB1dDp0ZXh0W25hbWU9c29ja3B1cHBldF0nLCB3b3JrX2FyZWEpLmZpcnN0KCkudmFsKHJvb3RfLnVpZC52YWx1ZSk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRyb290Xy5zcGlub3RpY2VwcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KFxuXHRcdFx0XHRcdCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1zcGlub3RpY2Vib3gnKS5sYXN0KClbMF1cblx0XHRcdFx0KTtcblx0XHRcdFx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIocm9vdF8udWlkLnZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK55So5oi356C05Z2PJywgJ+WgseWRiuS9v+eUqOiAheegtOWjnicpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmj5DmiqXlgoDlhKHlupTkvJjlhYjlj5HpgIHoh7PlgoDlhKHosIPmn6XvvIzpmaTpnZ7nm7jlhbPnmoTotKblj7fmnInpq5jpopHnjofjgIHmtonlj4rlpJrkuKrpobXpnaLnrYnntKfmgKXkuKXph43nmoTnoLTlnY/ooYzkuLrjgIInLFxuXHRcdFx0XHRcdFx0J+aPkOWgseWCgOWEoeaHieWEquWFiOeZvOmAgeiHs+WCgOWEoeiqv+afpe+8jOmZpOmdnuebuOmXnOeahOizrOiZn+aciemrmOmgu+eOh+OAgea2ieWPiuWkmuWAi+mggemdouetiee3iuaApeWatOmHjeeahOegtOWjnuihjOeCuuOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55u45YWz6aG16Z2i77yaJywgJ+ebuOmXnOmggemdou+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5aaC5LiN5biM5pyb6K6p5oql5ZGK6ZO+5o6l5Yiw6aG16Z2i77yM6K+355WZ56m6JywgJ+WmguS4jeW4jOacm+iuk+WgseWRiumAo+e1kOWIsOmggemdou+8jOiri+eVmeepuicpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCAnJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB7dmFsdWV9ID0gZXZlbnQudGFyZ2V0O1xuXHRcdFx0XHRcdFx0Y29uc3Qgcm9vdCA9IGV2ZW50LnRhcmdldC5mb3JtO1xuXHRcdFx0XHRcdFx0aWYgKHZhbHVlID09PSAnJykge1xuXHRcdFx0XHRcdFx0XHRyb290LmJhZGlkLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0cm9vdC5nb29kaWQuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cm9vdC5iYWRpZC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyb290Lmdvb2RpZC5kaXNhYmxlZCA9IHJvb3QuYmFkaWQudmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdiYWRpZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+X5Yiw56C05Z2P55qE5L+u6K6i54mI5pys77yaJywgJ+WPl+WIsOegtOWjnueahOS/ruiogueJiOacrO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55WZ56m65Lul55Wl6L+H5beu5byCJywgJ+eVmeepuuS7peeVpemBjuW3rueVsCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpIHx8ICcnLFxuXHRcdFx0XHRcdGRpc2FibGVkOiAhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qge3ZhbHVlfSA9IGV2ZW50LnRhcmdldDtcblx0XHRcdFx0XHRcdGNvbnN0IHJvb3QgPSBldmVudC50YXJnZXQuZm9ybTtcblx0XHRcdFx0XHRcdHJvb3QuZ29vZGlkLmRpc2FibGVkID0gdmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnb29kaWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdj+WJjeeahOS/ruiuoueJiOacrO+8micsICfnoLTlo57liY3nmoTkv67oqILniYjmnKzvvJonKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+eVmeepuuS7peeVpei/h+W3ruW8gueahOi+g+aXqeeJiOacrCcsICfnlZnnqbrku6XnlaXpgY7lt67nlbDnmoTovIPml6nniYjmnKwnKSxcblx0XHRcdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlZ29vZHJldmlkJykgfHwgJycsXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6ICFtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflt7Llj5Hlh7rmnIDlkI7orablkYonLCAn5bey55m85Ye65pyA5b6M6K2m5ZGKJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnZmluYWwnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6L+H5pyf5ZCO6ZqP5Y2z56C05Z2PJywgJ+WwgemOlumBjuacn+W+jOmaqOWNs+egtOWjnicpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3Bvc3RibG9jaycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoTnuq/noLTlnY/nlKjmiLcnLCAn6aGv6ICM5piT6KaL55qE57SU56C05aOe5L2/55So6ICFJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndmFuZGFsb25seScsXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHJvb3RfLnVpZC52YWx1ZSksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoRzcGFtYm905oiW5aSx56qD6LSm5Y+3JywgJ+mhr+iAjOaYk+imi+eahHNwYW1ib3TmiJblpLHnq4ros6zomZ8nKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdzcGFtYm90Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heeUqOadpeaVo+WPkeW5v+WRiuWuo+S8oOeahOeUqOaItycsICflg4XnlKjkvobmlaPnmbzlu6PlkYrlrqPlgrPnmoTkvb/nlKjogIUnKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdwcm9tb29ubHknLFxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZDogbXcudXRpbC5pc0lQQWRkcmVzcyhyb290Xy51aWQudmFsdWUpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFtdy51dGlsLmlzSVBBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuWPiue8lui+keaRmOimgemakOiXj+eUqOaIt+WQjScsICflnKjpoIHpnaLkuIrlj4rnt6jovK/mkZjopoHpmrHol4/kvb/nlKjogIXlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul55So5oi35ZCN5LiN5b2T6K+35Yu+6YCJ5q2k6aG577yM5rOo5oSP77ya6K+36ICD6JmR56eB5LiL6IGU57O7566h55CG5ZGY5aSE55CG44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjogIXlkI3nqLHkuI3nlbboq4vli77pgbjmraTpoIXvvIzms6jmhI/vvJroq4vogIPmha7np4HkuIvoga/ntaHnrqHnkIblk6HomZXnkIbjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyb290Xy5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1wcmV2aWV3Ym94JykubGFzdCgpWzBdKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sucHJldmlldyA9IChmb3JtKSA9PiB7XG5cdFx0Y29uc3QgcmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRsZXQgdGl0bGU7XG5cdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0Y2FzZSAndmlwJzpcblx0XHRcdFx0dGl0bGUgPSAnTElCX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0dGl0bGUgPSAnTElCX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd1c2VybmFtZSc6XG5cdFx0XHRcdHRpdGxlID0gJ0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3BpJzpcblx0XHRcdFx0dGl0bGUgPSAnTElCX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aXRsZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKGBfX05PVE9DX18ke3JlYXNvblswXX1gLCB0aXRsZSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0ID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0bGV0IHJlYXNvbiA9ICcnO1xuXHRcdGxldCBjb21tZW50ID0gJyc7XG5cdFx0Y29uc3Qge3VpZH0gPSBpbnB1dDtcblx0XHRjb25zdCBjaGVja1RpdGxlID0gKHRpdGxlLCByZXZpZCkgPT4ge1xuXHRcdFx0aWYgKC9odHRwcz86XFwvXFwvLy50ZXN0KHRpdGxlKSkge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfpobXpnaLlkI3np7DkuI3og73kvb/nlKjnvZHlnYDjgIInLCAn6aCB6Z2i5ZCN56ix5LiN6IO95L2/55So57ay5Z2A44CCJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRsZXQgcGFnZV87XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwYWdlXyA9IG5ldyBtdy5UaXRsZSh0aXRsZSk7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0bXcubm90aWZ5KFxuXHRcdFx0XHRcdGAke1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJwnLCAn44CMJykgK1xuXHRcdFx0XHRcdFx0dGl0bGUgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn4oCd5LiN5piv5LiA5Liq5pyJ5pWI55qE6aG16Z2i5ZCN56ew77yM5aaC6KaB5L2/55So5beu5byC6ZO+5o6l6K+35pS+5Zyo4oCc6K+E6K664oCdJyxcblx0XHRcdFx0XHRcdFx0J+OAjeS4jeaYr+S4gOWAi+acieaViOeahOmggemdouWQjeeose+8jOWmguimgeS9v+eUqOW3rueVsOmAo+e1kOiri+aUvuWcqOOAjOipleirluOAjSdcblx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0KHJldmlkID8gd2luZG93LndnVUxTKCfvvIzmiJbmraPnoa7ovpPlhaXigJzkv67orqLniYjmnKzigJ0nLCAn77yM5oiW5q2j56K66Ly45YWl44CM5L+u6KiC54mI5pys44CNJykgOiAnJylcblx0XHRcdFx0XHR944CCYCxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmIChwYWdlXy5uYW1lc3BhY2UgPT09IC0xKSB7XG5cdFx0XHRcdG13Lm5vdGlmeShcblx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRcdHRpdGxlICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+KAneWxnuS6jueJueauiumhtemdou+8jOWmguimgeS9v+eUqOW3ruW8gumTvuaOpeivt+aUvuWcqOKAnOivhOiuuuKAnScsXG5cdFx0XHRcdFx0XHRcdCfjgI3lsazmlrznibnmrorpoIHpnaLvvIzlpoLopoHkvb/nlKjlt67nlbDpgKPntZDoq4vmlL7lnKjjgIzoqZXoq5bjgI0nXG5cdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdChyZXZpZCA/IHdpbmRvdy53Z1VMUygn77yM5oiW5q2j56Gu6L6T5YWl4oCc5L+u6K6i54mI5pys4oCdJywgJ++8jOaIluato+eiuui8uOWFpeOAjOS/ruiogueJiOacrOOAjScpIDogJycpXG5cdFx0XHRcdFx0feOAgmAsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcGFnZV87XG5cdFx0fTtcblx0XHRsZXQgcGFnZTtcblx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHQvLyBSZXBvcnQgM1JSXG5cdFx0XHRjYXNlICdld2lwJzoge1xuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uID09PSAnJykge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumueQhueUsScsICfmgqjlv4XpoIjmjIflrprnkIbnlLEnKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlYXNvbiArPSBgPT0g57yW6L6R5oiY5Li+5oql77yIJHt1aWR977yJID09XFxuYDtcblx0XHRcdFx0cmVhc29uICs9IGAqICcnJ3t7dmFuZGFsfCR7L1s9XS8udGVzdCh1aWQpID8gJzE9JyA6ICcnfSR7dWlkfX19JycnXFxuYDtcblx0XHRcdFx0Y29uc3QgcGFnZXMgPSAkKCdpbnB1dDp0ZXh0W25hbWU9cGFnZV0nLCBmb3JtKS5tYXAoKG8sIGUpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlKS52YWwoKSB8fCBudWxsO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9yIChjb25zdCBwYWdlXyBvZiBwYWdlcykge1xuXHRcdFx0XHRcdHBhZ2UgPSBjaGVja1RpdGxlKHBhZ2VfLCBmYWxzZSk7XG5cdFx0XHRcdFx0aWYgKCFwYWdlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbW1lbnQgKz0gYCoge3twYWdlbGlua3N8JHtcblx0XHRcdFx0XHRcdHBhZ2UuZ2V0UHJlZml4ZWRUZXh0KCkuaW5jbHVkZXMoJz0nKSA/ICcxPScgOiAnJ1xuXHRcdFx0XHRcdH0ke3BhZ2UuZ2V0UHJlZml4ZWRUZXh0KCl9fX1cXG5gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlucHV0LnJlYXNvbiA9IGlucHV0LnJlYXNvbi5yZXBsYWNlKC9cXG5cXG4rL2csICdcXG4nKTtcblx0XHRcdFx0aW5wdXQucmVhc29uID0gaW5wdXQucmVhc29uLnJlcGxhY2UoL1xccj9cXG4vZywgJ1xcbio6Jyk7IC8vIGluZGVudCBuZXdsaW5lc1xuXHRcdFx0XHRjb21tZW50ICs9IGAqICR7aW5wdXQucmVhc29ufVxcbmA7XG5cdFx0XHRcdGNvbW1lbnQgPSBjb21tZW50LnRyaW0oKTtcblx0XHRcdFx0Y29tbWVudCA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihjb21tZW50KTtcblx0XHRcdFx0cmVhc29uICs9IGAke2NvbW1lbnR9XFxuKiDmj5DmiqXkurrvvJp+fmAuY29uY2F0KCd+flxcbiog5aSE55CG77yaJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gUmVwb3J0IGluYXBwcm9wcmlhdGUgdXNlcm5hbWVcblx0XHRcdGNhc2UgJ3VzZXJuYW1lJzoge1xuXHRcdFx0XHRsZXQgdHlwZXMgPSBpbnB1dC5hcnZ0eXBlLm1hcChNb3JlYml0cy5zdHJpbmcudG9Mb3dlckNhc2VGaXJzdENoYXIpO1xuXHRcdFx0XHRjb25zdCBoYXNTaGFyZWQgPSB0eXBlcy5pbmNsdWRlcygnc2hhcmVkJyk7XG5cdFx0XHRcdGlmIChoYXNTaGFyZWQpIHtcblx0XHRcdFx0XHR0eXBlcy5zcGxpY2UodHlwZXMuaW5kZXhPZignc2hhcmVkJyksIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0eXBlcy5pbmNsdWRlcygn5L6u6L6x5oCnJykgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4pemHjeeahOS+rui+seaAp+eUqOaIt+WQjeWSjOmSiOWvueeJueWumuS4quS6uueahOS+rui+seaAp+eUqOaIt+WQjeS4jeW6lOWcqOWFrOW8gOmhtemdouaKpeWRiu+8jOiAjOaYr+W6lOW9k+engeS4i+iBlOezu+ebkeedo+WRmOWkhOeQhuOAguaYr+WQpue7p+e7re+8nycsXG5cdFx0XHRcdFx0XHRcdCforablkYrvvJrlmrTph43nmoTkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHlkozph53lsI3nibnlrprlgIvkurrnmoTkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHkuI3mh4nlnKjlhazplovpoIHpnaLloLHlkYrvvIzogIzmmK/mh4nnlbbnp4HkuIvoga/ntaHnm6PnnaPlk6HomZXnkIbjgILmmK/lkKbnubznuozvvJ8nXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVzLmxlbmd0aCA8PSAyKSB7XG5cdFx0XHRcdFx0dHlwZXMgPSB0eXBlcy5qb2luKCflkownKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0eXBlcyA9IFt0eXBlcy5zbGljZSgwLCAtMSkuam9pbign44CBJyksIHR5cGVzLnNsaWNlKC0xKV0uam9pbign5ZKMJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSBgKnt7dXNlci11YWF8MT0ke3VpZH1gO1xuXHRcdFx0XHRpZiAoaW5wdXQuaGlkZW5hbWUpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICd8aGlkZW5hbWU9MSc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSAnfX0gJm5kYXNoOyAnO1xuXHRcdFx0XHRpZiAodHlwZXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSB0eXBlcyArIHdpbmRvdy53Z1VMUygn55So5oi35ZCNJywgJ+S9v+eUqOiAheWQjeeosScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlcy5sZW5ndGggJiYgaGFzU2hhcmVkKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAn77yMJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaGFzU2hhcmVkKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSB3aW5kb3cud2dVTFMoJ+aal+ekuuivpei0puWPt+W5tumdnueUseS4gOS6uuaLpeaciScsICfmmpfnpLroqbLos6zomZ/kuKbpnZ7nlLHkuIDkurrmk4HmnIknKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZXMubGVuZ3RoIHx8IGhhc1NoYXJlZCkge1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gJ+OAgic7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGlucHV0LnJlYXNvbikge1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gTW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGlucHV0LnJlYXNvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihjb21tZW50KTtcblx0XHRcdFx0Y29tbWVudCArPSAnLS1+ficuY29uY2F0KCd+ficpO1xuXHRcdFx0XHRjb21tZW50ID0gY29tbWVudC5yZXBsYWNlKC9cXHI/XFxuL2csICdcXG4qOicpOyAvLyBpbmRlbnQgbmV3bGluZXNcblx0XHRcdFx0cmVhc29uID0gYD09IOS4jeW9k+eUqOaIt+WQjeaKpeWRiu+8iCR7XG5cdFx0XHRcdFx0aW5wdXQuaGlkZW5hbWUgPyB3aW5kb3cud2dVTFMoJ+W3sumakOiXj+eUqOaIt+WQjScsICflt7LpmrHol4/kvb/nlKjogIXlkI3nqLEnKSA6IHVpZFxuXHRcdFx0XHR977yJID09XFxuYDtcblx0XHRcdFx0cmVhc29uICs9IGNvbW1lbnQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gTElCOlNQSVxuXHRcdFx0Y2FzZSAnc3BpJzoge1xuXHRcdFx0XHRpZiAoIWlucHV0LnJlYXNvbikge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+i+k+WFpeivgeaNruOAgicsICfoq4vovLjlhaXorYnmk5rjgIInKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHNvY2twdXBwZXRzID0gTW9yZWJpdHMuYXJyYXkudW5pcShcblx0XHRcdFx0XHRbLi4uJCgnaW5wdXQ6dGV4dFtuYW1lPXNvY2twdXBwZXRdJywgZm9ybSldLm1hcCgobykgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuICQobykudmFsKCkudHJpbSgpIHx8IG51bGw7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKCFzb2NrcHVwcGV0c1swXSkge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOayoeacieaMh+WumuS7u+S9leWCgOWEoeOAgicsICfmgqjmspLmnInmjIflrprku7vkvZXlgoDlhKHjgIInKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgKz0gJ3t7Jy5jb25jYXQoJ3N1YnN0OicsICdTUEkgcmVwb3J0fCcpO1xuXHRcdFx0XHRpZiAoIXNvY2twdXBwZXRzLmluY2x1ZGVzKGlucHV0LnNvY2ttYXN0ZXIpKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAnMT17eycuY29uY2F0KFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHQnI2lmZXhpc3Q6e3snLFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHRgRlVMTFBBR0VOQU1FfX18fCR7aW5wdXQuc29ja21hc3Rlcn19fXxgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ICs9IGAke3NvY2twdXBwZXRzXG5cdFx0XHRcdFx0Lm1hcCgoc29jaywgaW5kZXgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBgJHtpbmRleCArIDJ9PSR7c29ja31gO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oJ3wnKX1cXG58ZXZpZGVuY2U9JHtNb3JlYml0cy5zdHJpbmcuYXBwZW5kUHVuY3R1YXRpb24oaW5wdXQucmVhc29uKX1cXG5gO1xuXHRcdFx0XHRpZiAoaW5wdXQuY2hlY2t1c2VyKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAnfGNoZWNrdXNlcj15ZXMnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgKz0gJ319Jztcblx0XHRcdFx0cmVhc29uID0gY29tbWVudDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlcG9ydCB1c2VyIGZvciB2YW5kYWxpc21cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGlmICghaW5wdXQuYXJ2dHlwZS5sZW5ndGggJiYgaW5wdXQucmVhc29uID09PSAnJykge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumueQhueUsScsICfmgqjlv4XpoIjmjIflrprnkIbnlLEnKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlYXNvbiArPSBgPT0gJHtpbnB1dC5oaWRlbmFtZSA/IHdpbmRvdy53Z1VMUygn5bey6ZqQ6JeP55So5oi35ZCNJywgJ+W3sumaseiXj+S9v+eUqOiAheWQjeeosScpIDogdWlkfSA9PVxcbmA7XG5cdFx0XHRcdHJlYXNvbiArPSBgKiAnJyd7e3ZhbmRhbHwkey9bPV0vLnRlc3QodWlkKSA/ICcxPScgOiAnJ30ke3VpZH1gO1xuXHRcdFx0XHRpZiAoaW5wdXQuaGlkZW5hbWUpIHtcblx0XHRcdFx0XHRyZWFzb24gKz0gJ3xoaWRlbmFtZT0xJztcblx0XHRcdFx0fVxuXHRcdFx0XHRyZWFzb24gKz0gXCJ9fScnJ1xcblwiO1xuXHRcdFx0XHRjb25zdCB0eXBlcyA9IGlucHV0LmFydnR5cGVcblx0XHRcdFx0XHQubWFwKCh2KSA9PiB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHYpIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSAnZmluYWwnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5bey5Y+R5Ye65pyA5ZCO6K2m5ZGKJztcblx0XHRcdFx0XHRcdFx0Y2FzZSAncG9zdGJsb2NrJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+Wwgeemgei/h+acn+WQjumaj+WNs+egtOWdjyc7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3NwYW1ib3QnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5pi+6ICM5piT6KeB55qEc3BhbWJvdOaIluWkseeqg+i0puWPtyc7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3ZhbmRhbG9ubHknOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5pi+6ICM5piT6KeB55qE57qv56C05Z2P55So5oi3Jztcblx0XHRcdFx0XHRcdFx0Y2FzZSAncHJvbW9vbmx5Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+S7heeUqOadpeaVo+WPkeW5v+WRiuWuo+S8oOeahOeUqOaItyc7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICfmnKrnn6XnkIbnlLEnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oJ++8jCcpO1xuXHRcdFx0XHRpZiAoaW5wdXQucGFnZSAhPT0gJycpIHtcblx0XHRcdFx0XHRwYWdlID0gY2hlY2tUaXRsZShpbnB1dC5wYWdlLCB0cnVlKTtcblx0XHRcdFx0XHRpZiAoIXBhZ2UpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29tbWVudCArPSBgKiB7e3BhZ2VsaW5rc3wke1xuXHRcdFx0XHRcdFx0cGFnZS5nZXRQcmVmaXhlZFRleHQoKS5pbmNsdWRlcygnPScpID8gJzE9JyA6ICcnXG5cdFx0XHRcdFx0fSR7cGFnZS5nZXRQcmVmaXhlZFRleHQoKX19fWA7XG5cdFx0XHRcdFx0aWYgKGlucHV0LmJhZGlkKSB7XG5cdFx0XHRcdFx0XHRjb21tZW50ICs9IGDvvIh7e2RpZmZ8JHtwYWdlLmdldFByZWZpeGVkVGV4dCgpfXwke2lucHV0LmJhZGlkfXwke2lucHV0Lmdvb2RpZCA/PyAnJ318ZGlmZn1977yJYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29tbWVudCArPSAnXFxuJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZXMpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9IGAqICR7dHlwZXN9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdGlucHV0LnJlYXNvbiA9IGlucHV0LnJlYXNvbi5yZXBsYWNlKC9cXG5cXG4rL2csICdcXG4nKTtcblx0XHRcdFx0XHRpbnB1dC5yZWFzb24gPSBpbnB1dC5yZWFzb24ucmVwbGFjZSgvXFxyP1xcbi9nLCAnXFxuKjonKTsgLy8gaW5kZW50IG5ld2xpbmVzXG5cdFx0XHRcdFx0Y29tbWVudCArPSAodHlwZXMgPyAn44CCJyA6ICcqICcpICsgaW5wdXQucmVhc29uO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgPSBjb21tZW50LnRyaW0oKTtcblx0XHRcdFx0Y29tbWVudCA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihjb21tZW50KTtcblx0XHRcdFx0cmVhc29uICs9IGAke2NvbW1lbnR9XFxuKiDlj5HnjrDkurrvvJp+fmAuY29uY2F0KCd+flxcbiog5aSE55CG77yaJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gW3JlYXNvbiwgY29tbWVudF07XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBmb3JtID0gZS50YXJnZXQ7XG5cdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdGNvbnN0IHt1aWR9ID0gaW5wdXQ7XG5cdFx0bGV0IHJlYXNvbjtcblx0XHRsZXQgc3VtbWFyeTtcblx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHQvLyBSZXBvcnQgM1JSXG5cdFx0XHRjYXNlICdld2lwJzoge1xuXHRcdFx0XHRyZWFzb24gPSBUd2lua2xlLmFydi5jYWxsYmFjay5nZXRSZXBvcnRXaWtpdGV4dChmb3JtKTtcblx0XHRcdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnkgPSBgJHt3aW5kb3cud2dVTFMoJ+aKpeWRiicsICfloLHlkYonKX1bW1NwZWNpYWw6Q29udHJpYnMvJHt1aWR9fCR7dWlkfV1dYDtcblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gJ0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBld2lwUGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0J0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvycsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflpITnkIZFV0lQ6K+35rGCJywgJ+iZleeQhkVXSVDoq4vmsYInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRld2lwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0ZXdpcFBhZ2UubG9hZCgoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdGV4dCA9IGV3aXBQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3QgJGV3aXBMaW5rID0gJzxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL0xJQjpFV0lQXCI+TElCOkVXSVA8L2E+Jztcblx0XHRcdFx0XHQvLyBjaGVjayBpZiB1c2VyIGhhcyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWRcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRgPT09XFxcXHMqXFxcXHtcXFxce1xcXFxzKig/OltWdl1hbmRhbClcXFxccypcXFxcfFxcXFxzKig/OjE9KT9cXFxccyoke01vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0dWlkXG5cdFx0XHRcdFx0XHRcdCl9XFxcXHMqXFxcXH1cXFxcfVxcXFxzKj09PWBcblx0XHRcdFx0XHRcdCkudGVzdCh0ZXh0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0ZXdpcFBhZ2Vcblx0XHRcdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdFx0XHQuZXJyb3Iod2luZG93LndnVUxTKCfmiqXlkYrlt7LlrZjlnKjvvIzlsIbkuI3kvJrliqDlhaXmlrDnmoQnLCAn5aCx5ZGK5bey5a2Y5Zyo77yM5bCH5LiN5pyD5Yqg5YWl5paw55qEJykpO1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnByaW50VXNlclRleHQoXG5cdFx0XHRcdFx0XHRcdHJlYXNvblsxXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovpPlhaXnmoTor4Torrrlt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIblhbbliqDlhaXliLAnLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovLjlhaXnmoToqZXoq5blt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIflhbbliqDlhaXliLAnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdCRld2lwTGluayArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflt7LlrZjlnKjnmoTlsI/oioLkuK3vvJonLCAn5bey5a2Y5Zyo55qE5bCP56+A5Lit77yaJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGV3aXBQYWdlLnNldFBhZ2VTZWN0aW9uKDApO1xuXHRcdFx0XHRcdGV3aXBQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5zdGF0dXMod2luZG93LndnVUxTKCfliqDlhaXmlrDmiqXlkYrigKYnLCAn5Yqg5YWl5paw5aCx5ZGK4oCmJykpO1xuXHRcdFx0XHRcdGV3aXBQYWdlLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkpO1xuXHRcdFx0XHRcdGV3aXBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRld2lwUGFnZS5zZXRBcHBlbmRUZXh0KGBcXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHRld2lwUGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gUmVwb3J0IGluYXBwcm9wcmlhdGUgdXNlcm5hbWVcblx0XHRcdGNhc2UgJ3VzZXJuYW1lJzoge1xuXHRcdFx0XHRyZWFzb24gPSBUd2lua2xlLmFydi5jYWxsYmFjay5nZXRSZXBvcnRXaWtpdGV4dChmb3JtKTtcblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gJ0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCB1YWFQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnTElCX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jyxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WkhOeQhlVBQeivt+axgicsICfomZXnkIZVQUHoq4vmsYInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1YWFQYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHR1YWFQYWdlLmxvYWQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRleHQgPSB1YWFQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdXNlciBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0YFxcXFx7XFxcXHtcXFxccyp1c2VyLXVhYVxcXFxzKlxcXFx8XFxcXHMqKDFcXFxccyo9XFxcXHMqKT8ke01vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0dWlkXG5cdFx0XHRcdFx0XHRcdCl9XFxcXHMqKFxcXFx8fFxcXFx9KWBcblx0XHRcdFx0XHRcdCkudGVzdCh0ZXh0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0dWFhUGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflt7LooqvliJflhaXjgIInLCAn5L2/55So6ICF5bey6KKr5YiX5YWl44CCJykpO1xuXHRcdFx0XHRcdFx0Y29uc3QgJHVhYUxpbmsgPSAnPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvTElCOlVBQVwiPkxJQjpVQUE8L2E+Jztcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0KFxuXHRcdFx0XHRcdFx0XHRyZWFzb25bMV0sXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo6L6T5YWl55qE6K+E6K665bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCG5YW25omL5bel5Yqg5YWlJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo6Ly45YWl55qE6KmV6KuW5bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCH5YW25omL5bel5Yqg5YWlJ1xuXHRcdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdFx0XHQkdWFhTGluayArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuIror6XnlKjmiLfnmoTmiqXlkYrkuK3vvJonLCAn5LiK6Kmy5L2/55So6ICF55qE5aCx5ZGK5Lit77yaJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHVhYVBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaKpeWRiuKApicsICfliqDlhaXmlrDloLHlkYrigKYnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+aWsOaPkOaKpScsICfmlrDmj5DloLEnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRBcHBlbmRUZXh0KGBcXG5cXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHR1YWFQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBMSUI6U1BJXG5cdFx0XHRjYXNlICdzcGknOiB7XG5cdFx0XHRcdHJlYXNvbiA9IFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0Y29uc3QgcmVwb3J0cGFnZSA9ICdMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHJlcG9ydHBhZ2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBzcGlQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShyZXBvcnRwYWdlLCB3aW5kb3cud2dVTFMoJ+aKk+WPluiuqOiuuumhtemdoicsICfmipPlj5boqI7oq5bpoIHpnaInKSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfliqDlhaXmlrDmj5DmiqUnLCAn5Yqg5YWl5paw5o+Q5aCxJykpO1xuXHRcdFx0XHRzcGlQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRBcHBlbmRUZXh0KHJlYXNvblswXSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignc3BpV2F0Y2hSZXBvcnQnKSk7XG5cdFx0XHRcdHNwaVBhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXBvcnQgdXNlciBmb3IgdmFuZGFsaXNtXG5cdFx0XHQvKiBjYXNlICdhaXYnOiAqL1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRyZWFzb24gPSBUd2lua2xlLmFydi5jYWxsYmFjay5nZXRSZXBvcnRXaWtpdGV4dChmb3JtKTtcblx0XHRcdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnkgPSBgJHt3aW5kb3cud2dVTFMoJ+aKpeWRiicsICfloLHlkYonKX1bW1NwZWNpYWw6Q29udHJpYnMvJHt1aWR9fCR7dWlkfV1dYDtcblx0XHRcdFx0aWYgKGlucHV0LmhpZGVuYW1lKSB7XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5LiA5ZCN55So5oi3JywgJ+WgseWRiuS4gOWQjeS9v+eUqOiAhScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9ICdMSUJfdGFsazrmiqXlkYrlvZPliY3noLTlnY8nO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+aKpeWRiuWujOaIkCcsICfloLHlkYrlrozmiJAnKTtcblx0XHRcdFx0Y29uc3QgYWl2UGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0J0xJQl90YWxrOuaKpeWRiuW9k+WJjeegtOWdjycsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflpITnkIZWSVDor7fmsYInLCAn6JmV55CGVklQ6KuL5rGCJylcblx0XHRcdFx0KTtcblx0XHRcdFx0YWl2UGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0YWl2UGFnZS5sb2FkKCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0ZXh0ID0gYWl2UGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRcdGNvbnN0ICRhaXZMaW5rID0gJzxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL0xJQjpWSVBcIj5MSUI6VklQPC9hPic7XG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdXNlciBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0YD09PVxcXFxzKlxcXFx7XFxcXHtcXFxccyooPzpbVnZdYW5kYWwpXFxcXHMqXFxcXHxcXFxccyooPzoxPSk/XFxcXHMqJHtNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRcdHVpZFxuXHRcdFx0XHRcdFx0XHQpfVxcXFxzKlxcXFx9XFxcXH1cXFxccyo9PT1gXG5cdFx0XHRcdFx0XHQpLnRlc3QodGV4dClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGFpdlBhZ2Vcblx0XHRcdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdFx0XHQuZXJyb3Iod2luZG93LndnVUxTKCfmiqXlkYrlt7LlrZjlnKjvvIzlsIbkuI3kvJrliqDlhaXmlrDnmoQnLCAn5aCx5ZGK5bey5a2Y5Zyo77yM5bCH5LiN5pyD5Yqg5YWl5paw55qEJykpO1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnByaW50VXNlclRleHQoXG5cdFx0XHRcdFx0XHRcdHJlYXNvblsxXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovpPlhaXnmoTor4Torrrlt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIblhbbliqDlhaXliLAnLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovLjlhaXnmoToqZXoq5blt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIflhbbliqDlhaXliLAnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdCRhaXZMaW5rICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suWtmOWcqOeahOWwj+iKguS4re+8micsICflt7LlrZjlnKjnmoTlsI/nr4DkuK3vvJonKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRQYWdlU2VjdGlvbigwKTtcblx0XHRcdFx0XHRhaXZQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5zdGF0dXMod2luZG93LndnVUxTKCfliqDlhaXmlrDmiqXlkYrigKYnLCAn5Yqg5YWl5paw5aCx5ZGK4oCmJykpO1xuXHRcdFx0XHRcdGFpdlBhZ2Uuc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRBcHBlbmRUZXh0KGBcXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHRhaXZQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmFydiwgJ2FydicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXdhcm4uanMgKi9cbihmdW5jdGlvbiB0d2lua2xld2FybigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZXdhcm4uanM6IFdhcm4gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIldhcm5cIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicyxcblx0ICogZXRjLiksIGFzIHdlbGwgYXMgdGhlIHJvbGxiYWNrIHN1Y2Nlc3MgcGFnZVxuXHQgKi9cblx0Y29uc3QgcmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRUd2lua2xlLndhcm4gPSAoKSA9PiB7XG5cdFx0aWYgKHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjayxcblx0XHRcdFx0J+itpuWRiicsXG5cdFx0XHRcdCd0dy13YXJuJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCforablkYrmiJbmj5DphpLnlKjmiLcnLCAn6K2m5ZGK5oiW5o+Q6YaS5L2/55So6ICFJylcblx0XHRcdCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignYXV0b01lbnVBZnRlclJvbGxiYWNrJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMyAmJlxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSAmJlxuXHRcdFx0XHQhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdub2F1dG93YXJuJylcblx0XHRcdCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2soKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gTW9kaWZ5IFVSTCBvZiB0YWxrIHBhZ2Ugb24gcm9sbGJhY2sgc3VjY2VzcyBwYWdlcywgbWFrZXMgdXNlIG9mIGFcblx0XHQvLyBjdXN0b20gbWVzc2FnZSBib3ggaW4gW1tNZWRpYVdpa2k6Um9sbGJhY2stc3VjY2Vzc11dXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICdyb2xsYmFjaycpIHtcblx0XHRcdGNvbnN0ICR2YW5kYWxUYWxrTGluayA9ICRib2R5LmZpbmQoJyNtdy1yb2xsYmFjay1zdWNjZXNzJykuZmluZCgnLm13LXVzZXJ0b29sbGlua3MgYScpLmZpcnN0KCk7XG5cdFx0XHRpZiAoJHZhbmRhbFRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKCR2YW5kYWxUYWxrTGluaywgTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHRcdFx0JHZhbmRhbFRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQWJ1c2VMb2cnICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0FidXNlRmlsdGVyVmFyaWFibGVzJykgIT09IG51bGxcblx0XHQpIHtcblx0XHRcdGNvbnN0IGFmVGFsa0xpbmsgPSAkYm9keS5maW5kKCcubXctdXNlcnRvb2xsaW5rcy10YWxrJykuZmlyc3QoKTtcblx0XHRcdGlmIChhZlRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKGFmVGFsa0xpbmssIG13LmNvbmZpZy5nZXQoJ3dnQWJ1c2VGaWx0ZXJWYXJpYWJsZXMnKS5wYWdlX3ByZWZpeGVkdGl0bGUpO1xuXHRcdFx0XHRhZlRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS53YXJuLm1ha2VWYW5kYWxUYWxrTGluayA9ICgkdmFuZGFsVGFsa0xpbmssIHBhZ2VuYW1lKSA9PiB7XG5cdFx0JHZhbmRhbFRhbGtMaW5rLndyYXBJbm5lcihcblx0XHRcdCQoJzxzcGFuPicpLmF0dHIoXG5cdFx0XHRcdCd0aXRsZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5aaC5p6c5ZCI6YCC77yM5oKo5Y+v5Lul55SoVHdpbmtsZeWcqOivpeeUqOaIt+iuqOiuuumhteS4iuWBmuWHuuitpuWRiuOAgicsXG5cdFx0XHRcdFx0J+WmguaenOWQiOmBqe+8jOaCqOWPr+S7peeUqFR3aW5rbGXlnKjoqbLkvb/nlKjogIXoqI7oq5bpoIHkuIrlgZrlh7rorablkYrjgIInXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHRcdGNvbnN0IGV4dHJhUGFyYW0gPSBgdmFuYXJ0aWNsZT0ke213LnV0aWwucmF3dXJsZW5jb2RlKHBhZ2VuYW1lKX1gO1xuXHRcdGNvbnN0IGhyZWYgPSAkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicpO1xuXHRcdGlmIChocmVmLmluY2x1ZGVzKCc/JykpIHtcblx0XHRcdCR2YW5kYWxUYWxrTGluay5hdHRyKCdocmVmJywgYCR7aHJlZn0mJHtleHRyYVBhcmFtfWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9PyR7ZXh0cmFQYXJhbX1gKTtcblx0XHR9XG5cdH07XG5cdC8vIFVzZWQgdG8gY2xvc2Ugd2luZG93IHdoZW4gc3dpdGNoaW5nIHRvIEFSViBpbiBhdXRvbGV2ZWxcblx0VHdpbmtsZS53YXJuLmRpYWxvZyA9IG51bGw7XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRyZWxldmFudFVzZXJOYW1lID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5bCG6KaB6K2m5ZGK6Ieq5bex77yB5oKo56Gu5a6a6KaB57un57ut5ZCX77yfJywgJ+aCqOWwh+imgeitpuWRiuiHquW3se+8geaCqOeiuuWumuimgee5vOe6jOWXju+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLndhcm4uZGlhbG9nID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQ0MCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLndhcm47XG5cdFx0ZGlhbG9nLnNldFRpdGxlKHdpbmRvdy53Z1VMUygn6K2m5ZGK44CB5o+Q6YaS55So5oi3JywgJ+itpuWRiuOAgeaPkOmGkuS9v+eUqOiAhScpKTtcblx0XHRkaWFsb2cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdGRpYWxvZy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6K2m5ZGK6K6+572uJywgJ+itpuWRiuioreWumicpLCAnSDpUVy9QUkVGI3dhcm4nKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjd2FybicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUud2Fybi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgbWFpbl9zZWxlY3QgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup6KaB5Y+R6YCB55qE6K2m5ZGK5oiW5o+Q6YaS57G75Z6LJywgJ+mBuOaTh+imgeWCs+mAgeeahOitpuWRiuaIluaPkOmGkumhnuWIpScpLFxuXHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfpppblhYjpgInmi6nkuIDnu4TvvIzlho3pgInmi6nlhbfkvZPnmoTorablkYrmqKHmnb/jgIInLCAn6aaW5YWI6YG45pOH5LiA57WE77yM5YaN6YG45pOH5YW36auU55qE6K2m5ZGK5qih5p2/44CCJyksXG5cdFx0fSk7XG5cdFx0Y29uc3QgbWFpbl9ncm91cCA9IG1haW5fc2VsZWN0LmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdtYWluX2dyb3VwJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3orr7nva7pu5jorqTpgInmi6nnmoTpgInpobknLFxuXHRcdFx0XHQn5oKo5Y+v5ZyoVHdpbmtsZeWBj+WlveioreWumuS4reioreWumumgkOioremBuOaTh+eahOmBuOmghSdcblx0XHRcdCksXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSxcblx0XHR9KTtcblx0XHRjb25zdCBkZWZhdWx0R3JvdXAgPSBOdW1iZXIucGFyc2VJbnQoVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0V2FybmluZ0dyb3VwJyksIDYpO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5Yqo6YCJ5oup5bGC57qnJywgJ+iHquWLlemBuOaTh+WxpOe0micpLFxuXHRcdFx0dmFsdWU6ICdhdXRvbGV2ZWwnLFxuXHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNyxcblx0XHR9KTtcblx0XHRtYWluX2dyb3VwLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiAnMe+8muaPkOmGkicsXG5cdFx0XHR2YWx1ZTogJ2xldmVsMScsXG5cdFx0XHRzZWxlY3RlZDogZGVmYXVsdEdyb3VwID09PSAxLFxuXHRcdH0pO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6ICcy77ya6K2m5ZGKJyxcblx0XHRcdHZhbHVlOiAnbGV2ZWwyJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDIsXG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY29tYmluZWRTaW5nbGV0TWVudXMnKSkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5raI5oGvJywgJ+WWruWxpOe0muioiuaBrycpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZWNvbWJpbmVkJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gMyB8fCBkZWZhdWx0R3JvdXAgPT09IDQsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5o+Q6YaSJywgJ+WWruWxpOe0muaPkOmGkicpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZW5vdGljZScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDMsXG5cdFx0XHR9KTtcblx0XHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+itpuWRiicsICfllq7lsaTntJrorablkYonKSxcblx0XHRcdFx0dmFsdWU6ICdzaW5nbGV3YXJuJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNCxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLmxlbmd0aCkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6K2m5ZGKJywgJ+iHquioguitpuWRiicpLFxuXHRcdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDUsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogJ+aJgOacieitpuWRiuaooeadvycsXG5cdFx0XHR2YWx1ZTogJ2tpdGNoZW5zaW5rJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDYsXG5cdFx0fSk7XG5cdFx0bWFpbl9zZWxlY3QuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ3N1Yl9ncm91cCcsXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeSxcblx0XHR9KTsgLy8gV2lsbCBiZSBlbXB0eSB0byBiZWdpbiB3aXRoLlxuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLpk77mjqUnLCAn6aCB6Z2i6YCj57WQJyksXG5cdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJykgfHwgJycsXG5cdFx0XHRzaXplOiA1MCxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn57uZ5qih5p2/5Lit5Yqg5YWl5LiA6aG16Z2i6ZO+5o6l77yM5Y+v55WZ56m644CCJywgJ+e1puaooeadv+S4reWKoOWFpeS4gOmggemdoumAo+e1kO+8jOWPr+eVmeepuuOAgicpLFxuXHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+S7hemZkOS4gOS4qu+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJyxcblx0XHRcdFx0J+WDhemZkOS4gOWAi++8jOWLv+S9v+eUqOe2suWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJ1xuXHRcdFx0KSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0aWQ6ICd0d2lua2xlLXdhcm4td2FybmluZy1tZXNzYWdlcycsXG5cdFx0fSk7XG5cdFx0Y29uc3QgbW9yZSA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRuYW1lOiAncmVhc29uR3JvdXAnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K2m5ZGK5L+h5oGvJywgJ+itpuWRiuizh+ioiicpLFxuXHRcdH0pO1xuXHRcdG1vcmUuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6/pgInkv6Hmga/vvJonLCAn5Y+v6YG46LOH6KiK77yaJyksXG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55CG55Sx5oiW5piv6ZmE5Yqg5L+h5oGvJywgJ+eQhueUseaIluaYr+mZhOWKoOizh+ioiicpLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFja3MucHJldmlldyhyZXN1bHQpOyAvLyB8cmVzdWx0fCBpcyBkZWZpbmVkIGJlbG93XG5cdFx0fSk7XG5cblx0XHRwcmV2aWV3bGluay5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cdFx0cHJldmlld2xpbmsudGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+mihOiniCcsICfpoJDopr0nKTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnd2FybmluZ3ByZXZpZXcnLFxuXHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0fSk7XG5cdFx0bW9yZS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3R3aW5rbGV3YXJuLXByZXZpZXdib3gnLFxuXHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHR9KTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdGRpYWxvZy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0ZGlhbG9nLmRpc3BsYXkoKTtcblx0XHRyZXN1bHQubWFpbl9ncm91cC5yb290ID0gcmVzdWx0O1xuXHRcdHJlc3VsdC5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQocmVzdWx0KS5maW5kKCdkaXYjdHdpbmtsZXdhcm4tcHJldmlld2JveCcpLmxhc3QoKVswXSk7XG5cdFx0Ly8gUG90ZW50aWFsIG5vdGljZXMgZm9yIHN0YWxlbmVzcyBhbmQgbWlzc2VkIHJldmVydHNcblx0XHRsZXQgbWVzc2FnZSA9ICcnO1xuXHRcdGxldCBxdWVyeSA9IHt9O1xuXHRcdGNvbnN0IHZhbnJldmlkID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlcmV2aWQnKTtcblx0XHRpZiAodmFucmV2aWQpIHtcblx0XHRcdC8vIElmIHlvdSB0cmllZCByZXZlcnRpbmcsIGNoZWNrIGlmICp5b3UqIGFjdHVhbGx5IHJldmVydGVkXG5cdFx0XHRpZiAoIW13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgnbm9hdXRvd2FybicpICYmIG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpKSB7XG5cdFx0XHRcdC8vIFZpYSBmbHVmZiBsaW5rXG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHR0aXRsZXM6IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2c3RhcnRpZDogdmFucmV2aWQsXG5cdFx0XHRcdFx0cnZsaW1pdDogMixcblx0XHRcdFx0XHRydmRpcjogJ25ld2VyJyxcblx0XHRcdFx0XHRydnByb3A6ICd1c2VyJyxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5qOA5p+l5oKo5piv5ZCm5oiQ5Yqf5Zue6YCA6K+l6aG16Z2iJywgJ+aqouafpeaCqOaYr+WQpuaIkOWKn+WbnumAgOipsumggemdoicpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHJldmVydFVzZXIgPSAkKGFwaW9iai5nZXRSZXNwb25zZSgpKS5maW5kKCdyZXZpc2lvbnMgcmV2JylbMV0uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRcdFx0XHRpZiAocmV2ZXJ0VXNlciAmJiByZXZlcnRVc2VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpIHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huivpemhtemdou+8jOW5tuWPr+iDveW3sue7j+itpuWRiuivpeeUqOaIt+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huipsumggemdou+8jOS4puWPr+iDveW3sue2k+itpuWRiuipsuS9v+eUqOiAheOAgidcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBDb25maXJtIGVkaXQgd2Fzbid0IHRvbyBvbGQgZm9yIGEgd2FybmluZ1xuXHRcdFx0Y29uc3QgY2hlY2tTdGFsZSA9ICh2YW50aW1lc3RhbXBfKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJldkRhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZSh2YW50aW1lc3RhbXBfKTtcblx0XHRcdFx0aWYgKHZhbnRpbWVzdGFtcF8gJiYgcmV2RGF0ZS5pc1ZhbGlkKCkgJiYgcmV2RGF0ZS5hZGQoMjQsICdob3VycycpLmlzQmVmb3JlKG5ldyBEYXRlKCkpKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L+Z56yU57yW6L6R5piv5ZyoMjTlsI/ml7bliY3lgZrlh7rnmoTvvIznjrDlnKjorablkYrlj6/og73lt7Lov4fml7bjgIInLFxuXHRcdFx0XHRcdFx0J+mAmeethue3qOi8r+aYr+WcqDI05bCP5pmC5YmN5YGa5Ye655qE77yM54++5Zyo6K2m5ZGK5Y+v6IO95bey6YGO5pmC44CCJ1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0bGV0IHZhbnRpbWVzdGFtcCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFudGltZXN0YW1wJyk7XG5cdFx0XHQvLyBQcm92aWRlZCBmcm9tIGEgZmx1ZmYgbW9kdWxlLWJhc2VkIHJldmVydCwgbm8gQVBJIGxvb2t1cCBuZWNlc3Nhcnlcblx0XHRcdGlmICh2YW50aW1lc3RhbXApIHtcblx0XHRcdFx0Y2hlY2tTdGFsZSh2YW50aW1lc3RhbXApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2cHJvcDogJ3RpbWVzdGFtcCcsXG5cdFx0XHRcdFx0cmV2aWRzOiB2YW5yZXZpZCxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn6I635Y+W54mI5pys5pe26Ze05oizJywgJ+WPluW+l+eJiOacrOaZgumWk+aIsycpLCBxdWVyeSwgKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRcdHZhbnRpbWVzdGFtcCA9ICQoYXBpb2JqLmdldFJlc3BvbnNlKCkpLmZpbmQoJ3JldmlzaW9ucyByZXYnKS5hdHRyKCd0aW1lc3RhbXAnKTtcblx0XHRcdFx0XHRjaGVja1N0YWxlKHZhbnRpbWVzdGFtcCk7XG5cdFx0XHRcdH0pLnBvc3QoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgaW5pdCA9ICgpID0+IHtcblx0XHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgZmlyc3QgY2hvaWNlIChHZW5lcmFsIE5vdGUpO1xuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5tYWluX2dyb3VwLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHR9O1xuXHRcdGluaXQoKTtcblx0fTtcblx0Ly8gVGhpcyBpcyBhbGwgdGhlIG1lc3NhZ2VzIHRoYXQgbWlnaHQgYmUgZGlzcGF0Y2hlZCBieSB0aGUgY29kZVxuXHQvLyBFYWNoIG9mIHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcyByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246XG5cdC8vICAgbGFiZWwgKHJlcXVpcmVkKTogQSBzaG9ydCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gdGhlIGRpYWxvZ1xuXHQvLyAgIHN1bW1hcnkgKHJlcXVpcmVkKTogVGhlIGVkaXQgc3VtbWFyeSB1c2VkLiBJZiBhbiBhcnRpY2xlIG5hbWUgaXMgZW50ZXJlZCwgdGhlIHN1bW1hcnkgaXMgcG9zdGZpeGVkIHdpdGggXCJvbiBbW2FydGljbGVdXVwiLCBhbmQgaXQgaXMgYWx3YXlzIHBvc3RmaXhlZCB3aXRoIFwiLiAkc3VtbWFyeUFkXCJcblx0Ly8gICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnkgKG9wdGlvbmFsKTogU2V0IHRvIHRydWUgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnkuIFVzZWZ1bCBpZiB0aGUgd2FybmluZyByZWxhdGVzIHRvIGF0dGFjayBwYWdlcywgb3Igc29tZSBzdWNoLlxuXHRUd2lua2xlLndhcm4ubWVzc2FnZXMgPSB7XG5cdFx0bGV2ZWxzOiBbXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+S4jeWQjOexu+Wei+eahOmdnuW7uuiuvue8lui+kScsICfkuI3lkIzpoZ7liKXnmoTpnZ7lu7roqK3nt6jovK8nKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1jb3B5cmlnaHQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L6154qv6JGX5L2c5p2DJywgJ+S+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS+teeKr+iRl+S9nOadgycsICfms6jmhI/vvJrkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh5L6154qv6JGX5L2c5p2DJywgJ+WkmuasoeS+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWkmuasoeS+teeKr+iRl+S9nOadgycsICforablkYrvvJrlpJrmrKHkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctY3J5c3RhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJywgJ+azqOaEj++8muWKoOWFpeiHhua4rOaIluacqueiuuiqjeeahOioiuaBrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpJrmrKHliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1kZWxldGUnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctaW1hZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICfms6jmhI/vvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICforablkYrvvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctbmV3cGFnZSc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+azqOaEj++8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+itpuWRiu+8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1ub3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICfms6jmhI/vvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICforablkYrvvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctb3Bvdic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+azqOaEj++8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+itpuWRiu+8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1yZWRpcmVjdCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rnoLTlnY/mgKfnmoTph43lrprlkJEnLCAn5bu656uL56C05aOe5oCn55qE6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu656C05Z2P5oCn55qE6YeN5a6a5ZCRJywgJ+azqOaEj++8muW7uueri+egtOWjnuaAp+eahOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rmgbbmhI/ph43lrprlkJEnLCAn5bu656uL5oOh5oSP6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65oG25oSP6YeN5a6a5ZCRJywgJ+itpuWRiu+8muW7uueri+aDoeaEj+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy11cGxvYWQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4iuS8oOS4jeW9k+WbvuWDjycsICfms6jmhI/vvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4iuS8oOS4jeW9k+WbvuWDjycsICforablkYrvvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdmFuZGFsaXNtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmmI7mmL7noLTlnY8nLCAn5rOo5oSP77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrmmI7mmL7noLTlnY8nLCAn6K2m5ZGK77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LXRkZWwnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muenu+mZpOe7tOaKpOaAp+aooeadvycsICfms6jmhI/vvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muenu+mZpOe7tOaKpOaAp+aooeadvycsICforablkYrvvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+WinuWKoOW5v+WRiicsICflop7liqDlu6PlkYonKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1zcGFtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOS4jeWQiOmAgueahOWklumDqOmTvuaOpScsICflop7liqDkuI3lkIjpgannmoTlpJbpg6jpgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlop7liqDkuI3lkIjpgILnmoTlpJbpg6jpk77mjqUnLCAn5rOo5oSP77ya5aKe5Yqg5LiN5ZCI6YGp55qE5aSW6YOo6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOWeg+WcvumTvuaOpScsICflop7liqDlnoPlnL7pgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlop7liqDlnoPlnL7pk77mjqUnLCAn6K2m5ZGK77ya5aKe5Yqg5Z6D5Zy+6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LWFkdmVydCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmnInlhb3moaPmoYjppobmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5pyJ5YW95qGj5qGI6aaG5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmnInlhb3moaPmoYjppobmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5pyJ5YW95qGj5qGI6aaG5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn5Yqg5o+S5LiN5a6e44CB6K+96LCk5paH5a2XJywgJ+WKoOaPkuS4jeWvpuOAgeiqueisl+aWh+WtlycpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWJpb2cnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctZXJyb3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICfms6jmhI/vvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICforablkYrvvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdW5zb3VyY2VkJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCfnv7vor5Hlk4HotKgnLCAn57+76K2v5ZOB6LOqJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctcm91Z2h0cmFuc2xhdGlvbic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmgqjnv7vor5HnmoTotKjph4/mnInlvoXmlLnlloQnLCAn5oKo57+76K2v55qE6LOq6YeP5pyJ5b6F5pS55ZaEJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5oKo57+76K+R55qE6LSo6YeP5pyJ5b6F5pS55ZaEJywgJ+azqOaEj++8muaCqOe/u+itr+eahOizqumHj+acieW+heaUueWWhCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnspfliqPnv7vor5EnLCAn57KX5Yqj57+76K2vJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya57KX5Yqj57+76K+RJywgJ+itpuWRiu+8mueyl+WKo+e/u+itrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn6Z2e6IO95o6l5Y+X5LiU6L+d5Y+N5p2h5L6L55qE5Y2V5pa56Z2i6KGM5Li65oiW5pON5L2cJywgJ+mdnuiDveaOpeWPl+S4lOmBleWPjeaineS+i+eahOWWruaWuemdouihjOeCuuaIluaTjeS9nCcpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWFmZCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/JywgJ+enu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya56e76Zmke3thZmR9fe+8iOmggemdouWtmOW7ouiojuirlu+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsICfnp7vpmaR7e2FmZH1977yI6aCB6Z2i5a2Y5bui6KiO6KuW77yJ5qih5p2/JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muenu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LW1vcyc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1tb3ZlJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aXoOaVheenu+WKqOadoeebri/mlrDlkI3np7DkuI3nrKblkIjlkb3lkI3op4TojIMnLFxuXHRcdFx0XHRcdFx0XHRcdCfnhKHmlYXnp7vli5Xmop3nm64v5paw5ZCN56ix5LiN56ym5ZCI5ZG95ZCN6KaP56+EJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICfms6jmhI/vvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aG16Z2i56e75Yqo5Yiw5LiN5oGw5b2T44CB6L+d5Y+N5ZG95ZCN5bi46KeE5oiW6L+d5Y+N5YWx6K+G55qE5qCH6aKYJyxcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aCB6Z2i56e75YuV5Yiw5LiN5oGw55W244CB6YGV5Y+N5ZG95ZCN5bi46KaP5oiW6YGV5Y+N5YWx6K2Y55qE5qiZ6aGMJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICforablkYrvvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc3BlZWR5Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLCAn56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muenu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yiq6Zmk77yJ5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/JywgJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKrpmaTvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdGFsa3BhZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mui/neWPjeiuqOiuuumhteinhOiMgycsICfms6jmhI/vvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8mui/neWPjeiuqOiuuumhteinhOiMgycsICforablkYrvvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdHB2Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+azqOaEj++8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+itpuWRiu+8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCflr7nlhbbku5bnlKjmiLflkozmnaHnm67nmoTmgIHluqYnLCAn5bCN5YW25LuW55So5oi25ZKM5qKd55uu55qE5oWL5bqmJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctaWxsZWdhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTlhoXlrrknLCAn5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTlhoXlrrknLCAn5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1vd24nOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu5omA5pyJ5p2DJywgJ+S4u+W8teaineebruaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4u+W8oOadoeebruaJgOacieadgycsICfms6jmhI/vvJrkuLvlvLXmop3nm67miYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu55qE5omA5pyJ5p2DJywgJ+S4u+W8teaineebrueahOaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4u+W8oOadoeebrueahOaJgOacieadgycsICforablkYrvvJrkuLvlvLXmop3nm67nmoTmiYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc29jaWFsbWVkaWEnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5pyJ5YW95qGj5qGI6aaG5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwhuacieWFveaho+ahiOmmhuW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5pyJ5YW95qGj5qGI6aaG5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwhuacieWFveaho+ahiOmmhuW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XSxcblx0XHRzaW5nbGVub3RpY2U6IHtcblx0XHRcdCd1dy0ycmVkaXJlY3QnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOenu+WKqOmhtemdouWQjuW6lOivpeS/ruWkjeWPjOmHjemHjeWumuWQkScsICflnKjnp7vli5XpoIHpnaLlvozmh4noqbLkv67lvqnpm5nph43ph43lrprlkJEnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlnKjnp7vliqjpobXpnaLlkI7lupTor6Xkv67lpI3lj4zph43ph43lrprlkJEnLCAn5rOo5oSP77ya5Zyo56e75YuV6aCB6Z2i5b6M5oeJ6Kmy5L+u5b6p6ZuZ6YeN6YeN5a6a5ZCRJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWFpdic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li+5oql5LqL6aG55bm25LiN5piv56C05Z2P6KGM5Li6JywgJ+iIieWgseS6i+mgheS4puS4jeaYr+egtOWjnuihjOS4uicpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOS4vuaKpeegtOWdjycsICfms6jmhI/vvJrkuI3mgbDnlbblnLDoiInloLHnoLTlo54nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXJ0aWNsZXNpZyc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit562+5ZCNJywgJ+WcqOaineebruS4reewveWQjScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reetvuWQjScsICfms6jmhI/vvJrlnKjmop3nm67kuK3nsL3lkI0nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXV0b2Jpb2dyYXBoeSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu66Ieq5LygJywgJ+W7uueri+iHquWCsycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIm+W7uuiHquS8oCcsICfms6jmhI/vvJrlu7rnq4voh6rlgrMnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYmFkY2F0Jzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXplJnor6/nmoTpobXpnaLliIbnsbsnLCAn5Yqg5YWl6Yyv6Kqk55qE6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6ZSZ6K+v55qE6aG16Z2i5YiG57G7JywgJ+azqOaEj++8muWKoOWFpemMr+iqpOeahOmggemdouWIhumhnicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1iaXRlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvKTlrrPmlrDmiYsnLCAn5YK35a6z5paw5omLJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Lyk5a6z5paw5omLJywgJ+azqOaEj++8muWCt+Wus+aWsOaJiycpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jaGluZXNlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fkvb/nlKjmoIflh4bmsYnor63msp/pgJonLCAn6KuL5L2/55So5qiZ5rqW5ryi6Kqe5rqd6YCaJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6K+35L2/55So5qCH5YeG5rGJ6K+t5rKf6YCaJywgJ+azqOaEj++8muiri+S9v+eUqOaomea6lua8ouiqnua6nemAmicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jcG1vdmUnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJqui0tOenu+WKqCcsICfliarosrznp7vli5UnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrliarotLTnp7vliqgnLCAn5rOo5oSP77ya5Ymq6LK856e75YuVJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWRhYic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5raI5q2n5LmJ6aG15qC85byP6ZSZ6K+vJywgJ+a2iOatp+e+qemggeagvOW8j+mMr+iqpCcpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mua2iOatp+S5iemhteagvOW8j+mUmeivrycsICfms6jmhI/vvJrmtojmrafnvqnpoIHmoLzlvI/pjK/oqqQnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctbmV3cGFnZS1kcmFmdCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyA6L+R5Yib5bu655qE6aG16Z2i6KKr56e75Yqo5Yiw6I2J56i/JywgJ+acgOi/keW7uueri+eahOmggemdouiiq+enu+WLleWIsOiNieeovycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muacgOi/keWIm+W7uueahOmhtemdouiiq+enu+WKqOWIsOiNieeovycsICfms6jmhI/vvJrmnIDov5Hlu7rnq4vnmoTpoIHpnaLooqvnp7vli5XliLDojYnnqL8nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc2VsZnJldmVydCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oSf6LCi5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5rWL6K+V77yM5Lul5ZCO5LiN6KaB5YaN6L+Z5qC35YGa5LqGJyxcblx0XHRcdFx0XHQn5oSf6Kyd5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5ris6Kmm77yM5Lul5b6M5LiN6KaB5YaN6YCZ5qij5YGa5LqGJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWbnumAgOS4quS6uueahOa1i+ivlScsICfms6jmhI/vvJrlm57pgIDlgIvkurrnmoTmuKzoqaYnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc3Vic3R1Yic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu65bCP5bCP5L2c5ZOBJywgJ+W7uueri+Wwj+Wwj+S9nOWTgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWIm+W7uuWwj+Wwj+S9nOWTgScsICforablkYrvvJrlu7rnq4vlsI/lsI/kvZzlk4EnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdGFsa2luYXJ0aWNsZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu6aG15Lit55WZ5LiL5oSP6KeBJywgJ+WcqOaineebrumggeS4reeVmeS4i+aEj+imiycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebrumhteS4reeVmeS4i+aEj+ingScsICfms6jmhI/vvJrlnKjmop3nm67poIHkuK3nlZnkuIvmhI/oposnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdW5zaWduZWQnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ayoeacieWcqOiuqOiuuumhteS4iuetvuWQjScsICfmspLmnInlnKjoqI7oq5bpoIHkuIrnsL3lkI0nKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmsqHmnInlnKjorqjorrrpobXkuIrnrb7lkI0nLCAn5rOo5oSP77ya5rKS5pyJ5Zyo6KiO6KuW6aCB5LiK57C95ZCNJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LXdyb25nY3NkJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTnkIbnlLHkuI3lvZMnLCAn5b+r6YCf5Yiq6Zmk55CG55Sx5LiN55W2JyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5b+r6YCf5Yig6Zmk55CG55Sx5LiN5b2TJywgJ+azqOaEj++8muW/q+mAn+WIqumZpOeQhueUseS4jeeVticpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy13cm9uZ3N1bW1hcnknOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOe8lui+keaRmOimgeWItumAoOS4jemAguW9k+eahOWGheWuuScsICflnKjnt6jovK/mkZjopoHoo73pgKDkuI3pgannlbbnmoTlhaflrrknKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlnKjnvJbovpHmkZjopoHliLbpgKDkuI3pgILlvZPnmoTlhoXlrrknLCAn6K2m5ZGK77ya5Zyo57eo6Lyv5pGY6KaB6KO96YCg5LiN6YGp55W255qE5YWn5a65JyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0c2luZ2xld2Fybjoge1xuXHRcdFx0J3V3LTNycic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35r2c5Zyo6L+d5Y+N5Zue6YCA5LiN6L+H5LiJ5Y6f5YiZ55qE5Y+v6IO95oCnJywgJ+eUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaIt+a9nOWcqOi/neWPjeWbnumAgOS4jei/h+S4ieWOn+WImeeahOWPr+iDveaApycsXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApydcblx0XHRcdFx0KSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXR0YWNrJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkurrouqvmlLvlh7snLCAn5Lq66Lqr5pS75pOKJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Lq66Lqr5pS75Ye7JywgJ+itpuWRiu+8muS6uui6q+aUu+aTiicpLFxuXHRcdFx0XHRzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IHRydWUsXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWNvaSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yip55uK5Yay56qBJywgJ+WIqeebiuihneeqgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIqeebiuWGsueqgScsICfms6jmhI/vvJrliKnnm4rooZ3nqoEnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctZmFrZXNvdXJjZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Jma5p6E5pWw5o2u5rqQ5oiW5byV5paHJywgJ+iZm+ani+izh+aWmeS+hua6kOaIluW8leaWhycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muiZmuaehOaVsOaNrua6kOaIluW8leaWhycsICforablkYrvvJromZvmp4vos4fmlpnkvobmupDmiJblvJXmlocnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctcGluZm8nOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W8oOi0tOS7luS6uumakOengScsICflvLXosrzku5bkurrpmrHnp4EnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlvKDotLTku5bkurrpmpDnp4EnLCAn6K2m5ZGK77ya5by16LK85LuW5Lq66Zqx56eBJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWlsbGVnYWxhdmF0YXInOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WktOWDj+i/neinhCcsICfpoK3lg4/pgZXopo8nKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfmgqjov5HmnJ/kuIrkvKDnmoTlpLTlg4/ov53op4QnLCAn5oKo6L+R5pyf5LiK5YKz55qE6aCt5YOP6YGV6KaPJyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdH07XG5cdC8vIFVzZWQgcmVwZWF0ZWRseSBiZWxvdyBhY3Jvc3MgbWVudSByZWJ1aWxkc1xuXHRUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnByZXZfcmVhc29uID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSA9IGZ1bmN0aW9uIGNoYW5nZV9jYXRlZ29yeShlKSB7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHtzdWJfZ3JvdXB9ID0gZS50YXJnZXQucm9vdDtcblx0XHRzdWJfZ3JvdXAubWFpbl9ncm91cCA9IHZhbHVlO1xuXHRcdGxldCBvbGRfc3VidmFsdWUgPSBzdWJfZ3JvdXAudmFsdWU7XG5cdFx0bGV0IG9sZF9zdWJ2YWx1ZV9yZTtcblx0XHRpZiAob2xkX3N1YnZhbHVlKSB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICdraXRjaGVuc2luaycpIHtcblx0XHRcdFx0Ly8gRXhhY3QgbWF0Y2ggcG9zc2libGUgaW4ga2l0Y2hlbnNpbmsgbWVudVxuXHRcdFx0XHRvbGRfc3VidmFsdWVfcmUgPSBuZXcgUmVnRXhwKG13LnV0aWwuZXNjYXBlUmVnRXhwKG9sZF9zdWJ2YWx1ZSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b2xkX3N1YnZhbHVlID0gb2xkX3N1YnZhbHVlLnJlcGxhY2UoL1xcZCooaW0pPyQvLCAnJyk7XG5cdFx0XHRcdG9sZF9zdWJ2YWx1ZV9yZSA9IG5ldyBSZWdFeHAoYCR7bXcudXRpbC5lc2NhcGVSZWdFeHAob2xkX3N1YnZhbHVlKX0oXFxcXGQqPykkYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlIChzdWJfZ3JvdXAuaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRzdWJfZ3JvdXAucmVtb3ZlQ2hpbGQoc3ViX2dyb3VwLmZpcnN0Q2hpbGQpO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyB3b3JrZXIgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBjb21ibyBib3ggZW50cmllc1xuXHRcdGNvbnN0IGNyZWF0ZUVudHJpZXMgPSAoY29udGVudHMsIGNvbnRhaW5lciwgd3JhcEluT3B0Z3JvdXAsIHZhbCA9IHZhbHVlKSA9PiB7XG5cdFx0XHQvLyBsZXZlbDItPjIsIHNpbmdsZXdhcm4tPicnOyBhbHNvIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlXG5cdFx0XHQvLyBzY2FsZWQgbGV2ZWxzIGZyb20gc2luZ2xlbm90aWNlLCBzaW5nbGV3YXJuLCBhbmQgY3VzdG9tXG5cdFx0XHRjb25zdCBsZXZlbCA9IHZhbC5yZXBsYWNlKC9eXFxEKy9nLCAnJyk7XG5cdFx0XHQvLyBkdWUgdG8gYW4gYXBwYXJlbnQgaU9TIGJ1Zywgd2UgaGF2ZSB0byBhZGQgYW4gb3B0aW9uLWdyb3VwIHRvIHByZXZlbnQgdHJ1bmNhdGlvbiBvZiB0ZXh0XG5cdFx0XHQvLyAoc2VhcmNoIFdUOlRXIGFyY2hpdmVzIGZvciBcIlByb2JsZW0gc2VsZWN0aW5nIHdhcm5pbmdzIG9uIGFuIGlQaG9uZVwiKVxuXHRcdFx0aWYgKHdyYXBJbk9wdGdyb3VwICYmICQuY2xpZW50LnByb2ZpbGUoKS5wbGF0Zm9ybSA9PT0gJ2lwaG9uZScpIHtcblx0XHRcdFx0bGV0IHdyYXBwZXJPcHRncm91cCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRsYWJlbDogJ+WPr+eUqOaooeadvycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3cmFwcGVyT3B0Z3JvdXAgPSB3cmFwcGVyT3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyT3B0Z3JvdXApO1xuXHRcdFx0XHRjb250YWluZXIgPSB3cmFwcGVyT3B0Z3JvdXA7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IFtpdGVtS2V5LCBpdGVtUHJvcGVydGllc10gb2YgT2JqZWN0LmVudHJpZXMoY29udGVudHMpKSB7XG5cdFx0XHRcdC8vIFNraXAgaWYgdGhlIGN1cnJlbnQgdGVtcGxhdGUgZG9lc24ndCBoYXZlIGEgdmVyc2lvbiBmb3IgdGhlIGN1cnJlbnQgbGV2ZWxcblx0XHRcdFx0aWYgKCEhbGV2ZWwgJiYgIWl0ZW1Qcm9wZXJ0aWVzW3ZhbF0pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qga2V5ID0gdHlwZW9mIGl0ZW1LZXkgPT09ICdzdHJpbmcnID8gaXRlbUtleSA6IGl0ZW1Qcm9wZXJ0aWVzLnZhbHVlO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZSA9IGtleSArIGxldmVsO1xuXHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogYHt7JHt0ZW1wbGF0ZX19fTogJHtsZXZlbCA/IGl0ZW1Qcm9wZXJ0aWVzW3ZhbF0ubGFiZWwgOiBpdGVtUHJvcGVydGllcy5sYWJlbH1gLFxuXHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vIFNlbGVjdCBpdGVtIGJlc3QgY29ycmVzcG9uZGluZyB0byBwcmV2aW91cyBzZWxlY3Rpb25cblx0XHRcdFx0aWYgKCFzZWxlY3RlZCAmJiBvbGRfc3VidmFsdWUgJiYgb2xkX3N1YnZhbHVlX3JlLnRlc3QodGVtcGxhdGUpKSB7XG5cdFx0XHRcdFx0ZWxlbS5kYXRhLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRzZWxlY3RlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZWxlbVJlbmRlcmVkID0gY29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW0ucmVuZGVyKCkpO1xuXHRcdFx0XHQkKGVsZW1SZW5kZXJlZCkuZGF0YSgnbWVzc2FnZURhdGEnLCBpdGVtUHJvcGVydGllcyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRzd2l0Y2ggKHZhbHVlKSB7XG5cdFx0XHRjYXNlICdzaW5nbGVub3RpY2UnOlxuXHRcdFx0Y2FzZSAnc2luZ2xld2Fybic6XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzW3ZhbHVlXSwgc3ViX2dyb3VwLCB0cnVlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzaW5nbGVjb21iaW5lZCc6IHtcblx0XHRcdFx0Y29uc3QgdW5Tb3J0ZWRTaW5nbGV0cyA9IHtcblx0XHRcdFx0XHQuLi5Ud2lua2xlLndhcm4ubWVzc2FnZXMuc2luZ2xlbm90aWNlLFxuXHRcdFx0XHRcdC4uLlR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGV3YXJuLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBzb3J0ZWRTaW5nbGV0TWVzc2FnZXMgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModW5Tb3J0ZWRTaW5nbGV0cykuc29ydCgpKSB7XG5cdFx0XHRcdFx0c29ydGVkU2luZ2xldE1lc3NhZ2VzW2tleV0gPSB1blNvcnRlZFNpbmdsZXRzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3JlYXRlRW50cmllcyhzb3J0ZWRTaW5nbGV0TWVzc2FnZXMsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnY3VzdG9tJzpcblx0XHRcdFx0Y3JlYXRlRW50cmllcyhUd2lua2xlLmdldFByZWYoJ2N1c3RvbVdhcm5pbmdMaXN0JyksIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAna2l0Y2hlbnNpbmsnOlxuXHRcdFx0XHRmb3IgKGNvbnN0IGx2bCBvZiBbJ2xldmVsMScsICdsZXZlbDInXSkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgc3ViX2dyb3VwLCB0cnVlLCBsdmwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjcmVhdGVFbnRyaWVzKFR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGVub3RpY2UsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzLnNpbmdsZXdhcm4sIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLCBzdWJfZ3JvdXAsIHRydWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2xldmVsMSc6XG5cdFx0XHRjYXNlICdsZXZlbDInOlxuXHRcdFx0XHQvLyBDcmVhdGVzIHN1Ymdyb3VwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVyZSBpcyBhbnl0aGluZyB0byBwbGFjZSBpbiBpdDtcblx0XHRcdFx0Ly8gbGVhdmVzIFwiUmVtb3ZhbCBvZiBkZWxldGlvbiB0YWdzXCIgZW1wdHkgZm9yIGxldmVsIDJcblx0XHRcdFx0Zm9yIChjb25zdCBsZXZlbEdyb3VwIG9mIFR3aW5rbGUud2Fybi5tZXNzYWdlcy5sZXZlbHMpIHtcblx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBsZXZlbEdyb3VwLmNhdGVnb3J5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG9wdGdyb3VwID0gb3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdFx0c3ViX2dyb3VwLmFwcGVuZENoaWxkKG9wdGdyb3VwKTtcblx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgb3B0Z3JvdXAsIGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F1dG9sZXZlbCc6IHtcblx0XHRcdFx0Ly8gQ2hlY2sgdXNlciBwYWdlIHRvIGRldGVybWluZSBhcHByb3ByaWF0ZSBsZXZlbFxuXHRcdFx0XHRjb25zdCBhdXRvbGV2ZWxQcm9jID0gKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHdpa2l0ZXh0ID0gVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gaGlzdG9yeSBub3QgbmVlZGVkIGZvciBhdXRvbGV2ZWxcblx0XHRcdFx0XHRjb25zdCBbbGF0ZXN0XSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3Npbmcod2lraXRleHQpO1xuXHRcdFx0XHRcdC8vIFBzZXVkby1wYXJhbXMgd2l0aCBvbmx5IHdoYXQncyBuZWVkZWQgdG8gcGFyc2UgdGhlIGxldmVsIGkuZS4gbm8gbWVzc2FnZURhdGFcblx0XHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRzdWJfZ3JvdXA6IG9sZF9zdWJ2YWx1ZSxcblx0XHRcdFx0XHRcdGFydGljbGU6IGUudGFyZ2V0LnJvb3QuYXJ0aWNsZS52YWx1ZSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGNvbnN0IGx2bCA9IGBsZXZlbCR7VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5hdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0KHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdClbMV19YDtcblx0XHRcdFx0XHQvLyBJZGVudGljYWwgdG8gbGV2ZWwxLCBldGMuIGFib3ZlIGJ1dCBleHBsaWNpdGx5IHByb3ZpZGVzIHRoZSBsZXZlbFxuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0Z3JvdXAnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogbGV2ZWxHcm91cC5jYXRlZ29yeSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5yZW5kZXIoKTtcblx0XHRcdFx0XHRcdHN1Yl9ncm91cC5hcHBlbmRDaGlsZChvcHRncm91cCk7XG5cdFx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRcdGNyZWF0ZUVudHJpZXMobGV2ZWxHcm91cC5saXN0LCBvcHRncm91cCwgZmFsc2UsIGx2bCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIFRyaWdnZXIgc3ViY2F0ZWdvcnkgY2hhbmdlLCBhZGQgc2VsZWN0IG1lbnUsIGV0Yy5cblx0XHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2sucG9zdENhdGVnb3J5Q2xlYW51cChlKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaikge1xuXHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCB1c2VydGFsa19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWAsXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4iuasoeitpuWRiicsICfovInlhaXkuIrmrKHorablkYonKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5sb2FkKFxuXHRcdFx0XHRcdFx0KHBhZ2VvYmopID0+IHtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqXG5cdFx0XHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIENhdGNoIGFuZCB3YXJuIGlmIHRoZSB0YWxrcGFnZSBjYW4ndCBsb2FkLFxuXHRcdFx0XHRcdFx0XHQvLyBtb3N0IGxpa2VseSBiZWNhdXNlIGl0J3MgYSBjcm9zcy1uYW1lc3BhY2UgcmVkaXJlY3Rcblx0XHRcdFx0XHRcdFx0Ly8gU3VwZXJzZWRlcyB0aGUgdHlwaWNhbCAkYXV0b2xldmVsTWVzc2FnZSBhZGRlZCBpbiBhdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0XG5cdFx0XHRcdFx0XHRcdGNvbnN0ICRub1RhbGtQYWdlTm9kZSA9ICQoJzxzdHJvbmc+Jylcblx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCAndHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJylcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdjb2xvcicsICcjZjAwJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+aXoOazleWKoOi9veeUqOaIt+iuqOiuuumhte+8jOi/meWPr+iDveaYr+WboOS4uuWug+aYr+i3qOWRveWQjeepuumXtOmHjeWumuWQke+8jOiHquWKqOmAieaLqeitpuWRiue6p+WIq+WwhuS4jeS8mui/kOS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCfnhKHms5XovInlhaXkvb/nlKjogIXoqI7oq5bpoIHvvIzpgJnlj6/og73mmK/lm6DngrrlroPmmK/ot6jlkb3lkI3nqbrplpPph43mlrDlsI7lkJHvvIzoh6rli5Xpgbjmk4forablkYrntJrliKXlsIfkuI3mnIPpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JG5vVGFsa1BhZ2VOb2RlLmluc2VydEJlZm9yZSgkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLXdhcm5pbmctbWVzc2FnZXMnKSk7XG5cdFx0XHRcdFx0XHRcdC8vIElmIGEgcHJldmlldyB3YXMgb3BlbmVkIHdoaWxlIGluIGEgZGlmZmVyZW50IG1vZGUsIGNsb3NlIGl0XG5cdFx0XHRcdFx0XHRcdC8vIFNob3VsZCBudWxsaWZ5IHRoZSBuZWVkIHRvIGNhdGNoIHRoZSBlcnJvciBpbiBwcmV2aWV3IGNhbGxiYWNrXG5cdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCd0d2lua2xld2Fybu+8muacquefpeeahOitpuWRiue7hCcsICd0d2lua2xld2Fybu+8muacquefpeeahOitpuWRiue1hCcpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGV3YXJuJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBUcmlnZ2VyIHN1YmNhdGVnb3J5IGNoYW5nZSwgYWRkIHNlbGVjdCBtZW51LCBldGMuXG5cdFx0Ly8gSGVyZSBiZWNhdXNlIG9mIHRoZSBhc3luYyBsb2FkIGZvciBhdXRvbGV2ZWxcblx0XHRpZiAodmFsdWUgIT09ICdhdXRvbGV2ZWwnKSB7XG5cdFx0XHQvLyByZXNldCBhbnkgYXV0b2xldmVsLXNwZWNpZmljIG1lc3NhZ2VzIHdoaWxlIHdlJ3JlIGhlcmVcblx0XHRcdCRib2R5LmZpbmQoJyN0d2lua2xlLXdhcm4tYXV0b2xldmVsLW1lc3NhZ2UnKS5yZW1vdmUoKTtcblx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjay5wb3N0Q2F0ZWdvcnlDbGVhbnVwKGUpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLnBvc3RDYXRlZ29yeUNsZWFudXAgPSAoZSkgPT4ge1xuXHRcdC8vIGNsZWFyIG92ZXJyaWRkZW4gbGFiZWwgb24gYXJ0aWNsZSB0ZXh0Ym94XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRUb29sdGlwVmlzaWJpbGl0eShlLnRhcmdldC5yb290LmFydGljbGUsIHRydWUpO1xuXHRcdE1vcmViaXRzLnF1aWNrRm9ybS5yZXNldEVsZW1lbnRMYWJlbChlLnRhcmdldC5yb290LmFydGljbGUpO1xuXHRcdC8vIFRyaWdnZXIgY3VzdG9tIGxhYmVsL2NoYW5nZSBvbiBtYWluIGNhdGVnb3J5IGNoYW5nZVxuXHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjay5jaGFuZ2Vfc3ViY2F0ZWdvcnkoZSk7XG5cdFx0Ly8gVXNlIHNlbGVjdDIgdG8gbWFrZSB0aGUgc2VsZWN0IG1lbnUgc2VhcmNoYWJsZVxuXHRcdGlmICghVHdpbmtsZS5nZXRQcmVmKCdvbGRTZWxlY3QnKSkge1xuXHRcdFx0JGJvZHlcblx0XHRcdFx0LmZpbmQoJ3NlbGVjdFtuYW1lPXN1Yl9ncm91cF0nKVxuXHRcdFx0XHQuc2VsZWN0Mih7XG5cdFx0XHRcdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRcdFx0XHRtYXRjaGVyOiBNb3JlYml0cy5zZWxlY3QyLm1hdGNoZXJzLm9wdGdyb3VwRnVsbCxcblx0XHRcdFx0XHR0ZW1wbGF0ZVJlc3VsdDogTW9yZWJpdHMuc2VsZWN0Mi5oaWdobGlnaHRTZWFyY2hNYXRjaGVzLFxuXHRcdFx0XHRcdGxhbmd1YWdlOiB7XG5cdFx0XHRcdFx0XHRzZWFyY2hpbmc6IE1vcmViaXRzLnNlbGVjdDIucXVlcnlJbnRlcmNlcHRvcixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2hhbmdlKFR3aW5rbGUud2Fybi5jYWxsYmFjay5jaGFuZ2Vfc3ViY2F0ZWdvcnkpO1xuXHRcdFx0JGJvZHkuZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uJykub24oJ2tleWRvd24nLCBNb3JlYml0cy5zZWxlY3QyLmF1dG9TdGFydCkudHJpZ2dlcignZm9jdXMnKTtcblx0XHRcdG13LnV0aWwuYWRkQ1NTKFxuXHRcdFx0XHQvKiBJbmNyZWFzZSBoZWlnaHQ7XG5cdFx0XHRcdCAqIFJlZHVjZSBwYWRkaW5nO1xuXHRcdFx0XHQgKiBBZGp1c3QgZm9udCBzaXplLlxuXHRcdFx0XHQgKiAqL1xuXHRcdFx0XHQnLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWRyb3Bkb3duIC5zZWxlY3QyLXJlc3VsdHM+LnNlbGVjdDItcmVzdWx0c19fb3B0aW9uc3ttYXgtaGVpZ2h0OjM1MHB4fS5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItcmVzdWx0c19fZ3JvdXAsLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb257cGFkZGluZy10b3A6MXB4O3BhZGRpbmctYm90dG9tOjFweH0uc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItZHJvcGRvd24gLnNlbGVjdDItcmVzdWx0cywuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdGlvbiAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVke2ZvbnQtc2l6ZToxM3B4fSdcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2suY2hhbmdlX3N1YmNhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCBtYWluX2dyb3VwID0gZS50YXJnZXQuZm9ybS5tYWluX2dyb3VwLnZhbHVlO1xuXHRcdGNvbnN0IHt2YWx1ZX0gPSBlLnRhcmdldC5mb3JtLnN1Yl9ncm91cDtcblx0XHQvLyBUYWdzIHRoYXQgZG9uJ3QgdGFrZSBhIGxpbmtlZCBhcnRpY2xlLCBidXQgc29tZXRoaW5nIGVsc2UgKG9mdGVuIGEgdXNlcm5hbWUpLlxuXHRcdC8vIFRoZSB2YWx1ZSBvZiBlYWNoIHRhZyBpcyB0aGUgbGFiZWwgbmV4dCB0byB0aGUgaW5wdXQgZmllbGRcblx0XHRjb25zdCBub3RMaW5rZWRBcnRpY2xlID0ge1xuXHRcdFx0J3V3LWJpdGUnOiB3aW5kb3cud2dVTFMoJ+iiq+KAnOWSrOWIsOKAneeahOeUqOaIt++8iOS4jeWQq1VzZXI677yJICcsICfooqvjgIzlkqzliLDjgI3nmoTkvb/nlKjogIXvvIjkuI3lkKtVc2VyOu+8iSAnKSxcblx0XHRcdCd1dy1haXYnOiB3aW5kb3cud2dVTFMoJ+WPr+mAiei+k+WFpeiiq+itpuWRiueahOeUqOaIt+WQje+8iOS4jeWQq1VzZXI677yJICcsICflj6/pgbjovLjlhaXooqvorablkYrnmoTkvb/nlKjogIXlkI3nqLHvvIjkuI3lkKtVc2VyOu+8iSAnKSxcblx0XHR9O1xuXHRcdGlmIChbJ3NpbmdsZW5vdGljZScsICdzaW5nbGV3YXJuJywgJ3NpbmdsZWNvbWJpbmVkJywgJ2tpdGNoZW5zaW5rJ10uaW5jbHVkZXMobWFpbl9ncm91cCkpIHtcblx0XHRcdGlmIChub3RMaW5rZWRBcnRpY2xlW3ZhbHVlXSkge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS53YXJuLnByZXZfYXJ0aWNsZSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi5wcmV2X2FydGljbGUgPSBlLnRhcmdldC5mb3JtLmFydGljbGUudmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5hcnRpY2xlLm5vdEFydGljbGUgPSB0cnVlO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUudmFsdWUgPSAnJztcblx0XHRcdFx0Ly8gY2hhbmdlIGZvcm0gbGFiZWxzIGFjY29yZGluZyB0byB0aGUgd2FybmluZyBzZWxlY3RlZFxuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5KGUudGFyZ2V0LmZvcm0uYXJ0aWNsZSwgZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0ub3ZlcnJpZGVFbGVtZW50TGFiZWwoZS50YXJnZXQuZm9ybS5hcnRpY2xlLCBub3RMaW5rZWRBcnRpY2xlW3ZhbHVlXSk7XG5cdFx0XHR9IGVsc2UgaWYgKGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS5ub3RBcnRpY2xlKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0ZS50YXJnZXQuZm9ybS5hcnRpY2xlLnZhbHVlID0gVHdpbmtsZS53YXJuLnByZXZfYXJ0aWNsZTtcblx0XHRcdFx0XHRUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUubm90QXJ0aWNsZSA9IGZhbHNlO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5KGUudGFyZ2V0LmZvcm0uYXJ0aWNsZSwgdHJ1ZSk7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5yZXNldEVsZW1lbnRMYWJlbChlLnRhcmdldC5mb3JtLmFydGljbGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBhZGQgYmlnIHJlZCBub3RpY2UsIHdhcm5pbmcgdXNlcnMgYWJvdXQgaG93IHRvIHVzZSB7e3V3LVtjb2ktXXVzZXJuYW1lfX0gYXBwcm9wcmlhdGVseVxuXHRcdCRib2R5LmZpbmQoJyN0dy13YXJuLXJlZC1ub3RpY2UnKS5yZW1vdmUoKTtcblx0fTtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrcyA9IHtcblx0XHRnZXRXYXJuaW5nV2lraXRleHQ6ICh0ZW1wbGF0ZU5hbWUsIGFydGljbGUsIHJlYXNvbiwgaXNDdXN0b20sIG5vU2lnbikgPT4ge1xuXHRcdFx0bGV0IHRleHQgPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgdGVtcGxhdGVOYW1lKTtcblx0XHRcdC8vIGFkZCBsaW5rZWQgYXJ0aWNsZSBmb3IgdXNlciB3YXJuaW5nc1xuXHRcdFx0aWYgKGFydGljbGUpIHtcblx0XHRcdFx0dGV4dCArPSBgfDE9JHthcnRpY2xlfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmVhc29uKSB7XG5cdFx0XHRcdC8vIGFkZCBleHRyYSBtZXNzYWdlXG5cdFx0XHRcdHRleHQgKz0gYHwyPSR7cmVhc29ufWA7XG5cdFx0XHR9XG5cdFx0XHR0ZXh0ICs9ICd8c3Vic3Q9Jy5jb25jYXQoJ3N1YnN0OicpO1xuXHRcdFx0aWYgKCFub1NpZ24pIHtcblx0XHRcdFx0dGV4dCArPSAnfHNpZz1+ficuY29uY2F0KCd+ficpO1xuXHRcdFx0fVxuXHRcdFx0dGV4dCArPSAnfX0nO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fSxcblx0XHRzaG93UHJldmlldzogKGZvcm0sIHRlbXBsYXRlbmFtZSkgPT4ge1xuXHRcdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdFx0Ly8gUHJvdmlkZWQgb24gYXV0b2xldmVsLCBub3Qgb3RoZXJ3aXNlXG5cdFx0XHR0ZW1wbGF0ZW5hbWUgfHw9IGlucHV0LnN1Yl9ncm91cDtcblx0XHRcdGNvbnN0IGxpbmtlZGFydGljbGUgPSBpbnB1dC5hcnRpY2xlO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGV0ZXh0ID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5nZXRXYXJuaW5nV2lraXRleHQoXG5cdFx0XHRcdHRlbXBsYXRlbmFtZSxcblx0XHRcdFx0bGlua2VkYXJ0aWNsZSxcblx0XHRcdFx0aW5wdXQucmVhc29uLFxuXHRcdFx0XHRpbnB1dC5tYWluX2dyb3VwID09PSAnY3VzdG9tJ1xuXHRcdFx0KTtcblx0XHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKHRlbXBsYXRldGV4dCwgYFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0XHR9LFxuXG5cdFx0Ly8gSnVzdCBhIHBhc3MtdGhyb3VnaCB1bmxlc3MgdGhlIGF1dG9sZXZlbCBvcHRpb24gd2FzIHNlbGVjdGVkXG5cdFx0cHJldmlldzogKGZvcm0pID0+IHtcblx0XHRcdGlmIChmb3JtLm1haW5fZ3JvdXAudmFsdWUgPT09ICdhdXRvbGV2ZWwnKSB7XG5cdFx0XHRcdC8vIEFsd2F5cyBnZXQgYSBuZXcsIHVwZGF0ZWQgdGFsa3BhZ2UgZm9yIGF1dG9sZXZlbCBwcm9jZXNzaW5nXG5cdFx0XHRcdGNvbnN0IHVzZXJ0YWxrX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWAsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDovb3kuIrmrKHorablkYonLCAn6LyJ5YWl5LiK5qyh6K2m5ZGKJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dXNlcnRhbGtfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdC8vIFdpbGwgZmFpbCBzaWxlbnRseSBpZiB0aGUgdGFsayBwYWdlIGlzIGEgY3Jvc3MtbnMgcmVkaXJlY3QsXG5cdFx0XHRcdC8vIHJlbW92YWwgb2YgdGhlIHByZXZpZXcgYm94IGhhbmRsZWQgd2hlbiBsb2FkaW5nIHRoZSBtZW51XG5cdFx0XHRcdHVzZXJ0YWxrX3BhZ2UubG9hZCgocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaiA9IHBhZ2VvYmo7IC8vIFVwZGF0ZSB0YWxrcGFnZU9ialxuXHRcdFx0XHRcdGNvbnN0IHdpa2l0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRcdC8vIGhpc3Rvcnkgbm90IG5lZWRlZCBmb3IgYXV0b2xldmVsXG5cdFx0XHRcdFx0Y29uc3QgW2xhdGVzdF0gPSBUd2lua2xlLndhcm4uY2FsbGJhY2tzLmRhdGVQcm9jZXNzaW5nKHdpa2l0ZXh0KTtcblx0XHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRzdWJfZ3JvdXA6IGZvcm0uc3ViX2dyb3VwLnZhbHVlLFxuXHRcdFx0XHRcdFx0YXJ0aWNsZTogZm9ybS5hcnRpY2xlLnZhbHVlLFxuXHRcdFx0XHRcdFx0bWVzc2FnZURhdGE6ICQoZm9ybS5zdWJfZ3JvdXApXG5cdFx0XHRcdFx0XHRcdC5maW5kKGBvcHRpb25bdmFsdWU9XCIkeyQoZm9ybS5zdWJfZ3JvdXApLnZhbCgpfVwiXWApXG5cdFx0XHRcdFx0XHRcdC5kYXRhKCdtZXNzYWdlRGF0YScpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Y29uc3QgW3RlbXBsYXRlXSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuYXV0b2xldmVsUGFyc2VXaWtpdGV4dCh3aWtpdGV4dCwgcGFyYW1zLCBsYXRlc3QpO1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFja3Muc2hvd1ByZXZpZXcoZm9ybSwgdGVtcGxhdGUpO1xuXHRcdFx0XHRcdC8vIElmIHRoZSB0ZW1wbGF0ZXMgaGF2ZSBkaXZlcmdlZCwgZmFrZSBhIGNoYW5nZSBldmVudFxuXHRcdFx0XHRcdC8vIHRvIHJlbG9hZCB0aGUgbWVudSB3aXRoIHRoZSB1cGRhdGVkIHBhZ2VvYmpcblx0XHRcdFx0XHRpZiAoZm9ybS5zdWJfZ3JvdXAudmFsdWUgIT09IHRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdFx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRcdFx0Zm9ybS5tYWluX2dyb3VwLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5zaG93UHJldmlldyhmb3JtKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFVzZWQgaW4gdGhlIG1haW4gYW5kIGF1dG9sZXZlbCBsb29wcyB0byBkZXRlcm1pbmUgd2hlbiB0byB3YXJuXG5cdFx0ICogYWJvdXQgZXhjZXNzaXZlbHkgcmVjZW50LCBzdGFsZSwgb3IgaWRlbnRpY2FsIHdhcm5pbmdzLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHdpa2l0ZXh0ICBUaGUgdGV4dCBvZiBhIHVzZXIncyB0YWxrIHBhZ2UsIGZyb20gZ2V0UGFnZVRleHQoKVxuXHRcdCAqIEByZXR1cm5zIHtPYmplY3RbXX0gLSBBcnJheSBvZiBvYmplY3RzOiBsYXRlc3QgY29udGFpbnMgbW9zdCByZWNlbnRcblx0XHQgKiB3YXJuaW5nIGFuZCBkYXRlOyBoaXN0b3J5IGxpc3RzIGFsbCBwcmlvciB3YXJuaW5nc1xuXHRcdCAqL1xuXHRcdGRhdGVQcm9jZXNzaW5nOiAod2lraXRleHQpID0+IHtcblx0XHRcdGNvbnN0IGhpc3RvcnlfcmUgPVxuXHRcdFx0XHQvPCEtLVxccz9UZW1wbGF0ZTooW3VVXXctLio/KVxccz8tLT4uKj8oXFxkezR9KeW5tChcXGR7MSwyfSnmnIgoXFxkezEsMn0p5pelIFxcKFvml6XkuIDkuozkuInlm5vkupTlha1dXFwpIChcXGR7MSwyfSk6KFxcZHsxLDJ9KSBcXChDU1RcXCkvZztcblx0XHRcdGNvbnN0IGhpc3RvcnkgPSB7fTtcblx0XHRcdGNvbnN0IGxhdGVzdCA9IHtcblx0XHRcdFx0ZGF0ZTogbmV3IE1vcmViaXRzLmRhdGUoMCksXG5cdFx0XHRcdHR5cGU6ICcnLFxuXHRcdFx0fTtcblx0XHRcdGxldCBjdXJyZW50O1xuXHRcdFx0d2hpbGUgKChjdXJyZW50ID0gaGlzdG9yeV9yZS5leGVjKHdpa2l0ZXh0KSkgIT09IG51bGwpIHtcblx0XHRcdFx0Y29uc3QgWywgdGVtcGxhdGVdID0gY3VycmVudDtcblx0XHRcdFx0Y29uc3QgY3VycmVudF9kYXRlID0gbmV3IE1vcmViaXRzLmRhdGUoXG5cdFx0XHRcdFx0YCR7Y3VycmVudFsyXX0tJHtjdXJyZW50WzNdfS0ke2N1cnJlbnRbNF19ICR7Y3VycmVudFs1XX06JHtjdXJyZW50WzZdfSAoQ1NUKWBcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKCEodGVtcGxhdGUgaW4gaGlzdG9yeSkgfHwgaGlzdG9yeVt0ZW1wbGF0ZV0uaXNCZWZvcmUoY3VycmVudF9kYXRlKSkge1xuXHRcdFx0XHRcdGhpc3RvcnlbdGVtcGxhdGVdID0gY3VycmVudF9kYXRlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghbGF0ZXN0LmRhdGUuaXNBZnRlcihjdXJyZW50X2RhdGUpKSB7XG5cdFx0XHRcdFx0bGF0ZXN0LmRhdGUgPSBjdXJyZW50X2RhdGU7XG5cdFx0XHRcdFx0bGF0ZXN0LnR5cGUgPSB0ZW1wbGF0ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFtsYXRlc3QsIGhpc3RvcnldO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogTWFpbiBsb29wIGZvciBkZWNpZGluZyB3aGF0IHRoZSBsZXZlbCBzaG91bGQgaW5jcmVtZW50IHRvLiBNb3N0IG9mXG5cdFx0ICogdGhpcyBpcyByZWFsbHkganVzdCBlcnJvciBjYXRjaGluZyBhbmQgdXBkYXRpbmcgdGhlIHN1YnNlcXVlbnQgZGF0YS5cblx0XHQgKiBNYXkgcHJvZHVjZSB1cCB0byB0d28gbm90aWNlcyBpbiBhIHR3aW5rbGUtd2Fybi1hdXRvbGV2ZWwtbWVzc2FnZXMgZGl2XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gd2lraXRleHQgIFRoZSB0ZXh0IG9mIGEgdXNlcidzIHRhbGsgcGFnZSwgZnJvbSBnZXRQYWdlVGV4dCgpIChyZXF1aXJlZClcblx0XHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zICBQYXJhbXMgb2JqZWN0OiBzdWJfZ3JvdXAgaXMgdGhlIHRlbXBsYXRlIChyZXF1aXJlZCk7XG5cdFx0ICogYXJ0aWNsZSBpcyB0aGUgdXNlci1wcm92aWRlZCBhcnRpY2xlIChmb3JtLmFydGljbGUpIHVzZWQgdG8gbGluayBBUlYgb24gcmVjZW50IGxldmVsMiB3YXJuaW5ncztcblx0XHQgKiBtZXNzYWdlRGF0YSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiBnZXR0aW5nIHRoZSBmdWxsIHRlbXBsYXRlLCBhcyBpdCdzXG5cdFx0ICogdXNlZCB0byBlbnN1cmUgYSB2YWxpZCB0ZW1wbGF0ZSBvZiB0aGF0IGxldmVsIGV4aXN0c1xuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBsYXRlc3QgIEZpcnN0IGVsZW1lbnQgb2YgdGhlIGFycmF5IHJldHVybmVkIGZyb21cblx0XHQgKiBkYXRlUHJvY2Vzc2luZy4gUHJvdmlkZWQgaGVyZSByYXRoZXIgdGhhbiBwcm9jZXNzZWQgd2l0aGluIHRvIGF2b2lkXG5cdFx0ICogcmVwZWF0ZWQgY2FsbCB0byBkYXRlUHJvY2Vzc2luZ1xuXHRcdCAqIEBwYXJhbSB7KERhdGV8TW9yZWJpdHMuZGF0ZSl9IGRhdGUgIERhdGUgZnJvbSB3aGljaCBzdGFsZW5lc3MgaXMgZGV0ZXJtaW5lZFxuXHRcdCAqIEBwYXJhbSB7TW9yZWJpdHMuc3RhdHVzfSBzdGF0ZWxlbSAgU3RhdHVzIGVsZW1lbnQsIG9ubHkgdXNlZCBmb3IgaGFuZGxpbmcgZXJyb3IgaW4gZmluYWwgZXhlY3V0aW9uXG5cdFx0ICpcblx0XHQgKiBAcmV0dXJucyB7QXJyYXl9IC0gQXJyYXkgdGhhdCBjb250YWlucyB0aGUgZnVsbCB0ZW1wbGF0ZSBhbmQganVzdCB0aGUgd2FybmluZyBsZXZlbFxuXHRcdCAqL1xuXHRcdGF1dG9sZXZlbFBhcnNlV2lraXRleHQ6ICh3aWtpdGV4dCwgcGFyYW1zLCBsYXRlc3QsIGRhdGUsIHN0YXRlbGVtKSA9PiB7XG5cdFx0XHRsZXQgbGV2ZWw7IC8vIHVuZGVmaW5lZCByYXRoZXIgdGhhbiAnJyBtZWFucyB0aGUgaXNOYU4gYmVsb3cgd2lsbCByZXR1cm4gdHJ1ZVxuXHRcdFx0aWYgKC9cXGQ/JC8udGVzdChsYXRlc3QudHlwZSkpIHtcblx0XHRcdFx0Ly8gbGV2ZWwxLTJcblx0XHRcdFx0bGV2ZWwgPSBOdW1iZXIucGFyc2VJbnQobGF0ZXN0LnR5cGUucmVwbGFjZSgvLiooXFxkKT8kLywgJyQxJyksIDEwKTtcblx0XHRcdH0gZWxzZSBpZiAobGF0ZXN0LnR5cGUpIHtcblx0XHRcdFx0bGV2ZWwgPSAxOyAvLyBzaW5nbGVub3RpY2Ugb3Igbm90IGZvdW5kXG5cdFx0XHR9XG5cdFx0XHRjb25zdCAkYXV0b2xldmVsTWVzc2FnZSA9ICQoJzxkaXY+JykuYXR0cignaWQnLCAndHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJyk7XG5cdFx0XHRpZiAoTnVtYmVyLmlzTmFOKGxldmVsKSkge1xuXHRcdFx0XHQvLyBObyBwcmlvciB3YXJuaW5ncyBmb3VuZCwgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRcdFx0bGV2ZWwgPSAxO1xuXHRcdFx0fSBlbHNlIGlmIChsZXZlbCA+IDIgfHwgbGV2ZWwgPCAxKSB7XG5cdFx0XHRcdC8vIFNob3VsZG4ndCBoYXBwZW5cblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5peg5rOV6Kej5p6Q5LiK5qyh55qE6K2m5ZGK5bGC57qn77yM6K+35omL5Yqo6YCJ5oup5LiA5Liq6K2m5ZGK5bGC57qn44CCJyxcblx0XHRcdFx0XHQn54Sh5rOV6Kej5p6Q5LiK5qyh55qE6K2m5ZGK5bGk57Sa77yM6KuL5omL5YuV6YG45pOH5LiA5YCL6K2m5ZGK5bGk57Sa44CCJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoc3RhdGVsZW0pIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcihtZXNzYWdlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRtdy5ub3RpZnkobWVzc2FnZSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXdhcm4nLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGUgfHw9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdGNvbnN0IGF1dG9UaW1lb3V0ID0gbmV3IE1vcmViaXRzLmRhdGUobGF0ZXN0LmRhdGUuZ2V0VGltZSgpKS5hZGQoXG5cdFx0XHRcdFx0TnVtYmVyLnBhcnNlSW50KFR3aW5rbGUuZ2V0UHJlZignYXV0b2xldmVsU3RhbGVEYXlzJyksIDEwKSxcblx0XHRcdFx0XHQnZGF5J1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoYXV0b1RpbWVvdXQuaXNBZnRlcihkYXRlKSkge1xuXHRcdFx0XHRcdGlmIChsZXZlbCA9PT0gMikge1xuXHRcdFx0XHRcdFx0bGV2ZWwgPSAyO1xuXHRcdFx0XHRcdFx0Ly8gQmFzaWNhbGx5IGluZGljYXRlcyB3aGV0aGVyIHdlJ3JlIGluIHRoZSBmaW5hbCBNYWluIGV2YWx1YXRpb24gb3Igbm90LFxuXHRcdFx0XHRcdFx0Ly8gYW5kIHRodXMgd2hldGhlciB3ZSBjYW4gY29udGludWUgb3IgbmVlZCB0byBkaXNwbGF5IHRoZSB3YXJuaW5nIGFuZCBsaW5rXG5cdFx0XHRcdFx0XHRpZiAoIXN0YXRlbGVtKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0ICRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICcjJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WNleWHu+atpOWkhOaJk+W8gOWRiueKtuW3peWFtycsICfpu57mk4rmraTomZXmiZPplovlkYrni4Dlt6XlhbcnKSlcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdmb250LXdlaWdodCcsICdib2xkJylcblx0XHRcdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS53YXJuLmRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS5hcnYuY2FsbGJhY2socmVsZXZhbnRVc2VyTmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHQkYm9keS5maW5kKCdpbnB1dFtuYW1lPXBhZ2VdJykudmFsKHBhcmFtcy5hcnRpY2xlKTsgLy8gVGFyZ2V0IHBhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdCRib2R5LmZpbmQoJ2lucHV0W3ZhbHVlPWZpbmFsXScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsgLy8gVmFuZGFsaXNtIGFmdGVyIGZpbmFsXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhdHVzTm9kZSA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdjb2xvcicsICcjZjAwJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdHJlbGV2YW50VXNlck5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjuaUtuWIsOS6huS4gOS4quWxgue6pzLorablkYrvvIgnLCAn5pyA5b6M5pS25Yiw5LqG5LiA5YCL5bGk57SaMuitpuWRiu+8iCcpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGF0ZXN0LnR5cGUgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ie+8jOaJgOS7peWwhuWFtuaKpeWRiue7meeuoeeQhuS6uuWRmOS8muavlOi+g+Wlve+8mycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ie+8jOaJgOS7peWwh+WFtuWgseWRiue1pueuoeeQhuS6uuWToeacg+avlOi8g+Wlve+8mydcblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHN0YXR1c05vZGUuYXBwZW5kKCRsaW5rWzBdKTtcblx0XHRcdFx0XHRcdFx0JGF1dG9sZXZlbE1lc3NhZ2UuYXBwZW5kKHN0YXR1c05vZGUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBBdXRvbWF0aWNhbGx5IGluY3JlYXNlIHNldmVyaXR5XG5cdFx0XHRcdFx0XHRsZXZlbCArPSAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBSZXNldCB3YXJuaW5nIGxldmVsIGlmIG1vc3QtcmVjZW50IHdhcm5pbmcgaXMgdG9vIG9sZFxuXHRcdFx0XHRcdGxldmVsID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0JGF1dG9sZXZlbE1lc3NhZ2UucHJlcGVuZChcblx0XHRcdFx0JChcblx0XHRcdFx0XHRgPGRpdj4ke3dpbmRvdy53Z1VMUygn5bCG5Y+R6YCBJywgJ+Wwh+eZvOmAgScpfTxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bGC57qnJyxcblx0XHRcdFx0XHRcdCflsaTntJonXG5cdFx0XHRcdFx0KX0ke2xldmVsfTwvc3Bhbj7orablkYrmqKHmnb/jgII8L2Rpdj5gXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHQvLyBQbGFjZSBhZnRlciB0aGUgc3RhbGUgYW5kIG90aGVyLXVzZXItcmV2ZXJ0ZWQgKHRleHQtb25seSkgbWVzc2FnZXNcblx0XHRcdCRib2R5LmZpbmQoJyN0d2lua2xlLXdhcm4tYXV0b2xldmVsLW1lc3NhZ2UnKS5yZW1vdmUoKTsgLy8gY2xlYW4gc2xhdGVcblx0XHRcdCRhdXRvbGV2ZWxNZXNzYWdlLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyN0d2lua2xlLXdhcm4td2FybmluZy1tZXNzYWdlcycpKTtcblx0XHRcdGxldCB0ZW1wbGF0ZSA9IHBhcmFtcy5zdWJfZ3JvdXAucmVwbGFjZSgvKC4qKVxcZCQvLCAnJDEnKTtcblx0XHRcdC8vIFZhbGlkYXRlIHdhcm5pbmcgbGV2ZWwsIGZhbGxpbmcgYmFjayB0byB0aGUgdXctZ2VuZXJpYyBzZXJpZXMuXG5cdFx0XHQvLyBPbmx5IGEgZmV3IGl0ZW1zIGFyZSBtaXNzaW5nIGEgbGV2ZWwsIGFuZCBpbiBhbGwgYnV0IGEgaGFuZGZ1bFxuXHRcdFx0Ly8gb2YgY2FzZXMsIHRoZSB1dy1nZW5lcmljIHNlcmllcyBpcyBleHBsaWNpdGx5IHVzZWQgZWxzZXdoZXJlLlxuXHRcdFx0aWYgKHBhcmFtcy5tZXNzYWdlRGF0YSAmJiAhcGFyYW1zLm1lc3NhZ2VEYXRhW2BsZXZlbCR7bGV2ZWx9YF0pIHtcblx0XHRcdFx0dGVtcGxhdGUgPSAndXctZ2VuZXJpYyc7XG5cdFx0XHR9XG5cdFx0XHR0ZW1wbGF0ZSArPSBsZXZlbDtcblx0XHRcdHJldHVybiBbdGVtcGxhdGUsIGxldmVsXTtcblx0XHR9LFxuXHRcdG1haW46IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRsZXQge21lc3NhZ2VEYXRhfSA9IHBhcmFtcztcblx0XHRcdGNvbnN0IHdhcm5pbmdIaXN0b3J5ID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5kYXRlUHJvY2Vzc2luZyh0ZXh0KTtcblx0XHRcdGNvbnN0IFtsYXRlc3QsIGhpc3RvcnldID0gd2FybmluZ0hpc3Rvcnk7XG5cdFx0XHRjb25zdCBub3cgPSBuZXcgTW9yZWJpdHMuZGF0ZShwYWdlb2JqLmdldExvYWRUaW1lKCkpO1xuXHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqLCBqdXN0IGluIGNhc2Vcblx0XHRcdGlmIChwYXJhbXMubWFpbl9ncm91cCA9PT0gJ2F1dG9sZXZlbCcpIHtcblx0XHRcdFx0Ly8gW3RlbXBsYXRlLCBsZXZlbF1cblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVBbmRMZXZlbCA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuYXV0b2xldmVsUGFyc2VXaWtpdGV4dChcblx0XHRcdFx0XHR0ZXh0LFxuXHRcdFx0XHRcdHBhcmFtcyxcblx0XHRcdFx0XHRsYXRlc3QsXG5cdFx0XHRcdFx0bm93LFxuXHRcdFx0XHRcdHN0YXRlbGVtXG5cdFx0XHRcdCk7XG5cdFx0XHRcdC8vIE9ubHkgaWYgdGhlcmUncyBhIGNoYW5nZSBmcm9tIHRoZSBwcmlvciBkaXNwbGF5L2xvYWRcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAgIT09IHRlbXBsYXRlQW5kTGV2ZWxbMF0gJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Y+R6YCB57uZ55So5oi3e3snLCAn5bCH55m86YCB57Wm5L2/55So6ICFe3snKSArXG5cdFx0XHRcdFx0XHRcdHRlbXBsYXRlQW5kTGV2ZWxbMF0gK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ3195qih5p2/77yM5aW95ZCX77yfJywgJ3195qih5p2/77yM5aW95ZeO77yfJylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raIJywgJ+S9v+eUqOiAheWPlua2iCcpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gVXBkYXRlIHBhcmFtcyBub3cgdGhhdCB3ZSd2ZSBzZWxlY3RlZCBhIHdhcm5pbmdcblx0XHRcdFx0W3BhcmFtcy5zdWJfZ3JvdXBdID0gdGVtcGxhdGVBbmRMZXZlbDtcblx0XHRcdFx0bWVzc2FnZURhdGEgPSBwYXJhbXMubWVzc2FnZURhdGFbYGxldmVsJHt0ZW1wbGF0ZUFuZExldmVsWzFdfWBdO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0cGFyYW1zLnN1Yl9ncm91cCBpbiBoaXN0b3J5ICYmXG5cdFx0XHRcdG5ldyBNb3JlYml0cy5kYXRlKGhpc3RvcnlbcGFyYW1zLnN1Yl9ncm91cF0pLmFkZCgxLCAnZGF5JykuaXNBZnRlcihub3cpICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+RMjTlsI/ml7blhoXkuIDkuKrlkIzmoLfnmoQgJywgJ+i/kTI05bCP5pmC5YWn5LiA5YCL5ZCM5qij55qEICcpICtcblx0XHRcdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5qih5p2/5bey6KKr5Y+R5Ye644CCXFxu5piv5ZCm57un57ut77yfJywgJyDmqKHmnb/lt7Looqvnmbzlh7rjgIJcXG7mmK/lkKbnubznuozvvJ8nKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflj5bmtognLCAn5L2/55So6ICF5Y+W5raIJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsYXRlc3QuZGF0ZS5hZGQoMSwgJ21pbnV0ZScpOyAvLyBhZnRlciBsb25nIGRlYmF0ZSwgb25lIG1pbnV0ZSBpcyBtYXhcblx0XHRcdGlmIChcblx0XHRcdFx0bGF0ZXN0LmRhdGUuaXNBZnRlcihub3cpICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+RMeWIhumSn+WGhSAnLCAn6L+RMeWIhumQmOWFpyAnKSArXG5cdFx0XHRcdFx0XHRsYXRlc3QudHlwZSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmqKHmnb/lt7Looqvlj5Hlh7rjgIJcXG7mmK/lkKbnu6fnu63vvJ8nLCAnIOaooeadv+W3suiiq+eZvOWHuuOAglxcbuaYr+WQpue5vOe6jO+8nycpXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iCcsICfkvb/nlKjogIXlj5bmtognKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGJ1aWxkIHRoZSBlZGl0IHN1bW1hcnlcblx0XHRcdC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSBnZW5lcmF0aW9uIG9mIHN1bW1hcnkgcHJlZml4IGZvciBjdXN0b20gdGVtcGxhdGVzXG5cdFx0XHRjb25zdCBjdXN0b21Qcm9jZXNzID0gKHRlbXBsYXRlKSA9PiB7XG5cdFx0XHRcdFt0ZW1wbGF0ZV0gPSB0ZW1wbGF0ZS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRsZXQgcHJlZml4O1xuXHRcdFx0XHRzd2l0Y2ggKHRlbXBsYXRlLnNsaWNlKC0xKSkge1xuXHRcdFx0XHRcdGNhc2UgJzEnOlxuXHRcdFx0XHRcdFx0cHJlZml4ID0gJ+azqOaEjyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICcyJzpcblx0XHRcdFx0XHRcdHByZWZpeCA9ICforablkYonO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Ly8gZmFsbHMgdGhyb3VnaFxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRwcmVmaXggPSAn5o+Q6YaSJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBgJHtwcmVmaXh977yaJHtNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIobWVzc2FnZURhdGEubGFiZWwpfWA7XG5cdFx0XHR9O1xuXHRcdFx0bGV0IHN1bW1hcnk7XG5cdFx0XHRpZiAocGFyYW1zLm1haW5fZ3JvdXAgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdHN1bW1hcnkgPSBjdXN0b21Qcm9jZXNzKHBhcmFtcy5zdWJfZ3JvdXApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gTm9ybWFsaXplIGtpdGNoZW5zaW5rIHRvIHRoZSAxLTIgc3R5bGVcblx0XHRcdFx0aWYgKHBhcmFtcy5tYWluX2dyb3VwID09PSAna2l0Y2hlbnNpbmsnICYmICEvXkQrJC8udGVzdChwYXJhbXMuc3ViX2dyb3VwKSkge1xuXHRcdFx0XHRcdGxldCBzdWIgPSBwYXJhbXMuc3ViX2dyb3VwLnNsaWNlKC0xKTtcblx0XHRcdFx0XHRpZiAoc3ViID09PSAnbScpIHtcblx0XHRcdFx0XHRcdHN1YiA9IHBhcmFtcy5zdWJfZ3JvdXAuc2xpY2UoLTMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBEb24ndCBvdmVyd3JpdGUgdXctM3JyLCB0ZWNobmljYWxseSB1bm5lY2Vzc2FyeVxuXHRcdFx0XHRcdGlmICgvXFxkLy50ZXN0KHN1YikpIHtcblx0XHRcdFx0XHRcdHBhcmFtcy5tYWluX2dyb3VwID0gYGxldmVsJHtzdWJ9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gc2luZ2xldCB8fCBsZXZlbDEtMiwgbm8gbmVlZCB0byAvXlxcRCskLy50ZXN0KHBhcmFtcy5tYWluX2dyb3VwKVxuXHRcdFx0XHRzdW1tYXJ5ID1cblx0XHRcdFx0XHRtZXNzYWdlRGF0YS5zdW1tYXJ5IHx8IChtZXNzYWdlRGF0YVtwYXJhbXMubWFpbl9ncm91cF0gJiYgbWVzc2FnZURhdGFbcGFyYW1zLm1haW5fZ3JvdXBdLnN1bW1hcnkpO1xuXHRcdFx0XHQvLyBOb3QgaW4gVHdpbmtsZS53YXJuLm1lc3NhZ2VzLCBhc3N1bWUgY3VzdG9tIHRlbXBsYXRlXG5cdFx0XHRcdHN1bW1hcnkgfHw9IGN1c3RvbVByb2Nlc3MocGFyYW1zLnN1Yl9ncm91cCk7XG5cdFx0XHRcdGlmIChtZXNzYWdlRGF0YS5zdXBwcmVzc0FydGljbGVJblN1bW1hcnkgIT09IHRydWUgJiYgcGFyYW1zLmFydGljbGUpIHtcblx0XHRcdFx0XHRpZiAocGFyYW1zLnN1Yl9ncm91cCA9PT0gJ3V3LWFpdicpIHtcblx0XHRcdFx0XHRcdC8vIHRoZXNlIHRlbXBsYXRlcyByZXF1aXJlIGEgdXNlcm5hbWVcblx0XHRcdFx0XHRcdHN1bW1hcnkgKz0gYO+8iCR7d2luZG93LndnVUxTKCflr7nkuo4nLCAn5bCN5pa8Jyl9W1tVc2VyOiR7cGFyYW1zLmFydGljbGV9XV3vvIlgO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLnN1Yl9ncm91cCA9PT0gJ3V3LWJpdGUnKSB7XG5cdFx0XHRcdFx0XHQvLyB0aGlzIHRlbXBsYXRlIHJlcXVpcmVzIGEgdXNlcm5hbWVcblx0XHRcdFx0XHRcdHN1bW1hcnkgKz0gYO+8jCR7d2luZG93LndnVUxTKCfkuo4nLCAn5pa8Jyl9W1tVc2VyIHRhbGs6JHtwYXJhbXMuYXJ0aWNsZX1dXWA7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN1bW1hcnkgKz0gYCR7d2luZG93LndnVUxTKCfvvIzkuo5bWycsICfvvIzmlrxbWycpICsgcGFyYW1zLmFydGljbGV9XV1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFdhcm5pbmdzJykpO1xuXHRcdFx0Ly8gR2V0IGFjdHVhbCB3YXJuaW5nIHRleHRcblx0XHRcdGNvbnN0IHdhcm5pbmdUZXh0ID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5nZXRXYXJuaW5nV2lraXRleHQoXG5cdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAsXG5cdFx0XHRcdHBhcmFtcy5hcnRpY2xlLFxuXHRcdFx0XHRwYXJhbXMucmVhc29uLFxuXHRcdFx0XHRwYXJhbXMubWFpbl9ncm91cCA9PT0gJ2N1c3RvbSdcblx0XHRcdCk7XG5cdFx0XHRsZXQgc2VjdGlvbkV4aXN0cyA9IGZhbHNlO1xuXHRcdFx0bGV0IHNlY3Rpb25OdW1iZXIgPSAwO1xuXHRcdFx0Ly8gT25seSBjaGVjayBzZWN0aW9ucyBpZiB0aGVyZSBhcmUgc2VjdGlvbnMgb3IgdGhlcmUncyBhIGNoYW5jZSB3ZSB3b24ndCBjcmVhdGUgb3VyIG93blxuXHRcdFx0aWYgKCFtZXNzYWdlRGF0YS5oZWFkaW5nICYmIHRleHQubGVuZ3RoKSB7XG5cdFx0XHRcdC8vIEdldCBhbGwgc2VjdGlvbnNcblx0XHRcdFx0Y29uc3Qgc2VjdGlvbnMgPSB0ZXh0Lm1hdGNoKC9eKD09KikuK1xcMS9nbSk7XG5cdFx0XHRcdGlmIChzZWN0aW9ucyAmJiBzZWN0aW9ucy5sZW5ndGggIT09IDApIHtcblx0XHRcdFx0XHQvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgc2VjdGlvbiBoZWFkZXIgaW4gcXVlc3Rpb25cblx0XHRcdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBub3cubW9udGhIZWFkZXJSZWdleCgpO1xuXHRcdFx0XHRcdHNlY3Rpb25OdW1iZXIgPSAwO1xuXHRcdFx0XHRcdC8vIEZpbmQgdGhpcyBtb250aCdzIHNlY3Rpb24gYW1vbmcgTDIgc2VjdGlvbnMsIHByZWZlcnJpbmcgdGhlIGJvdHRvbS1tb3N0XG5cdFx0XHRcdFx0c2VjdGlvbkV4aXN0cyA9IHNlY3Rpb25zLnJldmVyc2UoKS5zb21lKChzZWMsIGlkeCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0L14oPT0pW149XS4rXFwxL20udGVzdChzZWMpICYmXG5cdFx0XHRcdFx0XHRcdGRhdGVIZWFkZXJSZWdleC50ZXN0KHNlYykgJiZcblx0XHRcdFx0XHRcdFx0dHlwZW9mIChzZWN0aW9uTnVtYmVyID0gc2VjdGlvbnMubGVuZ3RoIC0gMSAtIGlkeCkgPT09ICdudW1iZXInXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2VjdGlvbkV4aXN0cykge1xuXHRcdFx0XHQvLyBhcHBlbmQgdG8gZXhpc3Rpbmcgc2VjdGlvblxuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VTZWN0aW9uKHNlY3Rpb25OdW1iZXIgKyAxKTtcblx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KGBcXG5cXG4ke3dhcm5pbmdUZXh0fWApO1xuXHRcdFx0XHRwYWdlb2JqLmFwcGVuZCgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKG1lc3NhZ2VEYXRhLmhlYWRpbmcpIHtcblx0XHRcdFx0XHQvLyBjcmVhdGUgbmV3IHNlY3Rpb25cblx0XHRcdFx0XHRwYWdlb2JqLnNldE5ld1NlY3Rpb25UaXRsZShtZXNzYWdlRGF0YS5oZWFkaW5nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnKrmib7liLDlvZPmnIjnmoTkuoznuqfmoIfpopjvvIzlsIbliJvlu7rmlrDnmoQnLCAn5pyq5om+5Yiw55W25pyI55qE5LqM57Sa5qiZ6aGM77yM5bCH5bu656uL5paw55qEJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHBhZ2VvYmouc2V0TmV3U2VjdGlvblRpdGxlKG5vdy5tb250aEhlYWRlcigwKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFnZW9iai5zZXROZXdTZWN0aW9uVGV4dCh3YXJuaW5nVGV4dCk7XG5cdFx0XHRcdHBhZ2VvYmoubmV3U2VjdGlvbigpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgdXNlclRhbGtQYWdlID0gYFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9YDtcblx0XHQvLyByZWFzb24sIG1haW5fZ3JvdXAsIHN1Yl9ncm91cCwgYXJ0aWNsZVxuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZS50YXJnZXQpO1xuXHRcdGlmIChwYXJhbXMuYXJ0aWNsZSkge1xuXHRcdFx0aWYgKC9odHRwcz86XFwvXFwvLy50ZXN0KHBhcmFtcy5hcnRpY2xlKSkge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfigJzpobXpnaLpk77mjqXigJ3kuI3og73kvb/nlKjnvZHlnYDjgIInLCAn44CM6aCB6Z2i6YCj57WQ44CN5LiN6IO95L2/55So57ay5Z2A44CCJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnd2FybicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBhcnRpY2xlID0gbmV3IG13LlRpdGxlKHBhcmFtcy5hcnRpY2xlKTtcblx0XHRcdFx0cGFyYW1zLmFydGljbGUgPSBhcnRpY2xlLmdldFByZWZpeGVkVGV4dCgpO1xuXHRcdFx0XHRpZiAoYXJ0aWNsZS5nZXRGcmFnbWVudCgpKSB7XG5cdFx0XHRcdFx0cGFyYW1zLmFydGljbGUgKz0gYCMke2FydGljbGUuZ2V0RnJhZ21lbnQoKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0YWxlcnQoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+KAnOmhtemdoumTvuaOpeKAneS4jeWQiOazle+8jOS7heiDvei+k+WFpeS4gOS4qumhtemdouWQjeensO+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZm44CCJyxcblx0XHRcdFx0XHRcdCfjgIzpoIHpnaLpgKPntZDjgI3kuI3lkIjms5XvvIzlg4Xog73ovLjlhaXkuIDlgIvpoIHpnaLlkI3nqLHvvIzli7/kvb/nlKjntrLlnYDjgIFbWyBdXe+8jOWPr+S9v+eUqFNwZWNpYWw6RGlmZuOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gVGhlIGF1dG9sZXZlbCBvcHRpb24gd2lsbCBhbHJlYWR5IGtub3cgYnkgbm93IGlmIGEgdXNlciB0YWxrIHBhZ2Vcblx0XHQvLyBpcyBhIGNyb3NzLW5hbWVzcGFjZSByZWRpcmVjdCAodmlhICEhVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqKSwgc29cblx0XHQvLyB0ZWNobmljYWxseSB3ZSBjb3VsZCBhbGVydCBhbiBlcnJvciBoZXJlLCBidXQgdGhlIHVzZXIgd2lsbCBoYXZlXG5cdFx0Ly8gYWxyZWFkeSBpZ25vcmVkIHRoZSBib2xkIHJlZCBlcnJvciBhYm92ZS4gTW9yZW92ZXIsIHRoZXkgcHJvYmFibHlcblx0XHQvLyAqZG9uJ3QqIHdhbnQgdG8gYWN0dWFsbHkgaXNzdWUgYSB3YXJuaW5nLCBzbyB0aGUgZXJyb3IgaGFuZGxpbmdcblx0XHQvLyBhZnRlciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgaXMgcHJvYmFibHkgcHJlZmVyYWJsZVxuXHRcdC8vIEZpbmQgdGhlIHNlbGVjdGVkIDxvcHRpb24+IGVsZW1lbnQgc28gd2UgY2FuIGZldGNoIHRoZSBkYXRhIHN0cnVjdHVyZVxuXHRcdGNvbnN0ICRzZWxlY3RlZEVsID0gJChlLnRhcmdldC5zdWJfZ3JvdXApLmZpbmQoYG9wdGlvblt2YWx1ZT1cIiR7JChlLnRhcmdldC5zdWJfZ3JvdXApLnZhbCgpfVwiXWApO1xuXHRcdHBhcmFtcy5tZXNzYWdlRGF0YSA9ICRzZWxlY3RlZEVsLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0aWYgKHBhcmFtcy5tZXNzYWdlRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fpgInmi6norablkYrmqKHmnb/jgIInLCAn6KuL6YG45pOH6K2m5ZGK5qih5p2/44CCJyksIHtcblx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHR0YWc6ICd3YXJuJyxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHVzZXJUYWxrUGFnZTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+itpuWRiuWujOaIkO+8jOWwhuWcqOWHoOenkuWQjuWIt+aWsCcsICforablkYrlrozmiJDvvIzlsIflnKjlub7np5Llvozph43mlrDmlbTnkIYnKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0dXNlclRhbGtQYWdlLFxuXHRcdFx0d2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobXkv67mlLknLCAn5L2/55So6ICF6KiO6KuW6aCB5L+u5pS5Jylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUud2Fybi5jYWxsYmFja3MubWFpbik7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUud2FybiwgJ3dhcm4nKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBuby1qcXVlcnkvbm8tbWFwLXV0aWwgKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge2luaXRNd0FwaX0gZnJvbSAnZXh0LmdhZGdldC5VdGlsJztcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmxvY2suanMgKi9cbihmdW5jdGlvbiB0d2lua2xlYmxvY2soJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0Y29uc3QgYXBpID0gaW5pdE13QXBpKCdtb3JlYml0cy5qczsgVHdpbmtsZS8xLjEnKTtcblx0bGV0IHJlbGV2YW50VXNlck5hbWU7XG5cdGxldCBibG9ja2VkVXNlck5hbWU7XG5cdGNvbnN0IG1lbnVGb3JtYXR0ZWROYW1lc3BhY2VzID0ge1xuXHRcdC4uLm13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpLFxuXHR9O1xuXHRtZW51Rm9ybWF0dGVkTmFtZXNwYWNlc1swXSA9IHdpbmRvdy53Z1VMUygn77yI5p2h55uu77yJJywgJ++8iOaineebru+8iScpO1xuXHRjb25zdCBibG9ja0FjdGlvblRleHQgPSB7XG5cdFx0YmxvY2s6IHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpLFxuXHRcdHJlYmxvY2s6IHdpbmRvdy53Z1VMUygn6YeN5paw5bCB56aBJywgJ+mHjeaWsOWwgemOlicpLFxuXHRcdHVuYmxvY2s6IHdpbmRvdy53Z1VMUygn6Kej6Zmk5bCB56aBJywgJ+ino+mZpOWwgemOlicpLFxuXHR9O1xuXHQvKipcblx0ICogdHdpbmtsZWJsb2NrLmpzOiBCbG9jayBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiQmxvY2tcIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicywgZXRjLilcblx0ICovXG5cdFR3aW5rbGUuYmxvY2sgPSAoKSA9PiB7XG5cdFx0cmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdC8vIHNob3VsZCBzaG93IG9uIENvbnRyaWJ1dGlvbnMgb3IgQmxvY2sgcGFnZXMsIGFueXdoZXJlIHRoZXJlJ3MgYSByZWxldmFudCB1c2VyXG5cdFx0Ly8gSWdub3JlIHJhbmdlcyB3aWRlciB0aGFuIHRoZSBDSURSIGxpbWl0XG5cdFx0Ly8gRW5hYmxlIGZvciBub24tYWRtaW5zXG5cdFx0aWYgKFxuXHRcdFx0KE1vcmViaXRzLnVzZXJJc1N5c29wIHx8ICFtdy51dGlsLmlzSVBBZGRyZXNzKHJlbGV2YW50VXNlck5hbWUsIHRydWUpKSAmJlxuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSAmJlxuXHRcdFx0KCFNb3JlYml0cy5pcC5pc1JhbmdlKHJlbGV2YW50VXNlck5hbWUpIHx8IE1vcmViaXRzLmlwLnZhbGlkQ0lEUihyZWxldmFudFVzZXJOYW1lKSlcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpLFxuXHRcdFx0XHQndHctYmxvY2snLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgeebuOWFs+eUqOaItycsICflsIHpjpbnm7jpl5zkvb/nlKjogIUnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpICYmXG5cdFx0XHQhY29uZmlybShcblx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmgqjljbPlsIblr7noh6rlt7HmiafooYzlsIHnpoHnm7jlhbPmk43kvZzvvIHnoa7orqTopoHnu6fnu63lkJfvvJ8nLFxuXHRcdFx0XHRcdCfmgqjljbPlsIflsI3oh6rlt7Hln7fooYzlsIHpjpbnm7jpl5zmk43kvZzvvIHnorroqo3opoHnubznuozll47vvJ8nXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvID0gdW5kZWZpbmVkO1xuXHRcdFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucyA9IHt9O1xuXHRcdFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucyA9IHt9O1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjUwLCA1MzApO1xuXHRcdC8vIG5lZWQgdG8gYmUgdmVyYm9zZSBhYm91dCB3aG8gd2UncmUgYmxvY2tpbmdcblx0XHRXaW5kb3cuc2V0VGl0bGUoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgeaIluWQkScsICflsIHpjpbmiJblkJEnKSArIHJlbGV2YW50VXNlck5hbWUgKyB3aW5kb3cud2dVTFMoJ+WPkeWHuuWwgeemgeaooeadvycsICfnmbzlh7rlsIHpjpbmqKHmnb8nKVxuXHRcdCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+WwgeemgeadoeS+iycsICflsIHpjpbmop3kvosnKSwgJ0xJQjpCTE9DSycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCB56aB6K6+572uJywgJ+WwgemOluioreWumicpLCAnSDpUVy9QUkVGI2Jsb2NrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2Jsb2NrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5ibG9jay5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgYWN0aW9uZmllbGQgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pON5L2c57G75Z6LJywgJ+aTjeS9nOmhnuWIpScpLFxuXHRcdH0pO1xuXHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bmFtZTogJ2FjdGlvbnR5cGUnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbixcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeeUqOaItycsICflsIHpjpbkvb/nlKjogIUnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn55So6YCJ5oup55qE6YCJ6aG55YWo56uZ5bCB56aB55u45YWz55So5oi377yM6Iul5pyq5Yu+6YCJ6YOo5YiG5bCB56aB5YiZ5Li65YWo56uZ5bCB56aB44CCJyxcblx0XHRcdFx0XHRcdCfnlKjpgbjmk4fnmoTpgbjpoIXlhajnq5nlsIHpjpbnm7jpl5zkvb/nlKjogIXvvIzoi6XmnKrli77pgbjpg6jliIblsIHpjpbliYfngrrlhajnq5nlsIHpjpbjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0XHRjaGVja2VkOiBNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mDqOWIhuWwgeemgScsICfpg6jliIblsIHpjpYnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BhcnRpYWwnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5ZCv55So6YOo5YiG5bCB56aB5Y+K6YOo5YiG5bCB56aB5qih5p2/44CCJywgJ+WVn+eUqOmDqOWIhuWwgemOluWPiumDqOWIhuWwgemOluaooeadv+OAgicpLFxuXHRcdFx0XHRcdGhpZGRlbjogIU1vcmViaXRzLnVzZXJJc1N5c29wLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVmYXVsdFRvUGFydGlhbEJsb2NrcycpLCAvLyBPdmVycmlkZGVuIGlmIGFscmVhZHkgYmxvY2tlZFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5bCB56aB5qih5p2/5Yiw55So5oi36K6o6K666aG1JywgJ+WKoOWFpeWwgemOluaooeadv+WIsOS9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndGVtcGxhdGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XmiafooYzlsIHnpoHnmoTnrqHnkIblkZjlv5jorrDlj5Hlh7rlsIHnpoHmqKHmnb/vvIzmiJbkvaDlsIHnpoHkuobnlKjmiLfogIzmsqHmnInnu5nlhbblj5Hlh7rmqKHmnb/vvIzliJnkvaDlj6/ku6XnlKjmraTmnaXlj5Hlh7rlkIjpgILnmoTmqKHmnb/jgILli77pgInpg6jliIblsIHnpoHku6Xkvb/nlKjpg6jliIblsIHnpoHmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+iLpeWft+ihjOWwgemOlueahOeuoeeQhuWToeW/mOiomOeZvOWHuuWwgemOluaooeadv++8jOaIluS9oOWwgemOluS6huS9v+eUqOiAheiAjOaykuaciee1puWFtueZvOWHuuaooeadv++8jOWJh+S9oOWPr+S7peeUqOatpOS+hueZvOWHuuWQiOmBqeeahOaooeadv+OAguWLvumBuOmDqOWIhuWwgemOluS7peS9v+eUqOmDqOWIhuWwgemOluaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdoZW4gdmlld2luZyB0aGUgYmxvY2sgZGlhbG9nIG9uIGFuIElQIHJhbmdlXG5cdFx0XHRcdFx0aGlkZGVuOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdFx0Y2hlY2tlZDogTW9yZWJpdHMudXNlcklzU3lzb3AgJiYgIU1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IE1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0YWcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflsIbnlKjmiLfpobXmm7/mjaLmiJDnm7jlhbPnmoTmoIforrDmqKHmnb/vvIzku4XpmZDmsLjkuYXlsIHnpoHkvb/nlKjjgIInLFxuXHRcdFx0XHRcdFx0J+Wwh+S9v+eUqOiAhemggemdouabv+aPm+aIkOebuOmXnOeahOaomeiomOaooeadv++8jOWDhemZkOawuOS5heWwgemOluS9v+eUqOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0XHRjaGVja2VkOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTnlKjmiLfpobUnLCAn5L+d6K235L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcm90ZWN0Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpOeUqOaIt+mhte+8jOS7hemZkOawuOS5heWwgeemgeS9v+eUqOOAgicsICflhajkv53orbfkvb/nlKjogIXpoIHpnaLvvIzlg4XpmZDmsLjkuYXlsIHpjpbkvb/nlKjjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHnlKjmiLcnLCAn6Kej6Zmk5bCB6Y6W5L2/55So6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1bmJsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgeebuOWFs+eUqOaIt+OAgicsICfop6PpmaTlsIHpjpbnm7jpl5zkvb/nlKjogIXjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0LyoqXG5cdFx0ICogQWRkIG9wdGlvbiBmb3IgSVB2NiByYW5nZXMgc21hbGxlciB0aGFuIC82NCB0byB1cGdyYWRlIHRvIHRoZSA2NFxuXHRcdCAqIENJRFIuIFRoaXMgaXMgb25lIG9mIHRoZSBmZXcgcGxhY2VzIHdoZXJlIHdlIHdhbnRcblx0XHQgKiB3Z1JlbGV2YW50VXNlck5hbWUgc2luY2UgdGhpcyBkZXBlbmRzIGVudGlyZWx5IG9uIHRoZSBvcmlnaW5hbCB1c2VyLlxuXHRcdCAqIEluIHRoZW9yeSwgd2Ugc2hvdWxkbid0IHVzZSBNb3JlYml0cy5pcC5nZXQ2NCBoZXJlIHNpbmNlIHNpbmNlIHdlIHdhbnRcblx0XHQgKiB0byBleGNsdWRlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IC82NHMuICBUaGF0J2QgYmU6XG5cdFx0ICogLy8gaWYgKG13LnV0aWwuaXNJUHY2QWRkcmVzcyhtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSwgdHJ1ZSkgJiZcblx0XHQgKiAvLyAobXcudXRpbC5pc0lQdjZBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB8fCBwYXJzZUludChtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKS5yZXBsYWNlKC9eKC4rPylcXC8/KFxcZHsxLDN9KT8kLywgJyQyJyksIDEwKSA+IDY0KSkge1xuXHRcdCAqIEluIHByYWN0aWNlLCB0aG91Z2gsIHNpbmNlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IHJhbmdlcyBhcmVcblx0XHQgKiAobWlzKXRyZWF0ZWQgYXMgc2VwYXJhdGUgYnkgTWVkaWFXaWtpJ3MgbG9nZ2luZyxcblx0XHQgKiB1c2luZyBNb3JlYml0cy5pcC5nZXQ2NCBwcm92aWRlcyBhIG1vZGljdW0gb2YgcmVsaWVmIGluIHRoaXNlIGNhc2UuXG5cdFx0ICovXG5cdFx0Y29uc3Qgc2l4dHlGb3VyID0gTW9yZWJpdHMuaXAuZ2V0NjQobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpO1xuXHRcdGlmIChzaXh0eUZvdXIgJiYgc2l4dHlGb3VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSkge1xuXHRcdFx0Y29uc3QgYmxvY2s2NGZpZWxkID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazmjaLkuLovNjTmrrXlsIHnpoEnLCAn6L2J5o+b54K6LzY05q615bCB6Y6WJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF82NCcsXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0c3R5bGU6ICdtYXJnaW4tYm90dG9tOiAwLjVlbScsXG5cdFx0XHRcdGxhYmVsOiBbd2dVTFMoJ+ebtOaOpeWwgeemgS82NOauteacieebiuaXoOWus+OAgicsICfnm7TmjqXlsIHpjpYvNjTmrrXmnInnm4rnhKHlrrPjgIInKV0sXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnYmxvY2s2NCcsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9ibG9jazY0LFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0VG9CbG9jazY0JyksXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlLnmiJDlsIHnpoEvNjQnLCAn5pS55oiQ5bCB6Y6WLzY0JyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrNjQnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogTW9yZWJpdHMuaXAuaXNSYW5nZShtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSlcblx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+WwhuS4jeS8muWPkemAgeaooeadv+mAmuefpeOAgicsICflsIfkuI3mnIPnmbzpgIHmqKHmnb/pgJrnn6XjgIInKVxuXHRcdFx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5Lu75L2V5qih5p2/5bCG5Lya5Y+R6YCB57uZ5Y6f5aeLSVDvvJonLCAn5Lu75L2V5qih5p2/5bCH5pyD55m86YCB57Wm5Y6f5aeLSVDvvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aooeadv+mAiemhuScsICfmqKHmnb/pgbjpoIUnKSxcblx0XHRcdG5hbWU6ICdmaWVsZF90ZW1wbGF0ZV9vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCJ6aG5JywgJ+WwgemOlumBuOmghScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX2Jsb2NrX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdGFnX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHpgInpobknLCAn6Kej6Zmk5bCB6Y6W6YG46aCFJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdW5ibG9ja19vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRyZXN1bHQucm9vdCA9IHJlc3VsdDtcblx0XHRUd2lua2xlLmJsb2NrLmZldGNoVXNlckluZm8oKCkgPT4ge1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdGNvbnN0ICRmb3JtID0gJChyZXN1bHQpO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGFnXScpLnBhcmVudCgpLCB0cnVlKTtcblx0XHRcdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KFxuXHRcdFx0XHRcdFx0JGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKS5wYXJlbnQoKSxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBUb2dnbGUgaW5pdGlhbCBwYXJ0aWFsIHN0YXRlIGRlcGVuZGluZyBvbiBwcmlvciBibG9jayB0eXBlLFxuXHRcdFx0Ly8gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdFRvUGFydGlhbEJsb2NrcyBwcmVmXG5cdFx0XHRpZiAoYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRcdCQocmVzdWx0KVxuXHRcdFx0XHRcdC5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpXG5cdFx0XHRcdFx0LnByb3AoJ2NoZWNrZWQnLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY2xlYW4gdXAgcHJlc2V0IGRhdGEgKGRlZmF1bHRzLCBldGMuKSwgZG9uZSBleGFjdGx5IG9uY2UsIG11c3QgYmUgYmVmb3JlIFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbiBpcyBjYWxsZWRcblx0XHRcdFR3aW5rbGUuYmxvY2sudHJhbnNmb3JtQmxvY2tQcmVzZXRzKCk7XG5cdFx0XHQvLyBpbml0IHRoZSBjb250cm9scyBhZnRlciB1c2VyIGFuZCBibG9jayBpbmZvIGhhdmUgYmVlbiBmZXRjaGVkXG5cdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0aWYgKHJlc3VsdC5ibG9jazY0ICYmIHJlc3VsdC5ibG9jazY0LmNoZWNrZWQpIHtcblx0XHRcdFx0Ly8gQ2FsbHMgdGhlIHNhbWUgY2hhbmdlX2FjdGlvbiBldmVudCBvbmNlIGZpbmlzaGVkXG5cdFx0XHRcdHJlc3VsdC5ibG9jazY0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdC5hY3Rpb250eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0Ly8gU3RvcmUgZmV0Y2hlZCB1c2VyIGRhdGEsIG9ubHkgcmVsZXZhbnQgaWYgc3dpdGNoaW5nIElQdjYgdG8gYSAvNjRcblx0VHdpbmtsZS5ibG9jay5mZXRjaGVkRGF0YSA9IHt9O1xuXHQvLyBQcm9jZXNzZXMgdGhlIGRhdGEgZnJvbSBhIGEgcXVlcnkgcmVzcG9uc2UsIHNlcGFyYXRlZCBmcm9tXG5cdC8vIFR3aW5rbGUuYmxvY2suZmV0Y2hVc2VySW5mbyB0byBhbGxvdyByZXByb2Nlc3Npbmcgb2YgYWxyZWFkeS1mZXRjaGVkIGRhdGFcblx0VHdpbmtsZS5ibG9jay5wcm9jZXNzVXNlckluZm8gPSAoZGF0YSwgZm4pID0+IHtcblx0XHRsZXQgW2Jsb2NraW5mb10gPSBkYXRhLnF1ZXJ5LmJsb2Nrcztcblx0XHRjb25zdCBbdXNlcmluZm9dID0gZGF0YS5xdWVyeS51c2Vycztcblx0XHQvLyBJZiBhbiBJUCBpcyBibG9ja2VkICphbmQqIHJhbmdlYmxvY2tlZCwgdGhlIGFib3ZlIGZpbmRzXG5cdFx0Ly8gd2hpY2hldmVyIGJsb2NrIGlzIG1vcmUgcmVjZW50LCBub3QgbmVjZXNzYXJpbHkgY29ycmVjdC5cblx0XHQvLyBUaHJlZSBzZWVtcy4uLiB1bmxpa2VseVxuXHRcdGlmIChkYXRhLnF1ZXJ5LmJsb2Nrcy5sZW5ndGggPiAxICYmIGJsb2NraW5mby51c2VyICE9PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRbLCBibG9ja2luZm9dID0gZGF0YS5xdWVyeS5ibG9ja3M7XG5cdFx0fVxuXHRcdC8vIENhY2hlIHJlc3BvbnNlLCB1c2VkIHdoZW4gdG9nZ2xpbmcgLzY0IGJsb2Nrc1xuXHRcdFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbdXNlcmluZm8ubmFtZV0gPSBkYXRhO1xuXHRcdFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkID0gISF1c2VyaW5mby51c2VyaWQ7XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9XG5cdFx0XHRcdCEhdXNlcmluZm8uZ3JvdXBtZW1iZXJzaGlwcyAmJlxuXHRcdFx0XHR1c2VyaW5mby5ncm91cG1lbWJlcnNoaXBzXG5cdFx0XHRcdFx0Lm1hcCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuZ3JvdXA7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuaW5jbHVkZXMoJ2JvdCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9IGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoYmxvY2tpbmZvKSB7XG5cdFx0XHQvLyBoYW5kbGUgZnJ1c3RyYXRpbmcgc3lzdGVtIG9mIGludmVydGVkIGJvb2xlYW4gdmFsdWVzXG5cdFx0XHRibG9ja2luZm8uZGlzYWJsZXRhbGsgPSBibG9ja2luZm8uYWxsb3d1c2VydGFsayA9PT0gdW5kZWZpbmVkO1xuXHRcdFx0YmxvY2tpbmZvLmhhcmRibG9jayA9IGJsb2NraW5mby5hbm9ub25seSA9PT0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHQvLyB3aWxsIHVuZGVmaW5lIGlmIG5vIGJsb2NrcyBwcmVzZW50XG5cdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvID0gYmxvY2tpbmZvO1xuXHRcdGJsb2NrZWRVc2VyTmFtZSA9IFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyAmJiBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8udXNlcjtcblx0XHQvLyBTZW1pLWJ1c3RlZCBvbiByYW5nZXMuXG5cdFx0Ly8gQmFzaWNhbGx5LCBsb2dldmVudHMgZG9lc24ndCB0cmVhdCBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCByYW5nZXNcblx0XHQvLyBhcyBlcXVpdmFsZW50LCBtZWFuaW5nIGFueSBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCBJUCByYW5nZSBpc1xuXHRcdC8vIG1pc2ludGVycHJldGVkIGJ5IHRoZSBsb2cgdGhyb3VnaG91dC4gIFdpdGhvdXQgbG9nZXZlbnRzXG5cdFx0Ly8gcmVkaXJlY3RpbmcgKGxpa2UgU3BlY2lhbDpCbG9jayBkb2VzKSB3ZSB3b3VsZCBuZWVkIGEgZnVuY3Rpb24gdG9cblx0XHQvLyBwYXJzZSByYW5nZXMsIHdoaWNoIGlzIGEgcGFpbi4gIElQVXRpbHMgaGFzIHRoZSBjb2RlLCBidXQgaXQnZCBiZSBhXG5cdFx0Ly8gbG90IG9mIGNydWZ0IGZvciBvbmUgcHVycG9zZS5cblx0XHRUd2lua2xlLmJsb2NrLmhhc0Jsb2NrTG9nID0gISFkYXRhLnF1ZXJ5LmxvZ2V2ZW50cy5sZW5ndGg7XG5cdFx0VHdpbmtsZS5ibG9jay5ibG9ja0xvZyA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgJiYgZGF0YS5xdWVyeS5sb2dldmVudHM7XG5cdFx0Ly8gVXNlZCBsYXRlciB0byBjaGVjayBpZiBibG9jayBzdGF0dXMgY2hhbmdlZCB3aGlsZSBmaWxsaW5nIG91dCB0aGUgZm9ybVxuXHRcdFR3aW5rbGUuYmxvY2suYmxvY2tMb2dJZCA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgPyBkYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5sb2dpZCA6IGZhbHNlO1xuXHRcdGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJldHVybiBmbigpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5mZXRjaFVzZXJJbmZvID0gKGZuKSA9PiB7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGxpc3Q6ICdibG9ja3N8dXNlcnN8bG9nZXZlbnRzJyxcblx0XHRcdGxldHlwZTogJ2Jsb2NrJyxcblx0XHRcdGxlbGltaXQ6IDIsXG5cdFx0XHRsZXRpdGxlOiBgVXNlcjoke3JlbGV2YW50VXNlck5hbWV9YCxcblx0XHRcdGJrcHJvcDogJ2V4cGlyeXxyZWFzb258ZmxhZ3N8cmVzdHJpY3Rpb25zfHJhbmdlfHVzZXInLFxuXHRcdFx0dXN1c2VyczogcmVsZXZhbnRVc2VyTmFtZSxcblx0XHR9O1xuXHRcdC8vIGJrdXNlcnMgZG9lc24ndCBjYXRjaCBzaW5nbGUgSVBzIGJsb2NrZWQgYXMgcGFydCBvZiBhIHJhbmdlIGJsb2NrXG5cdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MocmVsZXZhbnRVc2VyTmFtZSwgdHJ1ZSkpIHtcblx0XHRcdHF1ZXJ5LmJraXAgPSByZWxldmFudFVzZXJOYW1lO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGdyb3VwbWVtYmVyc2hpcHMgb25seSByZWxldmFudCBmb3IgcmVnaXN0ZXJlZCB1c2Vyc1xuXHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3VwbWVtYmVyc2hpcHMnO1xuXHRcdH1cblx0XHRhcGkuZ2V0KHF1ZXJ5KS50aGVuKFxuXHRcdFx0KGRhdGEpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5wcm9jZXNzVXNlckluZm8oZGF0YSwgZm4pO1xuXHRcdFx0fSxcblx0XHRcdChlcnJvcikgPT4ge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdCgkYm9keS5maW5kKCdkaXZbbmFtZT1cImN1cnJlbnRibG9ja1wiXSBzcGFuJykubGFzdCgpWzBdKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4od2luZG93LndnVUxTKCfmipPlj5bnlKjmiLfkv6Hmga/lh7rplJknLCAn5oqT5Y+W5L2/55So6ICF6LOH6KiK5Ye66YyvJyksIGVycm9yKTtcblx0XHRcdH1cblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCA9IChmaWVsZHNldCkgPT4ge1xuXHRcdFR3aW5rbGUuYmxvY2tbJChmaWVsZHNldCkucHJvcCgnbmFtZScpXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgZWwgb2YgJChmaWVsZHNldCkuc2VyaWFsaXplQXJyYXkoKSkge1xuXHRcdFx0Ly8gbmFtZXNwYWNlcyBhbmQgcGFnZXMgZm9yIHBhcnRpYWwgYmxvY2tzIGFyZSBvdmVyd3JpdHRlblxuXHRcdFx0Ly8gaGVyZSwgYnV0IHdlJ3JlIGhhbmRsaW5nIHRoZW0gZWxzZXdoZXJlIHNvIHRoYXQncyBmaW5lXG5cdFx0XHRUd2lua2xlLmJsb2NrWyQoZmllbGRzZXQpLnByb3AoJ25hbWUnKV1bZWwubmFtZV0gPSBlbC52YWx1ZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2Jsb2NrNjQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0ICRmb3JtID0gJChlLnRhcmdldC5mb3JtKTtcblx0XHRjb25zdCAkYmxvY2s2NCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWJsb2NrNjRdJyk7XG5cdFx0Ly8gU2hvdy9oaWRlIGJsb2NrNjQgYnV0dG9uXG5cdFx0Ly8gU2luZ2xlIElQdjYsIG9yIElQdjYgcmFuZ2Ugc21hbGxlciB0aGFuIGEgLzY0XG5cdFx0Y29uc3QgcHJpb3JOYW1lID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRpZiAoJGJsb2NrNjQuaXMoJzpjaGVja2VkJykpIHtcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgPSBNb3JlYml0cy5pcC5nZXQ2NChtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHR9XG5cdFx0Ly8gTm8gdGVtcGxhdGVzIGZvciByYW5nZXMsIGJ1dCBpZiB0aGUgb3JpZ2luYWwgdXNlciBpcyBhIHNpbmdsZSBJUCwgb2ZmZXIgdGhlIG9wdGlvblxuXHRcdC8vIChkb25lIHNlcGFyYXRlbHkgaW4gVHdpbmtsZS5ibG9jay5jYWxsYmFjay5pc3N1ZV90ZW1wbGF0ZSlcblx0XHRjb25zdCBvcmlnaW5hbElzUmFuZ2UgPSBNb3JlYml0cy5pcC5pc1JhbmdlKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKTtcblx0XHQkZm9ybVxuXHRcdFx0LmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRlbXBsYXRlXScpXG5cdFx0XHQucHJvcCgnZGlzYWJsZWQnLCBvcmlnaW5hbElzUmFuZ2UpXG5cdFx0XHQucHJvcCgnY2hlY2tlZCcsICFvcmlnaW5hbElzUmFuZ2UpO1xuXHRcdC8vIFJlZmV0Y2gvcmVwcm9jZXNzIHVzZXIgaW5mbyB0aGVuIHJlZ2VuZXJhdGUgdGhlIG1haW4gY29udGVudFxuXHRcdGNvbnN0IHJlZ2VuZXJhdGVGb3JtID0gKCkgPT4ge1xuXHRcdFx0Ly8gVHdlYWsgdGl0bGViYXIgdGV4dC4gIEluIHRoZW9yeSwgd2UgY291bGQgc2F2ZSB0aGUgZGlhbG9nXG5cdFx0XHQvLyBhdCBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiB1c2UgYC5zZXRUaXRsZWAgb3Jcblx0XHRcdC8vIGBkaWFsb2coJ29wdGlvbicsICd0aXRsZScpYCwgYnV0IGluIHByYWN0aWNlIHRoYXQgc3dhbGxvd3Ncblx0XHRcdC8vIHRoZSBzY3JpcHROYW1lIGFuZCByZXF1aXJlcyBgLmRpc3BsYXlgaW5nLCB3aGljaCBqdW1wcyB0aGVcblx0XHRcdC8vIHdpbmRvdy4gIEl0J3MganVzdCBhIGxpbmUgb2YgdGV4dCwgc28gdGhpcyBpcyBmaW5lLlxuXHRcdFx0Y29uc3QgdGl0bGVCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudWktZGlhbG9nLXRpdGxlJykuZmlyc3RDaGlsZC5uZXh0U2libGluZztcblx0XHRcdHRpdGxlQmFyLm5vZGVWYWx1ZSA9IHRpdGxlQmFyLm5vZGVWYWx1ZS5yZXBsYWNlKHByaW9yTmFtZSwgcmVsZXZhbnRVc2VyTmFtZSk7XG5cdFx0XHQvLyBDb3JyZWN0IHBhcnRpYWwgc3RhdGVcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJykucHJvcCgnY2hlY2tlZCcsIFR3aW5rbGUuZ2V0UHJlZignZGVmYXVsdFRvUGFydGlhbEJsb2NrcycpKTtcblx0XHRcdGlmIChibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0JGZvcm1cblx0XHRcdFx0XHQuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKVxuXHRcdFx0XHRcdC5wcm9wKCdjaGVja2VkJywgVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnBhcnRpYWwgPT09ICcnKTtcblx0XHRcdH1cblx0XHRcdC8vIFNldCBjb250ZW50IGFwcHJvcHJpYXRlbHlcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbihlKTtcblx0XHR9O1xuXHRcdGlmIChUd2lua2xlLmJsb2NrLmZldGNoZWREYXRhW3JlbGV2YW50VXNlck5hbWVdKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnByb2Nlc3NVc2VySW5mbyhUd2lua2xlLmJsb2NrLmZldGNoZWREYXRhW3JlbGV2YW50VXNlck5hbWVdLCByZWdlbmVyYXRlRm9ybSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suZmV0Y2hVc2VySW5mbyhyZWdlbmVyYXRlRm9ybSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9hY3Rpb24gPSAoZSkgPT4ge1xuXHRcdGxldCBmaWVsZF9wcmVzZXQ7XG5cdFx0bGV0IGZpZWxkX3RlbXBsYXRlX29wdGlvbnM7XG5cdFx0bGV0IGZpZWxkX2Jsb2NrX29wdGlvbnM7XG5cdFx0bGV0IGZpZWxkX3RhZ19vcHRpb25zO1xuXHRcdGxldCBmaWVsZF91bmJsb2NrX29wdGlvbnM7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGUudGFyZ2V0LmZvcm0pO1xuXHRcdC8vIE1ha2UgaWZzIHNob3J0ZXJcblx0XHRjb25zdCAkYmxvY2sgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1ibG9ja10nKTtcblx0XHRsZXQgYmxvY2tCb3ggPSAkYmxvY2suaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgJHRlbXBsYXRlID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJyk7XG5cdFx0bGV0IHRlbXBsYXRlQm94ID0gJHRlbXBsYXRlLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0ICR0YWcgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10YWddJyk7XG5cdFx0Y29uc3QgdGFnQm94ID0gJHRhZy5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCAkcHJvdGVjdCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXByb3RlY3RdJyk7XG5cdFx0Y29uc3QgJHBhcnRpYWwgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpO1xuXHRcdGNvbnN0IHBhcnRpYWxCb3ggPSAkcGFydGlhbC5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCAkdW5ibG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXVuYmxvY2tdJyk7XG5cdFx0Y29uc3QgdW5ibG9ja0JveCA9ICR1bmJsb2NrLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGxldCBibG9ja0dyb3VwID0gcGFydGlhbEJveCA/IFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHNQYXJ0aWFsIDogVHdpbmtsZS5ibG9jay5ibG9ja0dyb3Vwcztcblx0XHRpZiAoZS50YXJnZXQudmFsdWUgPT09ICd1bmJsb2NrJykge1xuXHRcdFx0aWYgKCFUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pIHtcblx0XHRcdFx0JHVuYmxvY2sucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn55So5oi35rKh5pyJ6KKr5bCB56aBJywgJ+S9v+eUqOiAheaykuacieiiq+WwgemOlicpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQkYmxvY2sucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdGJsb2NrQm94ID0gZmFsc2U7XG5cdFx0XHQkdGVtcGxhdGUucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdHRlbXBsYXRlQm94ID0gZmFsc2U7XG5cdFx0XHQkdGFnLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHQkcHJvdGVjdC5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0JHBhcnRpYWwucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHVuYmxvY2sucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHR9XG5cdFx0JHBhcnRpYWwucHJvcCgnZGlzYWJsZWQnLCAhYmxvY2tCb3ggJiYgIXRlbXBsYXRlQm94KTtcblx0XHQvLyBBZGQgY3VycmVudCBibG9jayBwYXJhbWV0ZXJzIGFzIGRlZmF1bHQgcHJlc2V0XG5cdFx0Y29uc3QgcHJpb3IgPSB7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPliY3lsIHnpoEnLCAn55uu5YmN5bCB6Y6WJyksXG5cdFx0fTtcblx0XHRpZiAoYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IgPSBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm87XG5cdFx0XHQvLyB2YWx1ZSBub3QgYSB2YWxpZCB0ZW1wbGF0ZSBzZWxlY3Rpb24sIGNob3NlbiBiZWxvdyBieSBzZXR0aW5nIHRlbXBsYXRlTmFtZVxuXHRcdFx0cHJpb3IubGlzdCA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W9k+WJjeWwgeemgeiuvue9ricsICfnm67liY3lsIHpjpboqK3lrponKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3ByaW9yJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0XHQvLyBBcnJheXMgb2Ygb2JqZWN0cyBhcmUgYW5ub3lpbmcgdG8gY2hlY2tcblx0XHRcdGlmIChcblx0XHRcdFx0IWJsb2NrR3JvdXAuc29tZSgoYmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gYmcubGFiZWwgPT09IHByaW9yLmxhYmVsO1xuXHRcdFx0XHR9KVxuXHRcdFx0KSB7XG5cdFx0XHRcdGJsb2NrR3JvdXAucHVzaChwcmlvcik7XG5cdFx0XHR9XG5cdFx0XHQvLyBBbHdheXMgZW5zdXJlIHByb3BlciB0ZW1wbGF0ZSBleGlzdHMvaXMgc2VsZWN0ZWQgd2hlbiBzd2l0Y2hpbmcgbW9kZXNcblx0XHRcdGlmIChwYXJ0aWFsQm94KSB7XG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mby5wcmlvci50ZW1wbGF0ZU5hbWUgPSBNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShcblx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8uZXhwaXJ5XG5cdFx0XHRcdClcblx0XHRcdFx0XHQ/ICd1dy1wYmxvY2tpbmRlZidcblx0XHRcdFx0XHQ6ICd1dy1wYmxvY2snO1xuXHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZCkge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IudGVtcGxhdGVOYW1lID0gTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoXG5cdFx0XHRcdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeVxuXHRcdFx0XHQpXG5cdFx0XHRcdFx0PyAndXctYmxvY2tpbmRlZidcblx0XHRcdFx0XHQ6ICd1dy1ibG9jayc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IudGVtcGxhdGVOYW1lID0gJ3V3LWFibG9jayc7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEJ1dCBmaXJzdCByZW1vdmUgYW55IHByaW9yIHByaW9yXG5cdFx0XHRibG9ja0dyb3VwID0gYmxvY2tHcm91cC5maWx0ZXIoKGJnKSA9PiB7XG5cdFx0XHRcdHJldHVybiBiZy5sYWJlbCAhPT0gcHJpb3IubGFiZWw7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGJvZHkuZmluZCgnW25hbWU9ZmllbGRfYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGJvZHkuZmluZCgnW25hbWU9ZmllbGRfdGVtcGxhdGVfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGJvZHkuZmluZCgnW25hbWU9ZmllbGRfdGFnX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX3VuYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0aWYgKGJsb2NrQm94KSB7XG5cdFx0XHRmaWVsZF9wcmVzZXQgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqQnLCAn6aCQ6KitJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF9wcmVzZXQnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9wcmVzZXQuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdG5hbWU6ICdwcmVzZXQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6npu5jorqTvvJonLCAn6YG45pOH6aCQ6Kit77yaJyksXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9wcmVzZXQsXG5cdFx0XHRcdGxpc3Q6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZmlsdGVyZWRfYmxvY2tfZ3JvdXBzKGJsb2NrR3JvdXApLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCJ6aG5JywgJ+WwgemOlumBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfYmxvY2tfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdG5hbWU6ICdjdXJyZW50YmxvY2snLFxuXHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnaGFzYmxvY2tsb2cnLFxuXHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRuYW1lOiAnZXhwaXJ5X3ByZXNldCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i/h+acn+aXtumXtO+8micsICfpgY7mnJ/mmYLplpPvvJonKSxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2V4cGlyeSxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5iScsICfoh6roqIInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnY3VzdG9tJyxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCcz5bCP5pe2JywgJzPlsI/mmYInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMyBob3VycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCcxMuWwj+aXticsICcxMuWwj+aZgicpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxMiBob3VycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzHlpKknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIGRheScsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCczMeWwj+aXticsICczMeWwj+aZgicpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICczMSBob3VycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzLlpKknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcyIGRheXMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcz5aSpJyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMyBkYXlzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHlkagnLCAnMemAsScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIHdlZWsnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMuWRqCcsICcy6YCxJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzIgd2Vla3MnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMeS4quaciCcsICcx5YCL5pyIJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzEgbW9udGgnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+S4quaciCcsICcz5YCL5pyIJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzMgbW9udGhzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzbkuKrmnIgnLCAnNuWAi+aciCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICc2IG1vbnRocycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzHlubQnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIHllYXInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcy5bm0Jyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMiB5ZWFycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzPlubQnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICczIHllYXJzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdG5hbWU6ICdleHBpcnknLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnov4fmnJ/ml7bpl7QnLCAn6Ieq6KiC6YGO5pyf5pmC6ZaTJyksXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oKo5Y+v5Lul5L2/55So55u45a+55pe26Ze077yM5aaC4oCcMSBtaW51dGXigJ3miJbigJwxOSBkYXlz4oCd77yb5oiW57ud5a+55pe26Ze077yM4oCceXl5eW1tZGRoaG1t4oCd77yI5aaC4oCcMjAwNjAyMDExNDA14oCd5pivMjAwNuW5tDLmnIgx5pelMTQ6MDUgVVRD44CC77yJJyxcblx0XHRcdFx0XHQn5oKo5Y+v5Lul5L2/55So55u45bCN5pmC6ZaT77yM5aaC44CMMSBtaW51dGXjgI3miJbjgIwxOSBkYXlz44CN77yb5oiW57WV5bCN5pmC6ZaT77yM44CMeXl5eW1tZGRoaG1t44CN77yI5aaC44CMMjAwNjAyMDExNDA144CN5pivMjAwNuW5tDLmnIgx5pelMTQ6MDUgVVRD44CC77yJJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHR2YWx1ZTogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLmV4cGlyeSB8fCBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMudGVtcGxhdGVfZXhwaXJ5LFxuXHRcdFx0fSk7XG5cdFx0XHRpZiAocGFydGlhbEJveCkge1xuXHRcdFx0XHQvLyBQYXJ0aWFsIGJsb2NrXG5cdFx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0XHRuYW1lOiAncGFnZXJlc3RyaWN0aW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5bCB56aBJywgJ+mggemdouWwgemOlicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+acgOWkmjEw5Liq6aG16Z2i44CCJywgJ+acgOWkmjEw5YCL6aCB6Z2i44CCJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBucyA9IGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0XHRuYW1lOiAnbmFtZXNwYWNlcmVzdHJpY3Rpb25zJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflkb3lkI3nqbrpl7TlsIHnpoEnLCAn5ZG95ZCN56m66ZaT5bCB6Y6WJyksXG5cdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oyH5a6a5bCB56aB55qE5ZG95ZCN56m66Ze044CCJywgJ+aMh+WumuWwgemOlueahOWRveWQjeepuumWk+OAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9yIChjb25zdCBbbnVtYmVyLCBuYW1lXSBvZiBPYmplY3QuZW50cmllcyhtZW51Rm9ybWF0dGVkTmFtZXNwYWNlcykpIHtcblx0XHRcdFx0XHQvLyBJZ25vcmUgLTE6IFNwZWNpYWw7IC0yOiBNZWRpYTsgYW5kIDIzMDAtMjMwMzogR2FkZ2V0ICh0YWxrKSBhbmQgR2FkZ2V0IGRlZmluaXRpb24gKHRhbGspXG5cdFx0XHRcdFx0aWYgKG51bWJlciA+PSAwICYmIG51bWJlciA8IDgzMCkge1xuXHRcdFx0XHRcdFx0bnMuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBuYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogbnVtYmVyLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBibG9ja29wdGlvbnMgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMubm9jcmVhdGUsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56aB5q2i5Yib5bu66LSm5Y+3JywgJ+emgeatouW7uueri+izrOiZnycpLFxuXHRcdFx0XHRcdG5hbWU6ICdub2NyZWF0ZScsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy5ub2VtYWlsLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUteWtkOmCruS7tuWBnOeUqCcsICfpm7vlrZDpg7Xku7blgZznlKgnKSxcblx0XHRcdFx0XHRuYW1lOiAnbm9lbWFpbCcsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy5kaXNhYmxldGFsayxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73nvJbovpHoh6rlt7HnmoTorqjorrrpobUnLCAn5LiN6IO957eo6Lyv6Ieq5bex55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGV0YWxrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHBhcnRpYWxCb3hcblx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjpg6jliIblsIHnpoHvvIzkuI3lupTpgInmi6nmraTpobnvvIzpmaTpnZ7mgqjkuZ/mg7PopoHnpoHmraLnvJbovpHnlKjmiLforqjorrrpobXjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjpg6jliIblsIHpjpbvvIzkuI3mh4npgbjmk4fmraTpoIXvvIzpmaTpnZ7mgqjkuZ/mg7PopoHnpoHmraLnt6jovK/kvb/nlKjogIXoqI7oq5bpoIHjgIInXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdDogJycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuYXV0b2Jsb2NrLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWKqOWwgeemgScsICfoh6rli5XlsIHpjpYnKSxcblx0XHRcdFx0XHRuYW1lOiAnYXV0b2Jsb2NrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuaGFyZGJsb2NrLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mYu+atoueZu+W9leeUqOaIt+S9v+eUqOivpUlQ5Zyw5Z2A57yW6L6RJywgJ+mYu+atoueZu+WFpeS9v+eUqOiAheS9v+eUqOipsklQ5L2N5Z2A57eo6LyvJyksXG5cdFx0XHRcdFx0bmFtZTogJ2hhcmRibG9jaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRibG9ja29wdGlvbnMucHVzaChcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy53YXRjaHVzZXIsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55uR6KeG6K+l55So5oi355qE55So5oi36aG15ZKM6K6o6K666aG1JywgJ+ebo+imluipsuS9v+eUqOiAheeahOS9v+eUqOiAhemggemdouWSjOiojuirlumggScpLFxuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaHVzZXInLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOW9k+WJjeeahOegtOWdj+S4reeahOivt+axgicsICfmqJnoqJjnlbbliY3nmoTnoLTlo57kuK3nmoToq4vmsYInKSxcblx0XHRcdFx0XHRuYW1lOiAnY2xvc2V2aXAnLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdibG9ja29wdGlvbnMnLFxuXHRcdFx0XHRsaXN0OiBibG9ja29wdGlvbnMsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55CG55Sx77yI55So5LqO5bCB56aB5pel5b+X77yJ77yaJywgJ+eQhueUse+8iOeUqOaWvOWwgemOluaXpeiqjO+8ie+8micpLFxuXHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfor7fogIPomZHlnKjpu5jorqTnmoTmtojmga/kuK3liqDlhaXmnInnlKjnmoTor6bnu4bkv6Hmga/jgIInLFxuXHRcdFx0XHRcdCfoq4vogIPmha7lnKjpoJDoqK3nmoToqIrmga/kuK3liqDlhaXmnInnlKjnmoToqbPntLDos4foqIrjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMucmVhc29uLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnZmlsZXJsb2dfbGFiZWwnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj4Lop4HvvJonLCAn5Y+D6KaL77yaJyksXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWwgIWltcG9ydGFudCcsXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5Zyo5bCB56aB55CG55Sx5Lit5qCH5riF54m55q6K5oOF5Ya15Lul5L6b5YW25LuW566h55CG5ZGY5Y+C6ICDJyxcblx0XHRcdFx0XHQn5Zyo5bCB6Y6W55CG55Sx5Lit5qiZ5riF54m55q6K5oOF5rOB5Lul5L6b5YW25LuW566h55CG5ZOh5Y+D6ICDJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdmaWx0ZXJfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOaXpeW/lycsICfpgY7mv77lmajml6XoqownKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn6L+H5ruk5Zmo5pel5b+XJywgJ+mBjua/vuWZqOaXpeiqjCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2RlbGV0ZWRfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWIoOmZpOeahOe8lui+kScsICflt7LliKrpmaTnmoTnt6jovK8nKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5bey5Yig6Zmk55qE57yW6L6RJywgJ+W3suWIqumZpOeahOe3qOi8rycpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2ZpbHRlcl9zZWVfYWxzbycsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnRvZ2dsZV9zZWVfYWxzb3MsXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1yaWdodDo1cHgnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG1JywgJ+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobUnLCAn5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnZmlsdGVyX3NlZV9hbHNvJyxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudG9nZ2xlX3NlZV9hbHNvcyxcblx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luLXJpZ2h0OjVweCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov4fljrvnmoTlsIHnpoHorrDlvZUnLCAn6YGO5Y6755qE5bCB6Y6W6KiY6YyEJyksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+i/h+WOu+eahOWwgeemgeiusOW9lScsICfpgY7ljrvnmoTlsIHpjpboqJjpjIQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHQvLyBZZXQtYW5vdGhlci1sb2dldmVudHMtZG9lc24ndC1oYW5kbGUtcmFuZ2VzLXdlbGxcblx0XHRcdGlmIChibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoaWRkZW4nLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWJsb2NrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRlbXBsYXRlQm94KSB7XG5cdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qih5p2/6YCJ6aG5JywgJ+aooeadv+mBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdGVtcGxhdGVfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdG5hbWU6ICd0ZW1wbGF0ZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeiuqOiuuumhteaooeadv++8micsICfpgbjmk4foqI7oq5bpoIHmqKHmnb/vvJonKSxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyhibG9ja0dyb3VwLCB0cnVlKSxcblx0XHRcdFx0dmFsdWU6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy50ZW1wbGF0ZSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mTvuaOpemhtemdoicsICfpgKPntZDpoIHpnaInKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+WPr+S7pemaj+mAmuefpemTvuaOpemhtemdou+8jOS+i+WmguegtOWdj+eahOebruagh+OAguayoeacieadoeebrumcgOimgemTvuaOpeWImeivt+eVmeepuuOAgicsXG5cdFx0XHRcdFx0J+WPr+S7pemaqOmAmuefpemAo+e1kOmggemdou+8jOS+i+WmguegtOWjnueahOebruaomeOAguaykuacieaineebrumcgOimgemAo+e1kOWJh+iri+eVmeepuuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0Ly8gT25seSB2aXNpYmxlIGlmIHBhcnRpYWwgYW5kIG5vdCBibG9ja2luZ1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeiMg+WbtCcsICflsIHpjpbnr4TlnI0nKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+mYu+atoueUqOaIt+e8lui+keeahOmhtemdouaIluWRveWQjeepuumXtOeahOWPr+mAieivtOaYjuOAgicsXG5cdFx0XHRcdFx0J+mYu+atouS9v+eUqOiAhee3qOi8r+eahOmggemdouaIluWRveWQjeepuumWk+eahOWPr+mBuOiqquaYjuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKCFibG9ja0JveCkge1xuXHRcdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAndGVtcGxhdGVfZXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogJ+Wwgeemgeacn+mZkO+8micsXG5cdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5bCB56aB5pe26ZW/77yM5aaCMjTlsI/ml7bjgIEy5ZGo44CB5peg6ZmQ5pyf562J44CCJywgJ+WwgemOluaZgumVt++8jOWmgjI05bCP5pmC44CBMumAseOAgeeEoemZkOacn+etieOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bmFtZTogJ2Jsb2NrX3JlYXNvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+KAnOeUseS6juKApuKApuaCqOW3suiiq+WwgeemgeKAnScsICfjgIznlLHmlrzigKbigKbmgqjlt7LooqvlsIHpjpbjgI0nKSxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCflj6/pgInnmoTnkIbnlLHvvIznlKjkuo7mm7/mjaLpu5jorqTnkIbnlLHjgILlj6rlnKjluLjop4TlsIHnpoHmqKHmnb/kuK3mnInmlYjjgIInLFxuXHRcdFx0XHRcdCflj6/pgbjnmoTnkIbnlLHvvIznlKjmlrzmm7/mj5vpoJDoqK3nkIbnlLHjgILlj6rlnKjluLjopo/lsIHpjpbmqKHmnb/kuK3mnInmlYjjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYmxvY2tfcmVhc29uLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKGJsb2NrQm94KSB7XG5cdFx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdibGFua19kdXJhdGlvbicsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3lnKjmqKHmnb/kuK3ljIXlkKvlsIHnpoHmnJ/pmZAnLCAn5LiN5Zyo5qih5p2/5Lit5YyF5ZCr5bCB6Y6W5pyf6ZmQJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ibGFua19kdXJhdGlvbixcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIbkvJrmmL7npLrigJzkuIDmrrXml7bpl7TigJ3ogIzkuI3mmK/lhbfkvZPml7bplb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIfmnIPpoa/npLrjgIzkuIDmrrXmmYLplpPjgI3ogIzkuI3mmK/lhbfpq5TmmYLplbcnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73nvJbovpHoh6rlt7HnmoTorqjorrrpobUnLCAn5LiN6IO957eo6Lyv6Ieq5bex55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub3RhbGsnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm90YWxrLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgeemgeaooeadv+S4reaMh+aYjuivpeeUqOaIt+e8lui+keiuqOiuuumhteeahOadg+mZkOW3suiiq+enu+mZpCcsXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgemOluaooeadv+S4reaMh+aYjuipsuS9v+eUqOiAhee3qOi8r+iojuirlumggeeahOasiumZkOW3suiiq+enu+mZpCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4jeiDveWPkemAgeeUteWtkOmCruS7ticsICfkuI3og73lgrPpgIHpm7vlrZDpg7Xku7YnKSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ25vZW1haWxfdGVtcGxhdGUnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9lbWFpbF90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLflj5HpgIHnlLXlrZDpgq7ku7bnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlgrPpgIHpm7vlrZDpg7Xku7bnmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73liJvlu7rotKblj7cnLCAn5LiN6IO95bu656uL6LOs6JmfJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2NyZWF0ZV90ZW1wbGF0ZScsXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2NyZWF0ZV90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLfliJvlu7rotKblj7fnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlu7rnq4vos6zomZ/nmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgJHByZXZpZXdsaW5rID0gJChgPGEgaWQ9XCJ0d2lua2xlYmxvY2stcHJldmlldy1saW5rXCI+JHt3aW5kb3cud2dVTFMoJ+mihOiniCcsICfpoJDopr0nKX08L2E+YCk7XG5cdFx0XHQkcHJldmlld2xpbmsub2ZmKCdjbGljaycpLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcmV2aWV3KCRmb3JtWzBdKTtcblx0XHRcdH0pO1xuXHRcdFx0JHByZXZpZXdsaW5rLmNzcyh7XG5cdFx0XHRcdGN1cnNvcjogJ3BvaW50ZXInLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRpZDogJ2Jsb2NrcHJldmlldycsXG5cdFx0XHRcdGxhYmVsOiBbJHByZXZpZXdsaW5rWzBdXSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0aWQ6ICd0d2lua2xlYmxvY2stcHJldmlld2JveCcsXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKHRhZ0JveCkge1xuXHRcdFx0ZmllbGRfdGFnX29wdGlvbnMgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF90YWdfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RhZ19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICd0YWcnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nnlKjmiLfpobXmqKHmnb/vvJonLCAn6YG45pOH5L2/55So6ICF6aCB6Z2i5qih5p2/77yaJyksXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogYHt7QmxvY2tlZCB1c2VyfX3vvJoke3dpbmRvdy53Z1VMUygn5LiA6Iis5rC45LmF5bCB56aBJywgJ+S4gOiIrOawuOS5heWwgemOlicpfWAsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0Jsb2NrZWQgdXNlcicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogYHt7U29ja3B1cHBldH1977yaJHt3aW5kb3cud2dVTFMoJ+WCgOWEoei0puWPtycsICflgoDlhKHos6zomZ8nKX1gLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdTb2NrcHVwcGV0Jyxcblx0XHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3BwVXNlcm5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li76LSm5Y+355So5oi35ZCN77yaJywgJ+S4u+izrOiZn+S9v+eUqOiAheWQjeeose+8micpLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3NwcFR5cGUnLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eKtuaAge+8micsICfni4DmhYvvvJonKSxcblx0XHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrZWQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYGJsb2NrZWQgLSAke3dpbmRvdy53Z1VMUygn5LuF5L6d6KGM5Li66K+B5o2u6K6k5a6aJywgJ+WDheS+neihjOeCuuitieaTmuiqjeWumicpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAncHJvdmVuJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGBwcm92ZW4gLSAke3dpbmRvdy53Z1VMUygn57uP5YKA5YSh6LCD5p+l56Gu6K6kJywgJ+e2k+WCgOWEoeiqv+afpeeiuuiqjScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjb25maXJtZWQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYGNvbmZpcm1lZCAtICR7d2luZG93LndnVUxTKCfnu4/mn6XmoLjnoa7orqQnLCAn57aT5p+l5qC456K66KqNJyl9YCxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcHBFdmlkZW5jZScsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoLnmja7igKbigKbnoa7lrprvvJonLCAn5qC55pOa4oCm4oCm56K65a6a77yaJyksXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+e6r+aWh+Wtl+aIluaYr+W4pltbXV3nmoTpk77mjqXvvIzkvovlpoLvvJpbW1NwZWNpYWw65Zu65a6a6ZO+5o6lL3h4eHh4eHh4fOeUqOaIt+afpeaguF1dJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfntJTmloflrZfmiJbmmK/luLZbW11d55qE6YCj57WQ77yM5L6L5aaC77yaW1tTcGVjaWFsOuWbuuWumumTvuaOpS94eHh4eHh4eHznlKjmiLbmn6XmoLhdXSdcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiBge3tTb2NrcHVwcGV0ZWVyfGJsb2NrZWR9fe+8miR7d2luZG93LndnVUxTKCflgoDlhKHkuLvotKblj7cnLCAn5YKA5YSh5Li76LOs6JmfJyl9YCxcblx0XHRcdFx0XHRcdHZhbHVlOiAnU29ja3B1cHBldGVlcicsXG5cdFx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcG1DaGVja2VkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdzcG1DaGVja2VkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uP55So5oi35p+l5qC456Gu6K6kJywgJ+e2k+S9v+eUqOiAheafpeaguOeiuuiqjScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3NwbUV2aWRlbmNlJyxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mineWklueQhueUse+8micsICfpoY3lpJbnkIbnlLHvvJonKSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAodW5ibG9ja0JveCkge1xuXHRcdFx0ZmllbGRfdW5ibG9ja19vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Kej6Zmk5bCB56aB6YCJ6aG5JywgJ+ino+mZpOWwgemOlumBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdW5ibG9ja19vcHRpb25zJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdW5ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eQhueUse+8iOeUqOS6juWwgeemgeaXpeW/l++8ie+8micsICfnkIbnlLHvvIjnlKjmlrzlsIHpjpbml6XoqozvvInvvJonKSxcblx0XHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3VuYmxvY2tfb3B0aW9ucy5yZWFzb24sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0bGV0IG9sZGZpZWxkO1xuXHRcdGlmIChmaWVsZF9wcmVzZXQpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfcHJlc2V0XCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF9wcmVzZXQucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpLmhpZGUoKTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkX2Jsb2NrX29wdGlvbnMpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfYmxvY2tfb3B0aW9uc1wiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfYmxvY2tfb3B0aW9ucy5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkXzY0XCJdJykuc2hvdygpO1xuXHRcdFx0JGZvcm0uZmluZCgnW25hbWU9cGFnZXJlc3RyaWN0aW9uc10nKS5zZWxlY3QyKHtcblx0XHRcdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUygn6L6T5YWl6KaB6Zi75q2i55So5oi357yW6L6R55qE6aG16Z2iJywgJ+i8uOWFpeimgemYu+atouS9v+eUqOiAhee3qOi8r+eahOmggemdoicpLFxuXHRcdFx0XHRsYW5ndWFnZToge1xuXHRcdFx0XHRcdGVycm9yTG9hZGluZzogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy53Z1VMUygn5pCc57Si6K+N5rGH5LiN5a6M5pW05oiW5peg5pWIJywgJ+aQnOWwi+ipnuW9meS4jeWujOaVtOaIlueEoeaViCcpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1heGltdW1TZWxlY3Rpb25MZW5ndGg6IDEwLFxuXHRcdFx0XHRtaW5pbXVtSW5wdXRMZW5ndGg6IDEsXG5cdFx0XHRcdGFqYXg6IHtcblx0XHRcdFx0XHR1cmw6IG13LnV0aWwud2lraVNjcmlwdCgnYXBpJyksXG5cdFx0XHRcdFx0ZGF0YVR5cGU6ICdqc29uJyxcblx0XHRcdFx0XHRkZWxheTogMTAwLFxuXHRcdFx0XHRcdGRhdGE6IChwYXJhbXMpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gbXcuVGl0bGUubmV3RnJvbVRleHQocGFyYW1zLnRlcm0pO1xuXHRcdFx0XHRcdFx0aWYgKCF0aXRsZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0XHRcdFx0XHRsaXN0OiAnYWxscGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRhcGZyb206IHRpdGxlLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRhcG5hbWVzcGFjZTogdGl0bGUubmFtZXNwYWNlLFxuXHRcdFx0XHRcdFx0XHRhcGxpbWl0OiAnMTAnLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHByb2Nlc3NSZXN1bHRzOiAoZGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0czogZGF0YS5xdWVyeS5hbGxwYWdlcy5tYXAoKHBhZ2UpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhZ2UudGl0bGUsIHBhZ2UubnMpLnRvVGV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZDogdGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0OiB0aXRsZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0dGVtcGxhdGVTZWxlY3Rpb246IChjaG9pY2UpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC50ZXh0KGNob2ljZS50ZXh0KVxuXHRcdFx0XHRcdFx0LmF0dHIoe1xuXHRcdFx0XHRcdFx0XHRocmVmOiBtdy51dGlsLmdldFVybChjaG9pY2UudGV4dCksXG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJ19ibGFuaycsXG5cdFx0XHRcdFx0XHRcdHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9KTtcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKS5zZWxlY3QyKHtcblx0XHRcdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRcdFx0bWF0Y2hlcjogTW9yZWJpdHMuc2VsZWN0Mi5tYXRjaGVycy53b3JkQmVnaW5uaW5nLFxuXHRcdFx0XHRsYW5ndWFnZToge1xuXHRcdFx0XHRcdHNlYXJjaGluZzogTW9yZWJpdHMuc2VsZWN0Mi5xdWVyeUludGVyY2VwdG9yLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0ZW1wbGF0ZVJlc3VsdDogTW9yZWJpdHMuc2VsZWN0Mi5oaWdobGlnaHRTZWFyY2hNYXRjaGVzLFxuXHRcdFx0XHRwbGFjZWhvbGRlcjogd2luZG93LndnVUxTKCfpgInmi6nopoHnpoHmraLnlKjmiLfnvJbovpHnmoTlkb3lkI3nqbrpl7QnLCAn6YG45pOH6KaB56aB5q2i5L2/55So6ICF57eo6Lyv55qE5ZG95ZCN56m66ZaTJyksXG5cdFx0XHR9KTtcblx0XHRcdG13LnV0aWwuYWRkQ1NTKFxuXHRcdFx0XHQvKiBSZWR1Y2UgcGFkZGluZztcblx0XHRcdFx0ICogQWRqdXN0IGZvbnQgc2l6ZTtcblx0XHRcdFx0ICogUmVtb3ZlIGJsYWNrIGJvcmRlcjtcblx0XHRcdFx0ICogTWFrZSB0aGUgdGlueSBjcm9zcyBsYXJnZXJcblx0XHRcdFx0ICovXG5cdFx0XHRcdCcuc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbntwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MXB4fS5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1kcm9wZG93biAuc2VsZWN0Mi1yZXN1bHRzLC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0aW9uIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWR7Zm9udC1zaXplOjEzcHh9LnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1mb2N1cyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxle2JvcmRlcjoxcHggc29saWQgI2FhYX0uc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3Zle2ZvbnQtc2l6ZToxMjUlfSdcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9ibG9ja19vcHRpb25zXCJdJykuaGlkZSgpO1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkXzY0XCJdJykuaGlkZSgpO1xuXHRcdFx0Ly8gQ2xlYXIgc2VsZWN0MiBvcHRpb25zXG5cdFx0XHQkZm9ybS5maW5kKCdbbmFtZT1wYWdlcmVzdHJpY3Rpb25zXScpLnZhbChudWxsKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKS52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF90ZW1wbGF0ZV9vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RlbXBsYXRlX29wdGlvbnNcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkX3RlbXBsYXRlX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHRcdGUudGFyZ2V0LmZvcm0ucm9vdC5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KFxuXHRcdFx0XHQkKGUudGFyZ2V0LmZvcm0ucm9vdCkuZmluZCgnI3R3aW5rbGVibG9jay1wcmV2aWV3Ym94JykubGFzdCgpWzBdXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfdGVtcGxhdGVfb3B0aW9uc1wiXScpLmhpZGUoKTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkX3RhZ19vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RhZ19vcHRpb25zXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF90YWdfb3B0aW9ucy5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfdGFnX29wdGlvbnNcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF91bmJsb2NrX29wdGlvbnMpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfdW5ibG9ja19vcHRpb25zXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF91bmJsb2NrX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3VuYmxvY2tfb3B0aW9uc1wiXScpLmhpZGUoKTtcblx0XHR9XG5cdFx0Ly8gQW55IGJsb2NrLCBpbmNsdWRpbmcgcmFuZ2VzXG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0Ly8gZmFsc2UgZm9yIGFuIGlwIGNvdmVyZWQgYnkgYSByYW5nZSBvciBhIHNtYWxsZXIgcmFuZ2Ugd2l0aGluIGEgbGFyZ2VyIHJhbmdlO1xuXHRcdFx0Ly8gdHJ1ZSBmb3IgYSB1c2VyLCBzaW5nbGUgaXAgYmxvY2ssIG9yIHRoZSBleGFjdCByYW5nZSBmb3IgYSByYW5nZSBibG9ja1xuXHRcdFx0Y29uc3Qgc2FtZVVzZXIgPSBibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWU7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdCgkYm9keS5maW5kKCdkaXZbbmFtZT1cImN1cnJlbnRibG9ja1wiXSBzcGFuJykubGFzdCgpWzBdKTtcblx0XHRcdGxldCBzdGF0dXNTdHIgPSBgJHtyZWxldmFudFVzZXJOYW1lfeW3suiiqyR7XG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5wYXJ0aWFsID09PSAnJ1xuXHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfpg6jliIblsIHnpoEnLCAn6YOo5YiG5bCB6Y6WJylcblx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5YWo56uZ5bCB56aBJywgJ+WFqOermeWwgemOlicpXG5cdFx0XHR9YDtcblx0XHRcdC8vIFJhbmdlIGJsb2NrZWRcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucmFuZ2VzdGFydCAhPT0gVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnJhbmdlZW5kKSB7XG5cdFx0XHRcdGlmIChzYW1lVXNlcikge1xuXHRcdFx0XHRcdHN0YXR1c1N0ciArPSB3aW5kb3cud2dVTFMoJ++8iOauteWwgeemge+8iScsICfvvIjmrrXlsIHpjpbvvIknKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBDaGFuZ2Ugb3JkZXJcblx0XHRcdFx0XHQvLyBMaW5rIHRvIHRoZSBmdWxsIHJhbmdlXG5cdFx0XHRcdFx0Y29uc3QgJHJhbmdlYmxvY2tsb2dsaW5rID0gJCgnPHNwYW4+JykuYXBwZW5kKFxuXHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0YDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0XHRcdGFjdGlvbjogJ3ZpZXcnLFxuXHRcdFx0XHRcdFx0XHRcdHBhZ2U6IGJsb2NrZWRVc2VyTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnYmxvY2snLFxuXHRcdFx0XHRcdFx0XHR9KX1cIj4ke1xuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmlwLmdldDY0KHJlbGV2YW50VXNlck5hbWUpID09PSBibG9ja2VkVXNlck5hbWUgPyAnLzY0JyA6IGJsb2NrZWRVc2VyTmFtZVxuXHRcdFx0XHRcdFx0XHR9PC9hPilgXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRzdGF0dXNTdHIgKz1cblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn77yI5L2N5LqOJywgJ++8iOS9jeaWvCcpICtcblx0XHRcdFx0XHRcdCRyYW5nZWJsb2NrbG9nbGluay5odG1sKCkgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmrrXlsIHnpoHlhoXvvIknLCAn5q615bCB6Y6W5YWn77yJJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8uZXhwaXJ5ID09PSAnaW5maW5pdHknKSB7XG5cdFx0XHRcdHN0YXR1c1N0ciArPSB3aW5kb3cud2dVTFMoJ++8iOaXoOmZkOacn++8iScsICfvvIjnhKHpmZDmnJ/vvIknKTtcblx0XHRcdH0gZWxzZSBpZiAobmV3IE1vcmViaXRzLmRhdGUoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeSkuaXNWYWxpZCgpKSB7XG5cdFx0XHRcdHN0YXR1c1N0ciArPSBgJHtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ++8iOe7iOatouS6jicsICfvvIjntYLmraLmlrwnKSArXG5cdFx0XHRcdFx0bmV3IE1vcmViaXRzLmRhdGUoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeSkuY2FsZW5kYXIoJ3V0YycpXG5cdFx0XHRcdH3vvIlgO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGluZm9TdHIgPSB3aW5kb3cud2dVTFMoJ+atpOihqOWNleWwhicsICfmraTooajllq7lsIcnKTtcblx0XHRcdGlmIChzYW1lVXNlcikge1xuXHRcdFx0XHRpbmZvU3RyICs9IHdpbmRvdy53Z1VMUygn5pu05pS55bCB56aBJywgJ+iuiuabtOWwgemOlicpO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQm94KSB7XG5cdFx0XHRcdFx0aW5mb1N0ciArPSB3aW5kb3cud2dVTFMoJ+S4uumDqOWIhuWwgeemgScsICfngrrpg6jliIblsIHpjpYnKTtcblx0XHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycgJiYgIXBhcnRpYWxCb3gpIHtcblx0XHRcdFx0XHRpbmZvU3RyICs9IHdpbmRvdy53Z1VMUygn5Li65YWo56uZ5bCB56aBJywgJ+eCuuWFqOermeWwgemOlicpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGluZm9TdHIgKz0gJ+OAgic7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpbmZvU3RyICs9XG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDkuIrpop3lpJbnmoQnLCAn5Yqg5LiK6aGN5aSW55qEJykgK1xuXHRcdFx0XHRcdChwYXJ0aWFsQm94ID8gJ+mDqOWIhicgOiAnJykgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCB56aB44CCJywgJ+WwgemOluOAgicpO1xuXHRcdFx0fVxuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oc3RhdHVzU3RyLCBpbmZvU3RyKTtcblx0XHRcdC8vIERlZmF1bHQgdG8gdGhlIGN1cnJlbnQgYmxvY2sgY29uZGl0aW9ucyBvbiBpbnRpYWwgZm9ybSBnZW5lcmF0aW9uXG5cdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnVwZGF0ZV9mb3JtKGUsIFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyk7XG5cdFx0fVxuXHRcdC8vIFRoaXMgaXMgd2hlcmUgVDE0NjYyOCByZWFsbHkgY29tZXMgaW50byBwbGF5OiBhIHJhbmdlYmxvY2sgd2lsbFxuXHRcdC8vIG9ubHkgcmV0dXJuIHRoZSBjb3JyZWN0IGJsb2NrIGxvZyBpZiB3Z1JlbGV2YW50VXNlck5hbWUgaXMgdGhlXG5cdFx0Ly8gZXhhY3QgcmFuZ2UsIG5vdCBtZXJlbHkgYSBmdW50aW9uYWwgZXF1aXZhbGVudFxuXHRcdGlmIChUd2lua2xlLmJsb2NrLmhhc0Jsb2NrTG9nKSB7XG5cdFx0XHQvLyBBZGQgbW9yZSBkZXRhaWxzXG5cdFx0XHRjb25zdCBibG9ja2xvZ2luZm8gPSBbXTtcblx0XHRcdGNvbnN0ICRibG9ja2xvZ2xpbmsgPSAkKCc8c3Bhbj4nKS5hcHBlbmQoXG5cdFx0XHRcdCQoXG5cdFx0XHRcdFx0YDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0YWN0aW9uOiAndmlldycsXG5cdFx0XHRcdFx0XHRwYWdlOiByZWxldmFudFVzZXJOYW1lLFxuXHRcdFx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHR9KX1cIj4ke3dpbmRvdy53Z1VMUygn5bCB56aB5pel5b+XJywgJ+WwgemOluaXpeiqjCcpfTwvYT4pYFxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0XHRibG9ja2xvZ2luZm8ucHVzaCh3aW5kb3cud2dVTFMoJ+WwgeemgeivpuaDhScsICflsIHpjpboqbPmg4UnKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBbbGFzdEJsb2NrQWN0aW9uXSA9IFR3aW5rbGUuYmxvY2suYmxvY2tMb2c7XG5cdFx0XHRcdGNvbnN0IGJsb2NrQWN0aW9uID0gbGFzdEJsb2NrQWN0aW9uLmFjdGlvbiA9PT0gJ3VuYmxvY2snID8gVHdpbmtsZS5ibG9jay5ibG9ja0xvZ1sxXSA6IGxhc3RCbG9ja0FjdGlvbjtcblx0XHRcdFx0YmxvY2tsb2dpbmZvLnB1c2goXG5cdFx0XHRcdFx0YOatpCR7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5pcC5pc1JhbmdlKHJlbGV2YW50VXNlck5hbWUpXG5cdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCdJUOiMg+WbtCcsICdJUOevhOWcjScpXG5cdFx0XHRcdFx0XHRcdDogd2luZG93LndnVUxTKCfnlKjmiLcnLCAn5L2/55So6ICFJylcblx0XHRcdFx0XHR95pu+5ZyoYCxcblx0XHRcdFx0XHQkKGA8Yj4ke25ldyBNb3JlYml0cy5kYXRlKGJsb2NrQWN0aW9uLnRpbWVzdGFtcCkuY2FsZW5kYXIoJ3V0YycpfTwvYj5gKVswXSxcblx0XHRcdFx0XHRg6KKrJHtibG9ja0FjdGlvbi51c2VyfSR7d2luZG93LndnVUxTKCflsIHnpoEnLCAn5bCB6Y6WJyl9YCxcblx0XHRcdFx0XHQkKGA8Yj4ke01vcmViaXRzLnN0cmluZy5mb3JtYXRUaW1lKGJsb2NrQWN0aW9uLnBhcmFtcy5kdXJhdGlvbil9PC9iPmApWzBdXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChsYXN0QmxvY2tBY3Rpb24uYWN0aW9uID09PSAndW5ibG9jaycpIHtcblx0XHRcdFx0XHRibG9ja2xvZ2luZm8ucHVzaChg77yMJHtuZXcgTW9yZWJpdHMuZGF0ZShsYXN0QmxvY2tBY3Rpb24udGltZXN0YW1wKS5jYWxlbmRhcigndXRjJyl96Kej5bCBYCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gYmxvY2sgb3IgcmVibG9ja1xuXHRcdFx0XHRcdGJsb2NrbG9naW5mby5wdXNoKFxuXHRcdFx0XHRcdFx0YO+8jCR7bmV3IE1vcmViaXRzLmRhdGUoYmxvY2tBY3Rpb24ucGFyYW1zLmV4cGlyeSkuY2FsZW5kYXIoJ3V0YycpfSR7d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJyl9YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiaGFzYmxvY2tsb2dcIl0gc3BhbicpLmxhc3QoKVswXSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMud2FybihibG9ja2xvZ2luZm8sICRibG9ja2xvZ2xpbmtbMF0pO1xuXHRcdH1cblx0XHQvLyBNYWtlIHN1cmUgYWxsIHRoZSBmaWVsZHMgYXJlIGNvcnJlY3QgYmFzZWQgb24gaW5pdGlhbCBkZWZhdWx0c1xuXHRcdGlmIChibG9ja0JveCkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfcHJlc2V0KGUpO1xuXHRcdH0gZWxzZSBpZiAodGVtcGxhdGVCb3gpIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlKGUpO1xuXHRcdH1cblx0fTtcblx0LyoqXG5cdCAqIEtlZXAgYWxwaGFiZXRpemVkIGJ5IGtleSBuYW1lLCBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzIGVzdGFibGlzaGVzXG5cdCAqICAgIHRoZSBvcmRlciB0aGV5IHdpbGwgYXBwZWFyIGluIHRoZSBpbnRlcmZhY2Vcblx0ICpcblx0ICogQmxvY2sgcHJlc2V0IGZvcm1hdCwgYWxsIGtleXMgYWNjZXB0IG9ubHkgJ3RydWUnIChvbWl0IGZvciBmYWxzZSkgZXhjZXB0IHdoZXJlIG5vdGVkOlxuXHQgKiA8dGl0bGUgb2YgYmxvY2sgdGVtcGxhdGU+IDoge1xuXHQgKiAgIGF1dG9ibG9jazogPGF1dG9ibG9jayBhbnkgSVAgYWRkcmVzc2VzIHVzZWQgKGZvciByZWdpc3RlcmVkIHVzZXJzIG9ubHkpPlxuXHQgKiAgIGRpc2FibGV0YWxrOiA8ZGlzYWJsZSB1c2VyIGZyb20gZWRpdGluZyB0aGVpciBvd24gdGFsayBwYWdlIHdoaWxlIGJsb2NrZWQ+XG5cdCAqICAgZXhwaXJ5OiA8c3RyaW5nIC0gZXhwaXJ5IHRpbWVzdGFtcCwgY2FuIGluY2x1ZGUgcmVsYXRpdmUgdGltZXMgbGlrZSBcIjUgbW9udGhzXCIsIFwiMiB3ZWVrc1wiIGV0Yz5cblx0ICogICBmb3JBbm9uT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyBhbiBJUD5cblx0ICogICBmb3JSZWdpc3RlcmVkT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyByZWdpc3RlcmVkPlxuXHQgKiAgIGxhYmVsOiA8c3RyaW5nIC0gbGFiZWwgZm9yIHRoZSBvcHRpb24gb2YgdGhlIGRyb3Bkb3duIGluIHRoZSBpbnRlcmZhY2UgKGtlZXAgYnJpZWYpPlxuXHQgKiAgIG5vZW1haWw6IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBzZW5kaW5nIGVtYWlsIHRocm91Z2ggU3BlY2lhbDpFbWFpbHVzZXJcblx0ICogICBwYWdlUGFyYW06IDxzZXQgaWYgdGhlIGFzc29jaWF0ZWQgYmxvY2sgdGVtcGxhdGUgYWNjZXB0cyBhIHBhZ2UgcGFyYW1ldGVyPlxuXHQgKiAgIHByZXBlbmRSZWFzb246IDxzdHJpbmcgLSBwcmVwZW5kcyB0aGUgdmFsdWUgb2YgJ3JlYXNvbicgdG8gdGhlIGVuZCBvZiB0aGUgZXhpc3RpbmcgcmVhc29uLCBuYW1lbHkgZm9yIHdoZW4gcmV2b2tpbmcgdGFsayBwYWdlIGFjY2Vzcz5cblx0ICogICBub2NyZWF0ZTogPGJsb2NrIGFjY291bnQgY3JlYXRpb24gZnJvbSB0aGUgdXNlcidzIElQIChmb3IgYW5vbnltb3VzIHVzZXJzIG9ubHkpPlxuXHQgKiAgIG5vbnN0YW5kYXJkOiA8dGVtcGxhdGUgZG9lcyBub3QgY29uZm9ybSB0byBzdGV3YXJkc2hpcCBvZiBbW2Vud2lraTpXaWtpUHJvamVjdCBVc2VyIFdhcm5pbmdzXV0gYW5kIG1heSBub3QgYWNjZXB0IHN0YW5kYXJkIHBhcmFtZXRlcnM+XG5cdCAqICAgcmVhc29uOiA8c3RyaW5nIC0gYmxvY2sgcmF0aW9uYWxlLCBhcyB3b3VsZCBhcHBlYXIgaW4gdGhlIGJsb2NrIGxvZyxcblx0ICogICAgICAgICAgICBhbmQgdGhlIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUsIHVubGVzcyAnc3VtbWFyeScgaXMgc2V0PlxuXHQgKiAgIHJlYXNvblBhcmFtOiA8c2V0IGlmIHRoZSBhc3NvY2lhdGVkIGJsb2NrIHRlbXBsYXRlIGFjY2VwdHMgYSByZWFzb24gcGFyYW1ldGVyPlxuXHQgKiAgIHNpZzogPHN0cmluZyAtIHNldCB0byB+fn5+IGlmIGJsb2NrIHRlbXBsYXRlIGRvZXMgbm90IGFjY2VwdCBcInRydWVcIiBhcyB0aGUgdmFsdWUsIG9yIHNldCBudWxsIHRvIG9taXQgc2lnIHBhcmFtIGFsdG9nZXRoZXI+XG5cdCAqICAgc3VtbWFyeTogPHN0cmluZyAtIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUgdG8gdXNlcidzIHRhbGsgcGFnZSwgaWYgbm90IHNldCwgJ3JlYXNvbicgaXMgdXNlZD5cblx0ICogICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IDxzZXQgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnksIGFzIHdpdGggYXR0YWNrIHBhZ2VzPlxuXHQgKiAgIHRlbXBsYXRlTmFtZTogPHN0cmluZyAtIG5hbWUgb2YgdGVtcGxhdGUgdG8gdXNlIChpbnN0ZWFkIG9mIGtleSBuYW1lKSwgZW50cnkgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIFRlbXBsYXRlcyBsaXN0LlxuXHQgKiAgICAgICAgICAgICAgICAgIChlLmcuIHVzZSBhbm90aGVyIHRlbXBsYXRlIGJ1dCB3aXRoIGRpZmZlcmVudCBibG9jayBvcHRpb25zKT5cblx0ICogICB1c2VJbml0aWFsT3B0aW9uczogPHdoZW4gcHJlc2V0IGlzIGNob3Nlbiwgb25seSBjaGFuZ2UgZ2l2ZW4gYmxvY2sgb3B0aW9ucywgbGVhdmUgb3RoZXJzIGFzIHRoZXkgd2VyZT5cblx0ICpcblx0ICogV0FSTklORzogJ2Fub25vbmx5JyBhbmQgJ2FsbG93dXNlcnRhbGsnIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cdCAqICAgVG8gZGlzYWJsZSwgc2V0ICdoYXJkYmxvY2snIGFuZCAnZGlzYWJsZXRhbGsnLCByZXNwZWN0aXZlbHlcblx0ICovXG5cdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mbyA9IHtcblx0XHQvLyB1dy1wcmVmaXhlZFxuXHRcdCd1dy1ibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+lJywgJ+WwgemOlumAmuefpScpLFxuXHRcdFx0c3VwcHJlc3NBcnRpY2xlSW5TdW1tYXJ5OiB0cnVlLFxuXHRcdH0sXG5cdFx0J3V3LWJsb2NraW5kZWYnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpScsICflsIHpjpbpgJrnn6UnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy1ibG9ja25vdGFsayc6IHtcblx0XHRcdGRpc2FibGV0YWxrOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muemgeatoue8lui+keiuqOiuuumhtScsICflsIHpjpbpgJrnn6XvvJrnpoHmraLnt6jovK/oqI7oq5bpoIEnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy0zYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfov53lj41bW0xJQjozUlJ85Zue6YCA5LiN6L+H5LiJ5Y6f5YiZXV0nLCAn6YGV5Y+NW1tMSUI6M1JSfOWbnumAgOS4jemBjuS4ieWOn+WJh11dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrov53lj41bW0xJQjozUlJ85Zue6YCA5LiN6L+H5LiJ5Y6f5YiZXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya6YGV5Y+NW1tMSUI6M1JSfOWbnumAgOS4jemBjuS4ieWOn+WJh11dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1hZGJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5pWj5Y+RW1tMSUI6U09BUHzmlaPlj5Hlub/lkYrmiJblrqPkvKBdXScsICfmlaPnmbxbW0xJQjpTT0FQfOaVo+eZvOW7o+WRiuaIluWuo+WCs11dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmlaPlj5FbW0xJQjpTT0FQfOaVo+WPkeW5v+WRiuaIluWuo+S8oF1dJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaVo+eZvFtbTElCOlNPQVB85pWj55m85buj5ZGK5oiW5a6j5YKzXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LWF0dGFja2Jsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNJVnzooYzkuLrml6DnpLxdXeaIlltbTElCOk5QQXzkurrouqvmlLvlh7tdXScsXG5cdFx0XHRcdCdbW0xJQjpDSVZ86KGM54K654Sh56auXV3miJZbW0xJQjpOUEF85Lq66Lqr5pS75pOKXV0nXG5cdFx0XHQpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77yaW1tMSUI6Q0lWfOihjOS4uuaXoOekvF1d5oiWW1tMSUI6TlBBfOS6uui6q+aUu+WHu11dJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8mltbTElCOkNJVnzooYzngrrnhKHnpq5dXeaIlltbTElCOk5QQXzkurrouqvmlLvmk4pdXSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQndXctY29weXJpZ2h0YmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu61bW0xJQjpDT1BZVklPfOS+teeKr+iRl+S9nOadg11dJywgJ+aMgee6jFtbTElCOkNPUFlWSU985L6154qv6JGX5L2c5qyKXV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaMgee7rVtbTElCOkNPUFlWSU985L6154qv6JGX5L2c5p2DXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oyB57qMW1tMSUI6Q09QWVZJT3zkvrXniq/okZfkvZzmrIpdXSdcblx0XHRcdCksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy1ibG9ja2luZGVmJyxcblx0XHR9LFxuXHRcdCd1dy1kYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu61bW0xJQjpWQU585Yig6Zmk5YaF5a65XV0nLCAn5oyB57qMW1tMSUI6VkFOfOWIqumZpOWFp+WuuV1dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaMgee7rVtbTElCOlZBTnzliKDpmaTlhoXlrrldXScsICflsIHpjpbpgJrnn6XvvJrmjIHnuoxbW0xJQjpWQU585Yiq6Zmk5YWn5a65XV0nKSxcblx0XHR9LFxuXHRcdCd1dy1oYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW0xJQjrpqprmibB86aqa5omwXV3lhbbku5bnlKjmiLcnLCAnW1tMSUI66ai35pO+fOmot+aTvl1d5YW25LuW5L2/55So6ICFJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mltbTElCOumqmuaJsHzpqprmibBdXeWFtuS7lueUqOaItycsICflsIHpjpbpgJrnn6XvvJpbW0xJQjrpqLfmk7586ai35pO+XV3lhbbku5bkvb/nlKjogIUnKSxcblx0XHR9LFxuXHRcdCd1dy12YmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW0xJQjpWQU5856C05Z2PXV0nLCAnW1tMSUI6VkFOfOegtOWjnl1dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mltbTElCOlZBTnznoLTlnY9dXScsICflsIHpjpbpgJrnn6XvvJpbW0xJQjpWQU5856C05aOeXV0nKSxcblx0XHR9LFxuXHRcdCd1dy1pbGxlZ2FsYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63liqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTpnZ7ms5XlhoXlrrknLCAn5oyB57qM5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE6Z2e5rOV5YWn5a65JyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmjIHnu63liqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTpnZ7ms5XlhoXlrrknLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oyB57qM5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE6Z2e5rOV5YWn5a65J1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1zb2NrYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmu6XnlKhbW0xJQjpTT0NLfOWkmuS4qui0puWPt11dJywgJ+a/q+eUqFtbTElCOlNPQ0t85aSa5YCL6LOs6JmfXV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5rul55SoW1tMSUI6U09DS3zlpJrkuKrotKblj7ddXScsICflsIHpjpbpgJrnn6XvvJrmv6vnlKhbW0xJQjpTT0NLfOWkmuWAi+izrOiZn11dJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy1ibG9jaycsXG5cdFx0fSxcblx0XHQvLyB1dy11LXByZWZpeGVkXG5cdFx0J3V3LXVibG9jayc6IHtcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2t9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+S4jeW9k+eUqOaIt+WQjeOAgei9r+WwgeemgScsICfkuI3nlbbkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbTElCOlV855So5oi35ZCN5p2h5L6LXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oKo55qE5L2/55So6ICF5ZCN56ix6YGV5Y+NW1tMSUI6VXzkvb/nlKjogIXlkI3nqLHmop3kvotdXSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQndXctdWJsb2NrLWlsbGVnYWwnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2staWxsZWdhbH19PCEtLSAke3dpbmRvdy53Z1VMUygn5LiN5ZCI6KeE55qE55So5oi35ZCNJywgJ+S4jeWQiOimj+eahOS9v+eUqOiAheWQjeeosScpfSAtLT5gLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5oKo55qE55So5oi35ZCN6L+d5Y+NW1tMSUI6VXznlKjmiLflkI3mnaHkvotdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW0xJQjpVfOS9v+eUqOiAheWQjeeoseaineS+i11dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy11YmxvY2stc3VnZ2VzdGl2ZSc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IGB7e3V3LXVibG9jay1zdWdnZXN0aXZlfX08IS0tICR7d2luZG93LndnVUxTKCfor6/lr7zjgIHmt7fmt4bmgKfnlKjmiLflkI0nLCAn6Kqk5bCO44CB5re35reG5oCn5L2/55So6ICF5ZCN56ixJyl9IC0tPmAsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmgqjnmoTnlKjmiLflkI3ov53lj41bW0xJQjpVfOeUqOaIt+WQjeadoeS+i11dJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaCqOeahOS9v+eUqOiAheWQjeeosemBleWPjVtbTElCOlV85L2/55So6ICF5ZCN56ix5qKd5L6LXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1zcGFtJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLXNwYW19fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+Wuo+S8oOaAp+eUqOaIt+WQjeaIluWuo+S8oOaAp+e8lui+kScsICflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmiJblrqPlgrPmgKfnt6jovK8nKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbTElCOlV855So5oi35ZCN5p2h5L6LXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oKo55qE5L2/55So6ICF5ZCN56ix6YGV5Y+NW1tMSUI6VXzkvb/nlKjogIXlkI3nqLHmop3kvotdXSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQvLyBvdGhlciBibG9jayB0ZW1wbGF0ZXNcblx0XHQncmFuZ2UgYmxvY2snOiB7XG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0cmVhc29uOiAne3tyYW5nZSBibG9ja319Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0bm9uc3RhbmRhcmQ6IHRydWUsXG5cdFx0XHRmb3JBbm9uT25seTogdHJ1ZSxcblx0XHRcdHNpZzogJ35+Jy5jb25jYXQoJ35+JyksXG5cdFx0fSxcblx0XHQnYmxvY2tlZCBwcm94eSc6IHtcblx0XHRcdGV4cGlyeTogJzIgeWVhcnMnLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0aGFyZGJsb2NrOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tibG9ja2VkIHByb3h5fX0nLFxuXHRcdFx0c2lnOiBudWxsLFxuXHRcdH0sXG5cdFx0Y2hlY2t1c2VyYmxvY2s6IHtcblx0XHRcdGV4cGlyeTogJzEgd2VlaycsXG5cdFx0XHRmb3JBbm9uT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0bm9uc3RhbmRhcmQ6IHRydWUsXG5cdFx0XHRyZWFzb246ICd7e2NoZWNrdXNlcmJsb2NrfX0nLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdCdjaGVja3VzZXJibG9jay1hY2NvdW50Jzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tjaGVja3VzZXJibG9jay1hY2NvdW50fX0nLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdCdzY2hvb2wgYmxvY2snOiB7XG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tzY2hvb2wgYmxvY2t9fScsXG5cdFx0XHRzaWc6ICd+ficuY29uY2F0KCd+ficpLFxuXHRcdH0sXG5cdFx0J0JvdCBibG9jayBtZXNzYWdlJzoge1xuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5py65Zmo5Lq65pWF6ZqcJywgJ+apn+WZqOS6uuaVhemanCcpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrmnLrlmajkurrmlYXpmpwnLCAn5bCB6Y6W6YCa55+l77ya5qmf5Zmo5Lq65pWF6ZqcJyksXG5cdFx0XHRzaWc6ICd+ficuY29uY2F0KCd+ficpLFxuXHRcdH0sXG5cdFx0Ly8gb3RoZXIgYmxvY2sgcmVhc29uc1xuXHRcdGJpb2Jsb2NrOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfov53lj43nlJ/ogIXkvKDorrDmnaHkvosnLCAn6YGV5Y+N55Sf6ICF5YKz6KiY5qKd5L6LJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mui/neWPjeeUn+iAheS8oOiusOadoeS+iycsICflsIHpjpbpgJrnn6XvvJrpgZXlj43nlJ/ogIXlgrPoqJjmop3kvosnKSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LXZibG9jaycsXG5cdFx0fSxcblx0XHR1Y2Jsb2NrOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCflsaHmrKHlop7liqDmsqHmnIlbW0xJQjpSU3zlj6/pnaDmnaXmupBdXeeahOi1hOaWmScsICflsaLmrKHlop7liqDmspLmnIlbW0xJQjpSU3zlj6/pnaDkvobmupBdXeeahOizh+aWmScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5bGh5qyh5aKe5Yqg5rKh5pyJW1tMSUI6UlN85Y+v6Z2g5p2l5rqQXV3nmoTotYTmlpknLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5bGi5qyh5aKe5Yqg5rKS5pyJW1tMSUI6UlN85Y+v6Z2g5L6G5rqQXV3nmoTos4fmlpknXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2snLFxuXHRcdH0sXG5cdFx0bnBibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5aKe5Yqg5peg5oSP5LmJ5paH5a2XJywgJ+WcqOaineebruS4reWinuWKoOeEoeaEj+e+qeaWh+WtlycpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrlnKjmnaHnm67kuK3lop7liqDml6DmhI/kuYnmloflrZcnLCAn5bCB6Y6W6YCa55+l77ya5Zyo5qKd55uu5Lit5aKe5Yqg54Sh5oSP576p5paH5a2XJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy12YmxvY2snLFxuXHRcdH0sXG5cdFx0J3BvaW50LWJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63miZPliLbluqbmk6bovrnnkIMnLCAn5oyB57qM5omT5Yi25bqm5pOm6YKK55CDJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaMgee7reaJk+WItuW6puaTpui+ueeQgycsICflsIHpjpbpgJrnn6XvvJrmjIHnuozmiZPliLbluqbmk6bpgornkIMnKSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NrJyxcblx0XHR9LFxuXHRcdCdzb2NrLWNvbnRyaWJzJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfnoa7orqTkuLpbW0xJQjpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShIC0g5qC55o2u55So5oi36LSh54yu56Gu5a6aJyxcblx0XHRcdFx0J+eiuuiqjeeCultbTElCOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEgLSDmoLnmk5rkvb/nlKjogIXosqLnjbvnorrlrponXG5cdFx0XHQpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya56Gu6K6k5Li6W1tMSUI6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrnorroqo3ngrpbW0xJQjpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShJ1xuXHRcdFx0KSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NraW5kZWYnLFxuXHRcdH0sXG5cdFx0J3NvY2stY3UnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+ehruiupOS4ultbTElCOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEgLSDnlKjmiLfmn6XmoLjnoa7orqQnLFxuXHRcdFx0XHQn56K66KqN54K6W1tMSUI6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoSAtIOS9v+eUqOiAheafpeaguOeiuuiqjSdcblx0XHRcdCksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrnoa7orqTkuLpbW0xJQjpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8mueiuuiqjeeCultbTElCOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEnXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2tpbmRlZicsXG5cdFx0fSxcblx0XHQndXctdWJsb2NrLWF0dGFjayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IGB7e3V3LXVibG9jay1hdHRhY2t9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+aUu+WHu+aAp+eUqOaIt+WQjScsICfmlLvmk4rmgKfkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5pS75Ye75oCn55So5oi35ZCNJywgJ+WwgemOlumAmuefpe+8muaUu+aTiuaAp+S9v+eUqOiAheWQjeeosScpLFxuXHRcdH0sXG5cdFx0Ly8gQmVnaW4gcGFydGlhbCBibG9jayB0ZW1wbGF0ZXMsIGFjY2Vzc2VkIGluIFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHNQYXJ0aWFsXG5cdFx0J3V3LXBibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdG5vY3JlYXRlOiBmYWxzZSxcblx0XHRcdHBhZ2VQYXJhbTogZmFsc2UsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOW3suiiq+emgeatoue8lui+keacieWFveaho+ahiOmmhueahOmDqOWIhuWMuuWfnycsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjlt7LooqvnpoHmraLnt6jovK/mnInnjbjmqpTmoYjppKjnmoTpg6jliIbljYDln58nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXBibG9ja2luZGVmJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0bm9jcmVhdGU6IGZhbHNlLFxuXHRcdFx0cGFnZVBhcmFtOiBmYWxzZSxcblx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5oKo5bey6KKr5rC45LmF56aB5q2i57yW6L6R5pyJ5YW95qGj5qGI6aaG55qE6YOo5YiG5Yy65Z+fJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaCqOW3suiiq+awuOS5heemgeatoue3qOi8r+acieeNuOaqlOahiOmkqOeahOmDqOWIhuWNgOWfnydcblx0XHRcdCksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5ibG9jay50cmFuc2Zvcm1CbG9ja1ByZXNldHMgPSAoKSA9PiB7XG5cdFx0Ly8gTWVyZ2UgY3VzdG9tIHJlYXNvblxuXHRcdGZvciAoY29uc3QgaXRlbSBvZiBUd2lua2xlLmdldFByZWYoJ2N1c3RvbUJsb2NrUmVhc29uTGlzdCcpKSB7XG5cdFx0XHRjb25zdCBuZXdLZXkgPSBgJHtpdGVtLnZhbHVlfXwke2l0ZW0ubGFiZWx9YDtcblx0XHRcdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tuZXdLZXldID0ge1xuXHRcdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0XHQuLi5Ud2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0sXG5cdFx0XHRcdHJlYXNvbjogaXRlbS5sYWJlbCxcblx0XHRcdFx0dGVtcGxhdGVOYW1lOiBpdGVtLnZhbHVlLFxuXHRcdFx0fTtcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0gPSB7XG5cdFx0XHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0XHRcdGN1c3RvbTogdHJ1ZSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gc3VwcGx5IHNlbnNpYmxlIGRlZmF1bHRzXG5cdFx0Zm9yIChjb25zdCBbcHJlc2V0LCBzZXR0aW5nc10gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvKSkge1xuXHRcdFx0c2V0dGluZ3Muc3VtbWFyeSB8fD0gc2V0dGluZ3MucmVhc29uO1xuXHRcdFx0c2V0dGluZ3Muc2lnID0gc2V0dGluZ3Muc2lnID09PSB1bmRlZmluZWQgPyAneWVzJyA6IHNldHRpbmdzLnNpZztcblx0XHRcdHNldHRpbmdzLmluZGVmaW5pdGUgfHw9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHNldHRpbmdzLmV4cGlyeSk7XG5cdFx0XHRpZiAoIVR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkICYmIHNldHRpbmdzLmluZGVmaW5pdGUpIHtcblx0XHRcdFx0c2V0dGluZ3MuZXhwaXJ5ID0gJzEgZGF5Jztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNldHRpbmdzLmV4cGlyeSB8fD0gJzEgZGF5Jztcblx0XHRcdH1cblx0XHRcdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1twcmVzZXRdID0gc2V0dGluZ3M7XG5cdFx0fVxuXHR9O1xuXHQvLyBUaGVzZSBhcmUgdGhlIGdyb3VwcyBvZiBwcmVzZXRzIGFuZCBkZWZpbmVzIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFwcGVhci4gRm9yIGVhY2ggbGlzdCBpdGVtOlxuXHQvLyAgIGxhYmVsOiA8c3RyaW5nLCB0aGUgZGVzY3JpcHRpb24gdGhhdCB3aWxsIGJlIHZpc2libGUgaW4gdGhlIGRyb3Bkb3duPlxuXHQvLyAgIHZhbHVlOiA8c3RyaW5nLCB0aGUga2V5IG9mIGEgcHJlc2V0IGluIGJsb2NrUHJlc2V0c0luZm8+XG5cdC8vICAgbWV0YTogPGJvb2xlYW4sIHNob3cgaW4gdGVtcGxhdGVzIG9ubHk+XG5cdFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHMgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pmu6YCa5bCB56aBJywgJ+aZrumAmuWwgemOlicpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCa55So5bCB56aB77yI6Ieq5a6a5LmJ55CG55Sx77yJJywgJ+mAmueUqOWwgemOlu+8iOiHquiogueQhueUse+8iScpLCB2YWx1ZTogJ3V3LWJsb2NrJ30sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DpmZDmnJ/lsIHnpoHvvIjoh6rlrprkuYnnkIbnlLHvvIknLCAn54Sh6ZmQ5pyf5bCB6Y6W77yI6Ieq6KiC55CG55Sx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1ibG9ja2luZGVmJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+emgeatoue8lui+keiuqOiuuumhtScsICfnpoHmraLnt6jovK/oqI7oq5bpoIEnKSwgdmFsdWU6ICd1dy1ibG9ja25vdGFsaycsIG1ldGE6IHRydWV9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N5Zue6YCA5LiN6L+H5LiJ5Y6f5YiZJywgJ+mBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJhycpLCB2YWx1ZTogJ3V3LTNibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWj5Y+R5bm/5ZGK5oiW5a6j5LygJywgJ+aVo+eZvOW7o+WRiuaIluWuo+WCsycpLCB2YWx1ZTogJ3V3LWFkYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+ihjOS4uuaXoOekvOaIluS6uui6q+aUu+WHuycsICfooYzngrrnhKHnpq7miJbkurrouqvmlLvmk4onKSwgdmFsdWU6ICd1dy1hdHRhY2tibG9jayd9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh5Yqg5YWl5L6154qv6JGX5L2c5p2D55qE5YaF5a65JywgJ+WkmuasoeWKoOWFpeS+teeKr+iRl+S9nOasiueahOWFp+WuuScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctY29weXJpZ2h0YmxvY2snLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg5pWF5Yig6Zmk5YaF5a65JywgJ+eEoeaVheWIqumZpOWFp+WuuScpLCB2YWx1ZTogJ3V3LWRibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6aqa5omw55So5oi3JywgJ+mot+aTvuS9v+eUqOiAhScpLCB2YWx1ZTogJ3V3LWhibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn56C05Z2PJywgJ+egtOWjnicpLCB2YWx1ZTogJ3V3LXZibG9jaycsIHNlbGVjdGVkOiB0cnVlfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aMgee7reWKoOWFpeS4jeespuWQiOS4reWbveS7t+WAvOingueahOmdnuazleWGheWuuScsICfmjIHnuozliqDlhaXkuI3nrKblkIjkuK3lnIvlg7nlgLzop4DnmoTpnZ7ms5XlhaflrrknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3V3LWlsbGVnYWxibG9jaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfmu6XnlKjlpJrkuKrotKblj7cnLCAn5r+r55So5aSa5YCL6LOs6JmfJyksIHZhbHVlOiAndXctc29ja2Jsb2NrJ30sXG5cdFx0XHRcdC8vIG90aGVyIGJsb2NrIHJlYXNvbnNcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+i/neWPjeeUn+iAheS8oOiusOadoeS+iycsICfpgZXlj43nlJ/ogIXlgrPoqJjmop3kvosnKSwgdmFsdWU6ICdiaW9ibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5bGh5qyh5aKe5Yqg5rKh5pyJ5Y+v6Z2g5p2l5rqQ55qE6LWE5paZJywgJ+WxouasoeWinuWKoOaykuacieWPr+mdoOS+hua6kOeahOizh+aWmScpLCB2YWx1ZTogJ3VjYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOadoeebruS4reWinuWKoOaXoOaEj+S5ieaWh+WtlycsICflnKjmop3nm67kuK3lop7liqDnhKHmhI/nvqnmloflrZcnKSwgdmFsdWU6ICducGJsb2NrJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63miZPliLbluqbmk6bovrnnkIMnLCAn5oyB57qM5omT5Yi25bqm5pOm6YKK55CDJyksIHZhbHVlOiAncG9pbnQtYmxvY2snfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn56Gu6K6k5Li65YKA5YSh5oiW55yf5Lq65YKA5YSh77yI5qC55o2u55So5oi36LSh54yu56Gu5a6a77yJJyxcblx0XHRcdFx0XHRcdCfnorroqo3ngrrlgoDlhKHmiJbnnJ/kurrlgoDlhKHvvIjmoLnmk5rkvb/nlKjogIXosqLnjbvnorrlrprvvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NvY2stY29udHJpYnMnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfnoa7orqTkuLrlgoDlhKHmiJbnnJ/kurrlgoDlhKHvvIjnlKjmiLfmn6XmoLjnoa7orqTvvIknLFxuXHRcdFx0XHRcdFx0J+eiuuiqjeeCuuWCgOWEoeaIluecn+S6uuWCgOWEoe+8iOS9v+eUqOiAheafpeaguOeiuuiqje+8iSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiAnc29jay1jdScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnLrlmajkurrlj5HnlJ/mlYXpmpzlubblv4XpobvntKfmgKXlgZzmraInLCAn5qmf5Zmo5Lq655m855Sf5pWF6Zqc5Lim5b+F6aCI57eK5oCl5YGc5q2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdCb3QgYmxvY2sgbWVzc2FnZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0Y3VzdG9tOiB0cnVlLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5bCB56aB55CG55SxJywgJ+iHquioguWwgemOlueQhueUsScpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35ZCN5bCB56aBJywgJ+S9v+eUqOiAheWQjeeoseWwgemOlicpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N55So5oi35ZCN5p2h5L6LJywgJ+mBleWPjeS9v+eUqOiAheWQjeeoseaineS+iycpLCB2YWx1ZTogJ3V3LXVibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5ZCI6KeE55qE55So5oi35ZCNJywgJ+S4jeWQiOimj+eahOS9v+eUqOiAheWQjeeosScpLCB2YWx1ZTogJ3V3LXVibG9jay1pbGxlZ2FsJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCflrqPkvKDmgKfnlKjmiLflkI0nLCAn5a6j5YKz5oCn5L2/55So6ICF5ZCN56ixJyksIHZhbHVlOiAndXctdWJsb2NrLXNwYW0nfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+aUu+WHu+aAp+eUqOaIt+WQjScsICfmlLvmk4rmgKfkvb/nlKjogIXlkI3nqLEnKSwgdmFsdWU6ICd1dy11YmxvY2stYXR0YWNrJ30sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmt7fmt4bmgKfmiJbor6/lr7zmgKfnlKjmiLflkI0nLCAn5re35reG5oCn5oiW6Kqk5bCO5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy11YmxvY2stc3VnZ2VzdGl2ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICflhbbku5bmqKHmnb8nLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7bGFiZWw6ICdyYW5nZSBibG9jaycsIHZhbHVlOiAncmFuZ2UgYmxvY2snLCBmb3JBbm9uT25seTogdHJ1ZX0sXG5cdFx0XHRcdHtsYWJlbDogJ3NjaG9vbCBibG9jaycsIHZhbHVlOiAnc2Nob29sIGJsb2NrJywgZm9yQW5vbk9ubHk6IHRydWV9LFxuXHRcdFx0XHR7bGFiZWw6ICdibG9ja2VkIHByb3h5JywgdmFsdWU6ICdibG9ja2VkIHByb3h5JywgZm9yQW5vbk9ubHk6IHRydWV9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35p+l5qC45bCB56aB77yI5Li755So5oi377yJJywgJ+S9v+eUqOiAheafpeaguOWwgemOlu+8iOS4u+S9v+eUqOiAhe+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnY2hlY2t1c2VyYmxvY2snLFxuXHRcdFx0XHRcdGZvckFub25Pbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35p+l5qC45bCB56aB77yI5a2Q55So5oi377yJJywgJ+S9v+eUqOiAheafpeaguOWwgemOlu+8iOWtkOS9v+eUqOiAhe+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnY2hlY2t1c2VyYmxvY2stYWNjb3VudCcsXG5cdFx0XHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHNQYXJ0aWFsID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOingemDqOWIhuWwgeemgeeQhueUsScsICfluLjopovpg6jliIblsIHpjpbnkIbnlLEnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAmueUqOmDqOWIhuWwgeemge+8iOiHquWumuS5ieeQhueUse+8iScsICfpgJrnlKjpg6jliIblsIHpjpbvvIjoh6roqILnkIbnlLHvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3V3LXBibG9jaycsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DpmZDmnJ/pg6jliIblsIHnpoHvvIjoh6rlrprkuYnnkIbnlLHvvIknLCAn54Sh6ZmQ5pyf6YOo5YiG5bCB6Y6W77yI6Ieq6KiC55CG55Sx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1wYmxvY2tpbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZmlsdGVyZWRfYmxvY2tfZ3JvdXBzID0gKGdyb3VwLCBzaG93X3RlbXBsYXRlKSA9PiB7XG5cdFx0cmV0dXJuICQubWFwKGdyb3VwLCAoYmxvY2tHcm91cCkgPT4ge1xuXHRcdFx0Ly8gQWRkIGN1c3RvbSByZWFzb25cblx0XHRcdGlmIChibG9ja0dyb3VwLmN1c3RvbSkge1xuXHRcdFx0XHRpZiAoc2hvd190ZW1wbGF0ZSkge1xuXHRcdFx0XHRcdGxldCB0ZW1wbGF0ZXMgPSAkLm1hcChUd2lua2xlLmdldFByZWYoJ2N1c3RvbUJsb2NrUmVhc29uTGlzdCcpLCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tpdGVtLnZhbHVlXS5jdXN0b20pIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGl0ZW0udmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGVtcGxhdGVzID0gTW9yZWJpdHMuYXJyYXkudW5pcSh0ZW1wbGF0ZXMpO1xuXHRcdFx0XHRcdGJsb2NrR3JvdXAubGlzdCA9ICQubWFwKHRlbXBsYXRlcywgKHRlbXBsYXRlKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmqKHmnb8nLCAn6Ieq6KiC5qih5p2/JyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YmxvY2tHcm91cC5saXN0ID0gJC5tYXAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21CbG9ja1JlYXNvbkxpc3QnKSwgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBpdGVtLmxhYmVsLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYCR7aXRlbS52YWx1ZX18JHtpdGVtLmxhYmVsfWAsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBsaXN0ID0gJC5tYXAoYmxvY2tHcm91cC5saXN0LCAoYmxvY2tQcmVzZXQpID0+IHtcblx0XHRcdFx0aWYgKCFzaG93X3RlbXBsYXRlICYmIGJsb2NrUHJlc2V0Lm1ldGEpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0c3dpdGNoIChibG9ja1ByZXNldC52YWx1ZSkge1xuXHRcdFx0XHRcdGNhc2UgJ3JhbmdlIGJsb2NrJzpcblx0XHRcdFx0XHRcdGlmICghTW9yZWJpdHMuaXAuaXNSYW5nZShyZWxldmFudFVzZXJOYW1lKSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRibG9ja1ByZXNldC5zZWxlY3RlZCA9ICFNb3JlYml0cy5pcC5nZXQ2NChyZWxldmFudFVzZXJOYW1lKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBibG9ja1NldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2Jsb2NrUHJlc2V0LnZhbHVlXTtcblx0XHRcdFx0bGV0IHJlZ2lzdHJhdGlvblJlc3RyaWN0O1xuXHRcdFx0XHRpZiAoYmxvY2tTZXR0aW5ncy5mb3JSZWdpc3RlcmVkT25seSkge1xuXHRcdFx0XHRcdHJlZ2lzdHJhdGlvblJlc3RyaWN0ID0gVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYmxvY2tTZXR0aW5ncy5mb3JBbm9uT25seSkge1xuXHRcdFx0XHRcdHJlZ2lzdHJhdGlvblJlc3RyaWN0ID0gIVR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlZ2lzdHJhdGlvblJlc3RyaWN0ID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIShibG9ja1NldHRpbmdzLnRlbXBsYXRlTmFtZSAmJiBzaG93X3RlbXBsYXRlKSAmJiByZWdpc3RyYXRpb25SZXN0cmljdCkge1xuXHRcdFx0XHRcdGNvbnN0IHRlbXBsYXRlTmFtZSA9IGJsb2NrU2V0dGluZ3MudGVtcGxhdGVOYW1lIHx8IGJsb2NrUHJlc2V0LnZhbHVlO1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRsYWJlbDogKHNob3dfdGVtcGxhdGUgPyBge3ske3RlbXBsYXRlTmFtZX19fTogYCA6ICcnKSArIGJsb2NrUHJlc2V0LmxhYmVsLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGJsb2NrUHJlc2V0LnZhbHVlLFxuXHRcdFx0XHRcdFx0ZGF0YTogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3RlbXBsYXRlLW5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZU5hbWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWQ6ICEhYmxvY2tQcmVzZXQuc2VsZWN0ZWQsXG5cdFx0XHRcdFx0XHRkaXNhYmxlZDogISFibG9ja1ByZXNldC5kaXNhYmxlZCxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmIChsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGxhYmVsOiBibG9ja0dyb3VwLmxhYmVsLFxuXHRcdFx0XHRcdGxpc3QsXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3ByZXNldCA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3Qga2V5ID0gZm9ybS5wcmVzZXQudmFsdWU7XG5cdFx0aWYgKCFrZXkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay51cGRhdGVfZm9ybShlLCBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9ba2V5XSk7XG5cdFx0aWYgKGZvcm0udGVtcGxhdGUpIHtcblx0XHRcdGZvcm0udGVtcGxhdGUudmFsdWUgPSBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9ba2V5XS50ZW1wbGF0ZU5hbWUgfHwga2V5O1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfdGVtcGxhdGUoZSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9leHBpcnkgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtleHBpcnl9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRpZiAoZS50YXJnZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZXhwaXJ5LnBhcmVudE5vZGUsIHRydWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZXhwaXJ5LnBhcmVudE5vZGUsIGZhbHNlKTtcblx0XHRcdGV4cGlyeS52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5zZWVBbHNvcyA9IFtdO1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnRvZ2dsZV9zZWVfYWxzb3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0Y29uc3QgcmVhc29uID0gdGhpcy5mb3JtLnJlYXNvbi52YWx1ZS5yZXBsYWNlKFxuXHRcdFx0bmV3IFJlZ0V4cChgKDwhLS0gKSjlj4Lop4F85Y+D6KaLKSR7VHdpbmtsZS5ibG9jay5zZWVBbHNvcy5qb2luKCfjgIEnKX0oIC0tPilgKSxcblx0XHRcdCcnXG5cdFx0KTtcblx0XHRUd2lua2xlLmJsb2NrLnNlZUFsc29zID0gVHdpbmtsZS5ibG9jay5zZWVBbHNvcy5maWx0ZXIoKGVsKSA9PiB7XG5cdFx0XHRyZXR1cm4gZWwgIT09IHRoaXMudmFsdWU7XG5cdFx0fSk7XG5cdFx0aWYgKHRoaXMuY2hlY2tlZCkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5zZWVBbHNvcy5wdXNoKHRoaXMudmFsdWUpO1xuXHRcdH1cblx0XHRjb25zdCBzZWVBbHNvTWVzc2FnZSA9IFR3aW5rbGUuYmxvY2suc2VlQWxzb3Muam9pbign44CBJyk7XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suc2VlQWxzb3MubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLmZvcm0ucmVhc29uLnZhbHVlID0gYCR7cmVhc29ufTwhLS0gJHt3aW5kb3cud2dVTFMoJ+WPguingScsICflj4PoposnKX0ke3NlZUFsc29NZXNzYWdlfSAtLT5gO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmZvcm0ucmVhc29uLnZhbHVlID0gcmVhc29uO1xuXHRcdH1cblx0fTtcblx0Ly8gTm8gZHNcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay51cGRhdGVfZm9ybSA9IChlLCBkYXRhKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0bGV0IHtleHBpcnl9ID0gZGF0YTtcblx0XHQvLyBkb24ndCBvdmVycmlkZSBvcmlnaW5hbCBleHBpcnkgaWYgdXNlSW5pdGlhbE9wdGlvbnMgaXMgc2V0XG5cdFx0aWYgKCFkYXRhLnVzZUluaXRpYWxPcHRpb25zKSB7XG5cdFx0XHRpZiAoRGF0ZS5wYXJzZShleHBpcnkpKSB7XG5cdFx0XHRcdGV4cGlyeSA9IG5ldyBEYXRlKGV4cGlyeSkudG9HTVRTdHJpbmcoKTtcblx0XHRcdFx0Zm9ybS5leHBpcnlfcHJlc2V0LnZhbHVlID0gJ2N1c3RvbSc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3JtLmV4cGlyeV9wcmVzZXQudmFsdWUgPSBkYXRhLmV4cGlyeSB8fCAnY3VzdG9tJztcblx0XHRcdH1cblx0XHRcdGZvcm0uZXhwaXJ5LnZhbHVlID0gZXhwaXJ5O1xuXHRcdFx0aWYgKGZvcm0uZXhwaXJ5X3ByZXNldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uZXhwaXJ5LnBhcmVudE5vZGUsIHRydWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uZXhwaXJ5LnBhcmVudE5vZGUsIGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gYm9vbGVhbi1mbGlwcGVkIG9wdGlvbnMsIG1vcmUgYXQgW1ttdzpBUEk6QmxvY2tdXVxuXHRcdGRhdGEuZGlzYWJsZXRhbGsgPSBkYXRhLmRpc2FibGV0YWxrID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGRhdGEuZGlzYWJsZXRhbGs7XG5cdFx0ZGF0YS5oYXJkYmxvY2sgPSBkYXRhLmhhcmRibG9jayA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBkYXRhLmhhcmRibG9jaztcblx0XHQvLyBkaXNhYmxlIGF1dG9ibG9jayBpZiBibG9ja2luZyBhIGJvdFxuXHRcdGlmIChUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCB8fCAvYm90XFxiL2kudGVzdChyZWxldmFudFVzZXJOYW1lKSkge1xuXHRcdFx0ZGF0YS5hdXRvYmxvY2sgPSBmYWxzZTtcblx0XHR9XG5cdFx0JChmb3JtKVxuXHRcdFx0LmZpbmQoJ1tuYW1lPWZpZWxkX2Jsb2NrX29wdGlvbnNdJylcblx0XHRcdC5maW5kKCc6Y2hlY2tib3gnKVxuXHRcdFx0LmVhY2goKF9pLCBlbCkgPT4ge1xuXHRcdFx0XHQvLyBkb24ndCBvdmVycmlkZSBvcmlnaW5hbCBvcHRpb25zIGlmIHVzZUluaXRpYWxPcHRpb25zIGlzIHNldFxuXHRcdFx0XHRpZiAoZGF0YS51c2VJbml0aWFsT3B0aW9ucyAmJiBkYXRhW2VsLm5hbWVdID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGVsLm5hbWUgPT09ICdjbG9zZXZpcCcpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgY2hlY2sgPSBkYXRhW2VsLm5hbWVdID09PSAnJyB8fCAhIWRhdGFbZWwubmFtZV07XG5cdFx0XHRcdCQoZWwpLnByb3AoJ2NoZWNrZWQnLCBjaGVjayk7XG5cdFx0XHR9KTtcblx0XHRpZiAoZGF0YS5wcmVwZW5kUmVhc29uICYmIGRhdGEucmVhc29uKSB7XG5cdFx0XHRmb3JtLnJlYXNvbi52YWx1ZSA9IGAke2RhdGEucmVhc29ufe+8myR7Zm9ybS5yZWFzb24udmFsdWV9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9ybS5yZWFzb24udmFsdWUgPSBkYXRhLnJlYXNvbiB8fCAnJztcblx0XHR9XG5cdFx0Ly8gQ2xlYXIgYW5kL29yIHNldCBhbnkgcGFydGlhbCBwYWdlIG9yIG5hbWVzcGFjZSByZXN0cmljdGlvbnNcblx0XHRpZiAoZm9ybS5wYWdlcmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRjb25zdCAkcGFnZVNlbGVjdCA9ICQoZm9ybSkuZmluZCgnW25hbWU9cGFnZXJlc3RyaWN0aW9uc10nKTtcblx0XHRcdGNvbnN0ICRuYW1lc3BhY2VTZWxlY3QgPSAkKGZvcm0pLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKTtcblx0XHRcdC8vIFJlc3BlY3QgdXNlSW5pdGlhbE9wdGlvbnMgYnkgY2xlYXJpbmcgZGF0YSB3aGVuIHN3aXRjaGluZyBwcmVzZXRzXG5cdFx0XHQvLyBJbiBwcmFjdGljZSwgdGhpcyB3aWxsIGFsd2F5cyBjbGVhciwgc2luY2Ugbm8gcGFydGlhbCBwcmVzZXRzIHVzZSBpdFxuXHRcdFx0aWYgKCFkYXRhLnVzZUluaXRpYWxPcHRpb25zKSB7XG5cdFx0XHRcdCRwYWdlU2VsZWN0LnZhbChudWxsKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdFx0JG5hbWVzcGFjZVNlbGVjdC52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBBZGQgYW55IHByZXNldCBvcHRpb25zOyBpbiBwcmFjdGljZSwganVzdCB1c2VkIGZvciBwcmlvciBibG9jayBzZXR0aW5nc1xuXHRcdFx0aWYgKGRhdGEucmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRcdGlmIChkYXRhLnJlc3RyaWN0aW9ucy5wYWdlcyAmJiAhJHBhZ2VTZWxlY3QudmFsKCkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZXMgPSBkYXRhLnJlc3RyaWN0aW9ucy5wYWdlcy5tYXAoKHByKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcHIudGl0bGU7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly8gc2luY2UgcGFnZSByZXN0cmljdGlvbnMgdXNlIGFuIGFqYXggc291cmNlLCB3ZVxuXHRcdFx0XHRcdC8vIHNob3J0LWNpcmN1aXQgdGhhdCBhbmQganVzdCBhZGQgYSBuZXcgb3B0aW9uXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG5cdFx0XHRcdFx0XHRpZiAoISRwYWdlU2VsZWN0LmZpbmQoYG9wdGlvblt2YWx1ZT0nJHskLmVzY2FwZVNlbGVjdG9yKHBhZ2UpfSddYCkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5ld09wdGlvbiA9IG5ldyBPcHRpb24ocGFnZSwgcGFnZSwgdHJ1ZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdCRwYWdlU2VsZWN0LmFwcGVuZChuZXdPcHRpb24pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQkcGFnZVNlbGVjdFxuXHRcdFx0XHRcdFx0LnZhbChbLi4uJHBhZ2VTZWxlY3QudmFsKCksIC4uLihBcnJheS5pc0FycmF5KHBhZ2VzKSA/IHBhZ2VzIDogW3BhZ2VzXSldKVxuXHRcdFx0XHRcdFx0LnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnJlc3RyaWN0aW9ucy5uYW1lc3BhY2VzKSB7XG5cdFx0XHRcdFx0JG5hbWVzcGFjZVNlbGVjdFxuXHRcdFx0XHRcdFx0LnZhbChbXG5cdFx0XHRcdFx0XHRcdC4uLiRuYW1lc3BhY2VTZWxlY3QudmFsKCksXG5cdFx0XHRcdFx0XHRcdC4uLihBcnJheS5pc0FycmF5KGRhdGEucmVzdHJpY3Rpb25zLm5hbWVzcGFjZXMpXG5cdFx0XHRcdFx0XHRcdFx0PyBkYXRhLnJlc3RyaWN0aW9ucy5uYW1lc3BhY2VzXG5cdFx0XHRcdFx0XHRcdFx0OiBbZGF0YS5yZXN0cmljdGlvbnMubmFtZXNwYWNlc10pLFxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHRcdC50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfdGVtcGxhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHt2YWx1ZX0gPSBmb3JtLnRlbXBsYXRlO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW3ZhbHVlXTtcblx0XHRjb25zdCBibG9ja0JveCA9ICQoZm9ybSkuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9YmxvY2tdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgcGFydGlhbEJveCA9ICQoZm9ybSkuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0ZW1wbGF0ZUJveCA9ICQoZm9ybSkuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Ly8gQmxvY2sgZm9ybSBpcyBub3QgcHJlc2VudFxuXHRcdGlmICghYmxvY2tCb3gpIHtcblx0XHRcdGlmIChzZXR0aW5ncy5pbmRlZmluaXRlIHx8IHNldHRpbmdzLm5vbnN0YW5kYXJkKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID09PSBudWxsKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeSA9IGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlIHx8ICcnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0udGVtcGxhdGVfZXhwaXJ5LnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgPSAnaW5maW5pdHknO1xuXHRcdFx0fSBlbHNlIGlmIChmb3JtLnRlbXBsYXRlX2V4cGlyeS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJykge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlID0gVHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeTtcblx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLnRlbXBsYXRlX2V4cGlyeS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkpIHtcblx0XHRcdFx0Zm9ybS5leHBpcnkudmFsdWUgPSBUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5O1xuXHRcdFx0fVxuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0ubm90YWxrLnBhcmVudE5vZGUsICFzZXR0aW5ncy5ub25zdGFuZGFyZCk7XG5cdFx0XHQvLyBQYXJ0aWFsXG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ub2VtYWlsX3RlbXBsYXRlLnBhcmVudE5vZGUsIHBhcnRpYWxCb3gpO1xuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0ubm9jcmVhdGVfdGVtcGxhdGUucGFyZW50Tm9kZSwgcGFydGlhbEJveCk7XG5cdFx0fSBlbHNlIGlmICh0ZW1wbGF0ZUJveCkge1xuXHRcdFx0Ly8gT25seSBwcmVzZW50IGlmIGJsb2NrICYmIHRlbXBsYXRlIGZvcm1zIGJvdGggdmlzaWJsZVxuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KFxuXHRcdFx0XHRmb3JtLmJsYW5rX2R1cmF0aW9uLnBhcmVudE5vZGUsXG5cdFx0XHRcdCFzZXR0aW5ncy5pbmRlZmluaXRlICYmICFzZXR0aW5ncy5ub25zdGFuZGFyZFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0Ly8gT25seSBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgaWYgdGVtcGxhdGUgZm9ybSBpcyBwcmVzZW50XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uYXJ0aWNsZS5wYXJlbnROb2RlLCBzZXR0aW5ncyAmJiAhIXNldHRpbmdzLnBhZ2VQYXJhbSk7XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uYmxvY2tfcmVhc29uLnBhcmVudE5vZGUsIHNldHRpbmdzICYmICEhc2V0dGluZ3MucmVhc29uUGFyYW0pO1xuXHRcdC8vIEFwcGx5IHJlYXNvbiBmcm9tIGJsb2NrUHJlc2V0c0luZm9cblx0XHRpZiAoc2V0dGluZ3MucmVhc29uUGFyYW0pIHtcblx0XHRcdGZvcm0uYmxvY2tfcmVhc29uLnZhbHVlID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2Zvcm0ucHJlc2V0LnZhbHVlXS5yZWFzb24gfHwgJyc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcm0uYmxvY2tfcmVhc29uLnZhbHVlID0gJyc7XG5cdFx0fVxuXHRcdC8vIFBhcnRpYWwgYmxvY2tcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5hcmVhLnBhcmVudE5vZGUsIHBhcnRpYWxCb3ggJiYgIWJsb2NrQm94KTtcblx0XHRmb3JtLnJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID0gbnVsbDtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcmV2aWV3ID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRhcnRpY2xlOiBmb3JtLmFydGljbGUudmFsdWUsXG5cdFx0XHRibGFua19kdXJhdGlvbjogZm9ybS5ibGFua19kdXJhdGlvbiA/IGZvcm0uYmxhbmtfZHVyYXRpb24uY2hlY2tlZCA6IGZhbHNlLFxuXHRcdFx0ZGlzYWJsZXRhbGs6IGZvcm0uZGlzYWJsZXRhbGsuY2hlY2tlZCB8fCAoZm9ybS5ub3RhbGsgPyBmb3JtLm5vdGFsay5jaGVja2VkIDogZmFsc2UpLFxuXHRcdFx0ZXhwaXJ5OiBmb3JtLnRlbXBsYXRlX2V4cGlyeSA/IGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlIDogZm9ybS5leHBpcnkudmFsdWUsXG5cdFx0XHRoYXJkYmxvY2s6IFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkID8gZm9ybS5hdXRvYmxvY2suY2hlY2tlZCA6IGZvcm0uaGFyZGJsb2NrLmNoZWNrZWQsXG5cdFx0XHRpbmRlZmluaXRlOiBNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShcblx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkgPyBmb3JtLnRlbXBsYXRlX2V4cGlyeS52YWx1ZSA6IGZvcm0uZXhwaXJ5LnZhbHVlXG5cdFx0XHQpLFxuXHRcdFx0cmVhc29uOiBmb3JtLmJsb2NrX3JlYXNvbi52YWx1ZSxcblx0XHRcdHRlbXBsYXRlOiBmb3JtLnRlbXBsYXRlLnZhbHVlLFxuXHRcdFx0cGFydGlhbDogJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpLmlzKCc6Y2hlY2tlZCcpLFxuXHRcdFx0cGFnZXJlc3RyaWN0aW9uczogJChmb3JtLnBhZ2VyZXN0cmljdGlvbnMpLnZhbCgpIHx8IFtdLFxuXHRcdFx0bmFtZXNwYWNlcmVzdHJpY3Rpb25zOiAkKGZvcm0ubmFtZXNwYWNlcmVzdHJpY3Rpb25zKS52YWwoKSB8fCBbXSxcblx0XHRcdG5vZW1haWw6IGZvcm0ubm9lbWFpbC5jaGVja2VkIHx8IChmb3JtLm5vZW1haWxfdGVtcGxhdGUgPyBmb3JtLm5vZW1haWxfdGVtcGxhdGUuY2hlY2tlZCA6IGZhbHNlKSxcblx0XHRcdG5vY3JlYXRlOiBmb3JtLm5vY3JlYXRlLmNoZWNrZWQgfHwgKGZvcm0ubm9jcmVhdGVfdGVtcGxhdGUgPyBmb3JtLm5vY3JlYXRlX3RlbXBsYXRlLmNoZWNrZWQgOiBmYWxzZSksXG5cdFx0XHRhcmVhOiBmb3JtLmFyZWEudmFsdWUsXG5cdFx0fTtcblx0XHRjb25zdCB0ZW1wbGF0ZVRleHQgPSBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmdldEJsb2NrTm90aWNlV2lraXRleHQocGFyYW1zKTtcblx0XHRmb3JtLnByZXZpZXdlci5iZWdpblJlbmRlcih0ZW1wbGF0ZVRleHQsIGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfS9XaWtpdGV4dGApOyAvLyBGb3JjZSB3aWtpdGV4dC9jb3JyZWN0IHVzZXJuYW1lXG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZXZhbHVhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZS50YXJnZXQpO1xuXHRcdGNvbnN0ICRmb3JtID0gJChlLnRhcmdldCk7XG5cdFx0Y29uc3QgdG9CbG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPWJsb2NrXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRvV2FybiA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRlbXBsYXRlXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRvUGFydGlhbCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9UYWcgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10YWddJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9Qcm90ZWN0ID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0b1VuYmxvY2sgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT11bmJsb2NrXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGxldCBibG9ja29wdGlvbnMgPSB7fTtcblx0XHRsZXQgdGVtcGxhdGVvcHRpb25zID0ge307XG5cdFx0bGV0IHVuYmxvY2tvcHRpb25zID0ge307XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfdGVtcGxhdGVfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfdGFnX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRmb3JtLmZpbmQoJ1tuYW1lPWZpZWxkX3VuYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0YmxvY2tvcHRpb25zID0gVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zO1xuXHRcdHVuYmxvY2tvcHRpb25zID0gVHdpbmtsZS5ibG9jay5maWVsZF91bmJsb2NrX29wdGlvbnM7XG5cdFx0Y29uc3QgdG9DbG9zZXZpcCA9ICEhYmxvY2tvcHRpb25zLmNsb3NldmlwO1xuXHRcdHRlbXBsYXRlb3B0aW9ucyA9IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucztcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuZGlzYWJsZXRhbGsgPSAhISh0ZW1wbGF0ZW9wdGlvbnMuZGlzYWJsZXRhbGsgfHwgYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrKTtcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuaGFyZGJsb2NrID0gISFibG9ja29wdGlvbnMuaGFyZGJsb2NrO1xuXHRcdC8vIHJlbW92ZSBleHRyYW5lb3VzXG5cdFx0ZGVsZXRlIGJsb2Nrb3B0aW9ucy5leHBpcnlfcHJlc2V0O1xuXHRcdGRlbGV0ZSBibG9ja29wdGlvbnMuY2xvc2V2aXA7XG5cdFx0Ly8gUGFydGlhbCBBUEkgcmVxdWlyZXMgdGhpcyB0byBiZSBnb25lLCBub3QgZmFsc2Ugb3IgMFxuXHRcdGlmICh0b1BhcnRpYWwpIHtcblx0XHRcdGJsb2Nrb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcblx0XHRcdHRlbXBsYXRlb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcblx0XHR9XG5cdFx0dGVtcGxhdGVvcHRpb25zLnBhZ2VyZXN0cmljdGlvbnMgPSAkZm9ybS5maW5kKCdbbmFtZT1wYWdlcmVzdHJpY3Rpb25zXScpLnZhbCgpIHx8IFtdO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMgPSAkZm9ybS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJykudmFsKCkgfHwgW107XG5cdFx0Ly8gRm9ybWF0IGZvciBBUEkgaGVyZSByYXRoZXIgdGhhbiBpbiBzYXZlRmllbGRzZXRcblx0XHRibG9ja29wdGlvbnMucGFnZXJlc3RyaWN0aW9ucyA9IHRlbXBsYXRlb3B0aW9ucy5wYWdlcmVzdHJpY3Rpb25zLmpvaW4oJ3wnKTtcblx0XHRibG9ja29wdGlvbnMubmFtZXNwYWNlcmVzdHJpY3Rpb25zID0gdGVtcGxhdGVvcHRpb25zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5qb2luKCd8Jyk7XG5cdFx0Ly8gdXNlIGJsb2NrIHNldHRpbmdzIGFzIHdhcm4gb3B0aW9ucyB3aGVyZSBub3Qgc3VwcGxpZWRcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuc3VtbWFyeSB8fD0gYmxvY2tvcHRpb25zLnJlYXNvbjtcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuZXhwaXJ5ID0gdGVtcGxhdGVvcHRpb25zLnRlbXBsYXRlX2V4cGlyeSB8fCBibG9ja29wdGlvbnMuZXhwaXJ5O1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5wcmVzZXQgPSB0b0Jsb2NrID8gcGFyYW1zLnByZXNldCA6IG51bGw7XG5cdFx0Ly8gQ2hlY2sgdGFnc1xuXHRcdC8vIEdpdmVuIGFuIGFycmF5IG9mIGluY29tcGF0aWJsZSB0YWdzLCBjaGVjayBpZiB3ZSBoYXZlIHR3byBvciBtb3JlIHNlbGVjdGVkXG5cdFx0Y29uc3QgY2hlY2tJbmNvbXBhdGlibGUgPSAoY29uZmxpY3RzLCBleHRyYSkgPT4ge1xuXHRcdFx0Y29uc3QgY291bnQgPSBjb25mbGljdHMucmVkdWNlKChzdW0sIHRhZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKHN1bSArPSBwYXJhbXMudGFnLmluY2x1ZGVzKHRhZykpO1xuXHRcdFx0fSwgMCk7XG5cdFx0XHRpZiAoY291bnQgPiAxKSB7XG5cdFx0XHRcdGxldCBtZXNzYWdlID0gYCR7d2luZG93LndnVUxTKCfor7flnKjku6XkuIvmoIfnrb7kuK3mi6nkuIDkvb/nlKgnLCAn6KuL5Zyo5Lul5LiL5qiZ57Gk5Lit5pOH5LiA5L2/55SoJyl977yae3ske2NvbmZsaWN0cy5qb2luKFxuXHRcdFx0XHRcdCd9feOAgXt7J1xuXHRcdFx0XHQpfX1944CCYDtcblx0XHRcdFx0bWVzc2FnZSArPSBleHRyYSB8fCAnJztcblx0XHRcdFx0bXcubm90aWZ5KG1lc3NhZ2UsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0aWYgKHRvVGFnKSB7XG5cdFx0XHRpZiAocGFyYW1zLnRhZy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+36Iez5bCR6YCJ5oup5LiA5Liq55So5oi36aG15qCH6K6w77yBJywgJ+iri+iHs+WwkemBuOaTh+S4gOWAi+S9v+eUqOiAhemggemdouaomeiomO+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNoZWNrSW5jb21wYXRpYmxlKFxuXHRcdFx0XHRcdFsnQmxvY2tlZCB1c2VyJywgJ1NvY2twdXBwZXQnXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0fX3lt7LmtrXnm5Z7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCd7e1NvY2twdXBwZXR9feW3sua2teiTi3t7QmxvY2tlZCB1c2VyfX3nmoTlip/og73jgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjaGVja0luY29tcGF0aWJsZShcblx0XHRcdFx0XHRbJ0Jsb2NrZWQgdXNlcicsICdTb2NrcHVwcGV0ZWVyJ10sXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J3t7U29ja3B1cHBldGVlcn195bey5ra155uWe3tCbG9ja2VkIHVzZXJ9feeahOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0ZWVyfX3lt7LmtrXok4t7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0Y2hlY2tJbmNvbXBhdGlibGUoXG5cdFx0XHRcdFx0WydTb2NrcHVwcGV0JywgJ1NvY2twdXBwZXRlZXInXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+S7juS4u+i0puWPt+WSjOWIhui6q+i0puWPt+S4remAieaLqeS4gOS4quOAgicsICfoq4vlvp7kuLvos6zomZ/lkozliIbouqvos6zomZ/kuK3pgbjmk4fkuIDlgIvjgIInKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWcuaW5jbHVkZXMoJ1NvY2twdXBwZXQnKSAmJiBwYXJhbXMuc3BwVXNlcm5hbWUudHJpbSgpID09PSAnJykge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5DkvpvlgoDlhKHotKblj7fnmoTkuLvotKblj7fnlKjmiLflkI3vvIEnLCAn6KuL5o+Q5L6b5YKA5YSh6LOs6Jmf55qE5Li76LOs6Jmf5L2/55So6ICF5ZCN56ix77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRvQmxvY2spIHtcblx0XHRcdGlmIChibG9ja29wdGlvbnMucGFydGlhbCkge1xuXHRcdFx0XHRpZiAoYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrICYmICFibG9ja29wdGlvbnMubmFtZXNwYWNlcmVzdHJpY3Rpb25zLmluY2x1ZGVzKCczJykpIHtcblx0XHRcdFx0XHRtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfpg6jliIblsIHnpoHml6Dms5XpmLvmraLnvJbovpHoh6rlt7HnmoTorqjorrrpobXvvIzpmaTpnZ7kuZ/lsIHnpoHkuoZVc2VyIHRhbGvlkb3lkI3nqbrpl7TvvIEnLFxuXHRcdFx0XHRcdFx0XHQn6YOo5YiG5bCB6Y6W54Sh5rOV6Zi75q2i57eo6Lyv6Ieq5bex55qE6KiO6KuW6aCB77yM6Zmk6Z2e5Lmf5bCB6Y6W5LqGVXNlciB0YWxr5ZG95ZCN56m66ZaT77yBJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghYmxvY2tvcHRpb25zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucyAmJiAhYmxvY2tvcHRpb25zLnBhZ2VyZXN0cmljdGlvbnMpIHtcblx0XHRcdFx0XHRpZiAoIWJsb2Nrb3B0aW9ucy5ub2VtYWlsICYmICFibG9ja29wdGlvbnMubm9jcmVhdGUpIHtcblx0XHRcdFx0XHRcdC8vIEJsYW5rIGVudHJpZXMgdGVjaG5pY2FsbHkgYWxsb3dlZFxuXHRcdFx0XHRcdFx0bXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ayoeaciemAieaLqemhtemdouaIluWRveWQjeepuumXtO+8jOS5n+ayoeacieWBnOeUqOeUteWtkOmCruS7tuaIluemgeatouWIm+W7uui0puWPt++8m+ivt+mAieaLqeiHs+WwkeS4gOS4qumAiemhueS7peW6lOeUqOmDqOWIhuWwgeemge+8gScsXG5cdFx0XHRcdFx0XHRcdFx0J+aykuaciemBuOaTh+mggemdouaIluWRveWQjeepuumWk++8jOS5n+aykuacieWBnOeUqOmbu+WtkOmDteS7tuaIluemgeatouW7uueri+izrOiZn++8m+iri+mBuOaTh+iHs+WwkeS4gOWAi+mBuOmgheS7peaHieeUqOmDqOWIhuWwgemOlu+8gSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIbopoHov5vooYzlsIHnpoHvvIzkvYbmsqHmnInpmLvmraLku7vkvZXpobXpnaLmiJblkb3lkI3nqbrpl7TnmoTnvJbovpHvvIznoa7lrpropoHnu6fnu63vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIfopoHpgLLooYzlsIHpjpbvvIzkvYbmspLmnInpmLvmraLku7vkvZXpoIHpnaLmiJblkb3lkI3nqbrplpPnmoTnt6jovK/vvIznorrlrpropoHnubznuozvvJ8nXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghYmxvY2tvcHRpb25zLmV4cGlyeSkge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5Dkvpvov4fmnJ/ml7bpl7TvvIEnLCAn6KuL5o+Q5L6b6YGO5pyf5pmC6ZaT77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0gZWxzZSBpZiAoTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoYmxvY2tvcHRpb25zLmV4cGlyeSkgJiYgIVR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+emgeatouaXoOmZkOacn+WwgeemgUlQ5Zyw5Z2A77yBJywgJ+emgeatoueEoemZkOacn+WwgemOlklQ5L2N5Z2A77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghYmxvY2tvcHRpb25zLnJlYXNvbikge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5DkvpvlsIHnpoHnkIbnlLHvvIEnLCAn6KuL5o+Q5L6b5bCB6Y6W55CG55Sx77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+aJp+ihjOWwgeemgScsICfln7fooYzlsIHpjpYnKSk7XG5cdFx0XHRibG9ja29wdGlvbnMuYWN0aW9uID0gJ2Jsb2NrJztcblx0XHRcdGJsb2Nrb3B0aW9ucy51c2VyID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGJvb2xlYW4tZmxpcHBlZCBvcHRpb25zXG5cdFx0XHRibG9ja29wdGlvbnMuYW5vbm9ubHkgPSBibG9ja29wdGlvbnMuaGFyZGJsb2NrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdGJsb2Nrb3B0aW9ucy5hbGxvd3VzZXJ0YWxrID0gYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdC8qKlxuXHRcdFx0ICogQ2hlY2sgaWYgYmxvY2sgc3RhdHVzIGNoYW5nZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZm9ybS5cblx0XHRcdCAqIFRoZXJlJ3MgYSBsb3QgdG8gY29uc2lkZXIgaGVyZS4gbGlzdD1ibG9ja3MgcHJvdmlkZXMgdGhlXG5cdFx0XHQgKiBjdXJyZW50IGJsb2NrIHN0YXR1cywgYnV0IHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gaXNzdWVzIHdpdGhcblx0XHRcdCAqIHJlbHlpbmcgb24gaXQuIEZpcnN0LCB0aGUgaWQgZG9lc24ndCB1cGRhdGUgb24gYSByZWJsb2NrLFxuXHRcdFx0ICogbWVhbmluZyB0aGUgaW5kaXZpZHVhbCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgY29tcGFyZWQuIFRoaXNcblx0XHRcdCAqIGNhbiBiZSBkb25lIHJvdWdobHkgd2l0aCBKU09OLnN0cmluZ2lmeSAtIHdlIGNhbiB0aGFua2Z1bGx5XG5cdFx0XHQgKiByZWx5IG9uIG9yZGVyIGZyb20gdGhlIHNlcnZlciwgYWx0aG91Z2ggc29ydGluZyB3b3VsZCBiZVxuXHRcdFx0ICogZmluZSBpZiBub3QgLSBidXQgZmFsc2V5IHZhbHVlcyBhcmUgcHJvYmxlbWF0aWMgYW5kIGlzXG5cdFx0XHQgKiBub24taWRlYWwuIE1vcmUgaW1wb3J0YW50bHksIGxpc3Q9YmxvY2tzIHdvbid0IGluZGljYXRlIGlmIGFcblx0XHRcdCAqIG5vbi1ibG9ja2VkIHVzZXIgaXMgYmxvY2tlZCB0aGVuIHVuYmxvY2tlZC4gVGhpcyBzaG91bGQgYmVcblx0XHRcdCAqIGV4Y2VlZGluZ3kgcmFyZSwgYnV0IHJlZ2FyZGxlc3MsIHdlIHRodXMgbmVlZCB0byBjaGVja1xuXHRcdFx0ICogbGlzdD1sb2dldmVudHMsIHdoaWNoIGhhcyBhIG5pY2VseSB1cGRhdGluZyBsb2dpZFxuXHRcdFx0ICogcGFyYW1ldGVyLiBXZSBjYW4ndCByZWx5IGp1c3Qgb24gdGhhdCwgdGhvdWdoLCBzaW5jZSBpdFxuXHRcdFx0ICogZG9lc24ndCBhY2NvdW50IGZvciBibG9ja3MgdGhhdCBoYXZlIGV4cGlyZWQgb24gdGhlaXIgb3duLlxuXHRcdFx0ICogQXMgc3VjaCwgd2UgdXNlIGJvdGguIFVzaW5nIHNvbWUgdGVybmFyaWVzLCB0aGUgbG9naWRcblx0XHRcdCAqIHZhcmlhYmxlcyBhcmUgZmFsc2UgaWYgdGhlcmUncyBubyBsb2dldmVudHMsIHNvIGlmIHRoZXlcblx0XHRcdCAqIGFyZW4ndCBlcXVhbCB3ZSBkZWZpbnRlbHkgaGF2ZSBhIGNoYW5nZWQgZW50cnkgKHNlbmRcblx0XHRcdCAqIGNvbmZpcm1hdGlvbikuIElmIHRoZXkgYXJlIGVxdWFsLCB0aGVuIGVpdGhlciB0aGUgdXNlciB3YXNcblx0XHRcdCAqIG5ldmVyIGJsb2NrZWQgKHRoZSBibG9jayBzdGF0dXNlcyB3aWxsIGJlIGVxdWFsLCBub1xuXHRcdFx0ICogY29uZmlybWF0aW9uKSBvciB0aGVyZSdzIG5vIG5ldyBibG9jaywgaW4gd2hpY2ggY2FzZSBlaXRoZXJcblx0XHRcdCAqIGEgYmxvY2sgZXhwaXJlZCAoZGlmZmVyZW50IHN0YXR1c2VzLCBjb25maXJtYXRpb24pIG9yIHRoZVxuXHRcdFx0ICogc2FtZSBibG9jayBpcyBzdGlsbCBhY3RpdmUgKHNhbWUgc3RhdHVzLCBubyBjb25maXJtYXRpb24pLlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0bGlzdDogJ2Jsb2Nrc3xsb2dldmVudHMnLFxuXHRcdFx0XHRsZXR5cGU6ICdibG9jaycsXG5cdFx0XHRcdGxlbGltaXQ6IDEsXG5cdFx0XHRcdGxldGl0bGU6IGBVc2VyOiR7YmxvY2tvcHRpb25zLnVzZXJ9YCxcblx0XHRcdH07XG5cdFx0XHQvLyBia3VzZXJzIGRvZXNuJ3QgY2F0Y2ggc2luZ2xlIElQcyBibG9ja2VkIGFzIHBhcnQgb2YgYSByYW5nZSBibG9ja1xuXHRcdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MoYmxvY2tvcHRpb25zLnVzZXIsIHRydWUpKSB7XG5cdFx0XHRcdHF1ZXJ5LmJraXAgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHF1ZXJ5LmJrdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubGlzdCArPSAnfHVzZXJzJztcblx0XHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3Vwcyc7XG5cdFx0XHRcdHF1ZXJ5LnVzdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubWV0YSA9ICd0b2tlbnMnO1xuXHRcdFx0XHRxdWVyeS50eXBlID0gJ3VzZXJyaWdodHMnO1xuXHRcdFx0fVxuXHRcdFx0YXBpLmdldChxdWVyeSkudGhlbigoZGF0YSkgPT4ge1xuXHRcdFx0XHRsZXQgW2Jsb2NrXSA9IGRhdGEucXVlcnkuYmxvY2tzO1xuXHRcdFx0XHQvLyBBcyB3aXRoIHRoZSBpbml0aWFsIGRhdGEgZmV0Y2gsIGlmIGFuIElQIGlzIGJsb2NrZWRcblx0XHRcdFx0Ly8gKmFuZCogcmFuZ2VibG9ja2VkLCB0aGlzIHdvdWxkIG9ubHkgZ3JhYiB3aGljaGV2ZXJcblx0XHRcdFx0Ly8gYmxvY2sgaXMgbW9yZSByZWNlbnQsIHdoaWNoIHdvdWxkIGxpa2VseSBtZWFuIGFcblx0XHRcdFx0Ly8gbWlzbWF0Y2guICBIb3dldmVyLCBpZiB0aGUgcmFuZ2VibG9jayBpcyB1cGRhdGVkXG5cdFx0XHRcdC8vIHdoaWxlIGZpbGxpbmcgb3V0IHRoZSBmb3JtLCB0aGlzIHdvbid0IGRldGVjdCB0aGF0LFxuXHRcdFx0XHQvLyBidXQgdGhhdCdzIHByb2JhYmx5IGZpbmUuXG5cdFx0XHRcdGlmIChkYXRhLnF1ZXJ5LmJsb2Nrcy5sZW5ndGggPiAxICYmIGJsb2NrLnVzZXIgIT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0XHRbLCBibG9ja10gPSBkYXRhLnF1ZXJ5LmJsb2Nrcztcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBbbG9nZXZlbnRzXSA9IGRhdGEucXVlcnkubG9nZXZlbnRzO1xuXHRcdFx0XHRjb25zdCB1c2VyID0gZGF0YS5xdWVyeS51c2VycyA/IGRhdGEucXVlcnkudXNlcnNbMF0gOiBudWxsO1xuXHRcdFx0XHRjb25zdCBsb2dpZCA9IGRhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA/IGxvZ2V2ZW50cy5sb2dpZCA6IGZhbHNlO1xuXHRcdFx0XHRpZiAobG9naWQgIT09IFR3aW5rbGUuYmxvY2suYmxvY2tMb2dJZCB8fCAhIWJsb2NrICE9PSAhIVR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0XHRcdGxldCBtZXNzYWdlID0gYmxvY2tvcHRpb25zLnVzZXIgKyB3aW5kb3cud2dVTFMoJ+eahOWwgeemgeeKtuaAgeW3suiiq+S/ruaUueOAgicsICfnmoTlsIHpjpbni4DmhYvlt7Looqvkv67mlLnjgIInKTtcblx0XHRcdFx0XHRpZiAoYmxvY2spIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2UgKz0gd2luZG93LndnVUxTKCfmlrDnirbmgIHvvJonLCAn5paw54uA5oWL77yaJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2UgKz0gd2luZG93LndnVUxTKCfmnIDmlrDml6Xlv5fvvJonLCAn5pyA5paw5pel6KqM77yaJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxldCBsb2dFeHBpcnkgPSAnJztcblx0XHRcdFx0XHRpZiAobG9nZXZlbnRzLnBhcmFtcy5kdXJhdGlvbikge1xuXHRcdFx0XHRcdFx0aWYgKGxvZ2V2ZW50cy5wYXJhbXMuZHVyYXRpb24gPT09ICdpbmZpbml0eScpIHtcblx0XHRcdFx0XHRcdFx0bG9nRXhwaXJ5ID0gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBleHBpcnlEYXRlID0gbmV3IE1vcmViaXRzLmRhdGUobG9nZXZlbnRzLnBhcmFtcy5leHBpcnkpO1xuXHRcdFx0XHRcdFx0XHRsb2dFeHBpcnkgKz1cblx0XHRcdFx0XHRcdFx0XHQoZXhwaXJ5RGF0ZS5pc0JlZm9yZShuZXcgRGF0ZSgpKSA/IHdpbmRvdy53Z1VMUygn6L+H5pyf5LqOJywgJ+mBjuacn+aWvCcpIDogJ+ebtOWIsCcpICtcblx0XHRcdFx0XHRcdFx0XHRleHBpcnlEYXRlLmNhbGVuZGFyKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIG5vIGR1cmF0aW9uLCBhY3Rpb249dW5ibG9jaywganVzdCBzaG93IHRpbWVzdGFtcFxuXHRcdFx0XHRcdFx0bG9nRXhwaXJ5ID0gYOaWvCR7bmV3IE1vcmViaXRzLmRhdGUobG9nZXZlbnRzLnRpbWVzdGFtcCkuY2FsZW5kYXIoKX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtZXNzYWdlICs9IGDnlLEke2xvZ2V2ZW50cy51c2VyfSR7d2luZG93LndnVUxTKCfku6XigJwnLCAn5Lul44CMJyl9JHtsb2dldmVudHMuY29tbWVudH0ke3dpbmRvdy53Z1VMUygn4oCdJywgJ+OAjScpfSR7XG5cdFx0XHRcdFx0XHRibG9ja0FjdGlvblRleHRbbG9nZXZlbnRzLmFjdGlvbl1cblx0XHRcdFx0XHR9JHtsb2dFeHBpcnl9JHt3aW5kb3cud2dVTFMoJ++8jOS9oOaDs+imgeS7peS9oOeahOiuvue9ruabtOaUueWwgeemgeWQl++8nycsICfvvIzkvaDmg7PopoHku6XkvaDnmoToqK3lrprorormm7TlsIHpjpbll47vvJ8nKX1gO1xuXHRcdFx0XHRcdGlmICghY29uZmlybShtZXNzYWdlKSkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5omn6KGM5bCB56aBJywgJ+Wft+ihjOWwgemOlicpLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nCcsICfkvb/nlKjogIXlj5bmtojmk43kvZwnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YmxvY2tvcHRpb25zLnJlYmxvY2sgPSAxOyAvLyBXcml0aW5nIG92ZXIgYSBibG9jayB3aWxsIGZhaWwgb3RoZXJ3aXNlXG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZ3JvdXBzQ2FuQmVSZW1vdmVkID0gW1xuXHRcdFx0XHRcdCdhdXRvcGF0cm9sbGVkJyxcblx0XHRcdFx0XHQnY29uZmlybWVkJyxcblx0XHRcdFx0XHQncm5yc3ZlcmlmeS1leGVtcHQnLFxuXHRcdFx0XHRcdCdtYXNzbWVzc2FnZS1zZW5kZXInLFxuXHRcdFx0XHRcdCdwYXRyb2xsZXInLFxuXHRcdFx0XHRcdCd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0XHRcdFx0J2ltcG9ydGVyJyxcblx0XHRcdFx0XTtcblx0XHRcdFx0bGV0IGdyb3Vwc1RvQmVSZW1vdmVkID0gW107XG5cdFx0XHRcdGlmICh1c2VyICYmIE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KGJsb2Nrb3B0aW9ucy5leHBpcnkpKSB7XG5cdFx0XHRcdFx0Z3JvdXBzVG9CZVJlbW92ZWQgPSB1c2VyLmdyb3Vwcy5maWx0ZXIoKGdyb3VwKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZ3JvdXBzQ2FuQmVSZW1vdmVkLmluY2x1ZGVzKGdyb3VwKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBleGVjdXRlIGJsb2NrXG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy50YWdzID0gVHdpbmtsZS5jaGFuZ2VUYWdzO1xuXHRcdFx0XHRibG9ja29wdGlvbnMudG9rZW4gPSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdFx0XHRjb25zdCBtYkFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaSh3aW5kb3cud2dVTFMoJ+aJp+ihjOWwgeemgScsICfln7fooYzlsIHpjpYnKSwgYmxvY2tvcHRpb25zLCAoKSA9PiB7XG5cdFx0XHRcdFx0c3RhdHVzRWxlbWVudC5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0XHRpZiAodG9XYXJuKSB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmlzc3VlX3RlbXBsYXRlKHRlbXBsYXRlb3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0b0Nsb3NldmlwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB2aXBQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0J0xJQl90YWxrOuaKpeWRiuW9k+WJjeegtOWdjycsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5YWz6Zet6K+35rGCJywgJ+mXnOmWieiri+axgicpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0dmlwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0XHRcdHZpcFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKGJsb2Nrb3B0aW9ucyk7XG5cdFx0XHRcdFx0XHR2aXBQYWdlLmxvYWQoVHdpbmtsZS5ibG9jay5jYWxsYmFjay5jbG9zZVJlcXVlc3QpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZ3JvdXBzVG9CZVJlbW92ZWQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcmlnaHRTdGF0dXNFbGVtZW50ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+enu+mZpOadg+mZkCcsICfnp7vpmaTmrIrpmZAnKSk7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm0oXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor6XnlKjmiLfmnInku6XkuIvmnYPpmZDvvJonLCAn6Kmy5L2/55So6ICF5pyJ5Lul5LiL5qyK6ZmQ77yaJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0Z3JvdXBzVG9CZVJlbW92ZWQuam9pbign44CBJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfvvIzmgqjmmK/lkKbmg7PopoHlkIzml7bnp7vpmaTov5nkupvmnYPpmZDvvJ8nLCAn77yM5oKo5piv5ZCm5oOz6KaB5ZCM5pmC56e76Zmk6YCZ5Lqb5qyK6ZmQ77yfJylcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHJldm9rZU9wdGlvbnMgPSB7XG5cdFx0XHRcdFx0XHRcdFx0YWN0aW9uOiAndXNlcnJpZ2h0cycsXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogYmxvY2tvcHRpb25zLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3ZlOiBncm91cHNUb0JlUmVtb3ZlZC5qb2luKCd8JyksXG5cdFx0XHRcdFx0XHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+W3suiiq+aXoOmZkOacn+WwgeemgScsICfkvb/nlKjogIXlt7LooqvnhKHpmZDmnJ/lsIHpjpYnKSxcblx0XHRcdFx0XHRcdFx0XHR0b2tlbjogZGF0YS5xdWVyeS50b2tlbnMudXNlcnJpZ2h0c3Rva2VuLFxuXHRcdFx0XHRcdFx0XHRcdHRhZ3M6IFR3aW5rbGUuY2hhbmdlVGFncyxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbXJBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnp7vpmaTmnYPpmZAnLCAn56e76Zmk5qyK6ZmQJyksXG5cdFx0XHRcdFx0XHRcdFx0cmV2b2tlT3B0aW9ucyxcblx0XHRcdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyaWdodFN0YXR1c0VsZW1lbnQuaW5mbyhg5bey56e76ZmkJHtncm91cHNUb0JlUmVtb3ZlZC5qb2luKCfjgIEnKX1gKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdG1yQXBpLnBvc3QoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJpZ2h0U3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bWJBcGkucG9zdCgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0b1dhcm4pIHtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmlzc3VlX3RlbXBsYXRlKHRlbXBsYXRlb3B0aW9ucyk7XG5cdFx0fVxuXHRcdGlmICh0b1RhZyB8fCB0b1Byb3RlY3QpIHtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCB1c2VyUGFnZSA9IGBVc2VyOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YDtcblx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdHVzZXJQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOaIluS/neaKpOeUqOaIt+mhtScsICfmqJnoqJjmiJbkv53orbfkvb/nlKjogIXpoIHpnaInKVxuXHRcdFx0KTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudGFndXNlcnBhZ2UpO1xuXHRcdH1cblx0XHRpZiAodG9VbmJsb2NrKSB7XG5cdFx0XHRpZiAoIXVuYmxvY2tvcHRpb25zLnJlYXNvbikge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5Dkvpvop6PpmaTlsIHnpoHnkIbnlLHvvIEnLCAn6KuL5o+Q5L6b6Kej6Zmk5bCB6Y6W55CG55Sx77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCB1bmJsb2NrU3RhdHVzRWxlbWVudCA9IG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfmiafooYzop6PpmaTlsIHnpoEnLCAn5Z+36KGM6Kej6Zmk5bCB6Y6WJykpO1xuXHRcdFx0dW5ibG9ja29wdGlvbnMuYWN0aW9uID0gJ3VuYmxvY2snO1xuXHRcdFx0dW5ibG9ja29wdGlvbnMudXNlciA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdFx0Ly8gZXhlY3V0ZSB1bmJsb2NrXG5cdFx0XHR1bmJsb2Nrb3B0aW9ucy50YWdzID0gVHdpbmtsZS5jaGFuZ2VUYWdzO1xuXHRcdFx0dW5ibG9ja29wdGlvbnMudG9rZW4gPSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdFx0Y29uc3QgdW5ibG9ja01iQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aJp+ihjOino+mZpOWwgeemgScsICfln7fooYzop6PpmaTlsIHpjpYnKSxcblx0XHRcdFx0dW5ibG9ja29wdGlvbnMsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHR1bmJsb2NrU3RhdHVzRWxlbWVudC5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdHVuYmxvY2tNYkFwaS5wb3N0KCk7XG5cdFx0fVxuXHRcdGlmICghdG9CbG9jayAmJiAhdG9XYXJuICYmICF0b1RhZyAmJiAhdG9Qcm90ZWN0ICYmICF0b1VuYmxvY2spIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+e7mVR3aW5rbGXngrnkuovlgZrvvIEnLCAn6KuL57WmVHdpbmtsZem7nuS6i+WBmu+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdH0pO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay50YWd1c2VycGFnZSA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdGlmIChwYXJhbXMuYWN0aW9udHlwZS5pbmNsdWRlcygndGFnJykpIHtcblx0XHRcdGNvbnN0IHRhZ3MgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWcpIHtcblx0XHRcdFx0bGV0IHRhZ3RleHQgPSBge3ske3RhZ31gO1xuXHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdGNhc2UgJ0Jsb2NrZWQgdXNlcic6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdTb2NrcHVwcGV0Jzpcblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgMSA9ICR7cGFyYW1zLnNwcFVzZXJuYW1lLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCAyID0gJHtwYXJhbXMuc3BwVHlwZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMuc3BwRXZpZGVuY2UudHJpbSgpKSB7XG5cdFx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgZXZpZGVuY2UgPSAke3BhcmFtcy5zcHBFdmlkZW5jZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gJ1xcbnwgbG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCBub3RibG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ1NvY2twdXBwZXRlZXInOlxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCAxID0gYmxvY2tlZCc7XG5cdFx0XHRcdFx0XHR0YWd0ZXh0ICs9IGBcXG58IGNoZWNrZWQgPSAke3BhcmFtcy5zcG1DaGVja2VkID8gJ3llcycgOiAnJ31gO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5zcG1FdmlkZW5jZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCBldmlkZW5jZSA9ICR7cGFyYW1zLnNwbUV2aWRlbmNlLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfmnKrnn6XnmoTnlKjmiLfpobXmqKHmnb/vvIEnLCAn5pyq55+l55qE5L2/55So6ICF6aCB6Z2i5qih5p2/77yBJyksIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0YWd0ZXh0ICs9ICd9fSc7XG5cdFx0XHRcdHRhZ3MucHVzaCh0YWd0ZXh0KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHRleHQgPSB0YWdzLmpvaW4oJ1xcbicpO1xuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfmoIforrDooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn5qiZ6KiY6KKr5rC45LmF5bCB6Y6W55qE5L2/55So6ICF6aCB6Z2iJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKCkgPT4ge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyh3aW5kb3cud2dVTFMoJ+agh+iusOeUqOaIt+mhtScsICfmqJnoqJjkvb/nlKjogIXpoIHpnaInKSwgJ+WujOaIkCcpO1xuXHRcdFx0XHRzdGF0ZWxlbS5zdGF0dXMod2luZG93LndnVUxTKCfmraPlnKjkv53miqTpobXpnaInLCAn5q2j5Zyo5L+d6K236aCB6Z2iJykpO1xuXHRcdFx0XHRwYWdlb2JqLmxvYWQoVHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcm90ZWN0dXNlcnBhZ2UpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sucHJvdGVjdHVzZXJwYWdlKHBhZ2VvYmopO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcm90ZWN0dXNlcnBhZ2UgPSAocGFnZW9iaikgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRpZiAocGFyYW1zLmFjdGlvbnR5cGUuaW5jbHVkZXMoJ3Byb3RlY3QnKSkge1xuXHRcdFx0aWYgKHBhZ2VvYmouZXhpc3RzKCkpIHtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0UHJvdGVjdGlvbignc3lzb3AnLCAnaW5kZWZpbml0ZScpO1xuXHRcdFx0XHRwYWdlb2JqLnNldE1vdmVQcm90ZWN0aW9uKCdzeXNvcCcsICdpbmRlZmluaXRlJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZVByb3RlY3Rpb24oJ3N5c29wJywgJ2luZGVmaW5pdGUnKTtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn6KKr5rC45LmF5bCB6Y6W55qE5L2/55So6ICF6aCB6Z2iJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnByb3RlY3QoKCkgPT4ge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/neaKpOeUqOaIt+mhtScsICfkv53orbfkvb/nlKjogIXpoIHpnaInKSxcblx0XHRcdFx0XHRwYWdlb2JqLmV4aXN0cygpID8gd2luZG93LndnVUxTKCflt7Llhajkv53miqQnLCAn5bey5YWo5L+d6K23JykgOiB3aW5kb3cud2dVTFMoJ+W3sueZvee6uOS/neaKpCcsICflt7Lnmb3ntJnkv53orbcnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRzdGF0ZWxlbS5pbmZvKCflhajpg6jlrozmiJAnKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdGF0ZWxlbS5pbmZvKCflhajpg6jlrozmiJAnKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suaXNzdWVfdGVtcGxhdGUgPSAoZm9ybURhdGEpID0+IHtcblx0XHQvLyBVc2Ugd2dSZWxldmFudFVzZXJOYW1lIHRvIGVuc3VyZSB0aGUgYmxvY2sgdGVtcGxhdGUgZ29lcyB0byBhIHNpbmdsZSBJUCBhbmQgbm90IHRvIHRoZVxuXHRcdC8vIFwidGFsayBwYWdlXCIgb2YgYW4gSVAgcmFuZ2UgKHdoaWNoIGRvZXMgbm90IGV4aXN0KVxuXHRcdGNvbnN0IHVzZXJUYWxrUGFnZSA9IGBVc2VyX3RhbGs6JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdC4uLmZvcm1EYXRhLFxuXHRcdFx0bWVzc2FnZURhdGE6IFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tmb3JtRGF0YS50ZW1wbGF0ZV0sXG5cdFx0XHR1c2VydGFsa19zdW1tYXJ5OiBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bZm9ybURhdGEucHJlc2V0IHx8IGZvcm1EYXRhLnRlbXBsYXRlXS5zdW1tYXJ5LFxuXHRcdFx0cmVhc29uOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYmxvY2tfcmVhc29uLFxuXHRcdFx0ZGlzYWJsZXRhbGs6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub3RhbGssXG5cdFx0XHRub2VtYWlsOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9lbWFpbF90ZW1wbGF0ZSxcblx0XHRcdG5vY3JlYXRlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9jcmVhdGVfdGVtcGxhdGUsXG5cdFx0fTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHVzZXJUYWxrUGFnZTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHQn5a6M5oiQ77yM5bCG5Zyo5Yeg56eS5ZCO5Yqg6L2955So5oi36K6o6K666aG1Jyxcblx0XHRcdCflrozmiJDvvIzlsIflnKjlub7np5LlvozovInlhaXkvb/nlKjogIXoqI7oq5bpoIEnXG5cdFx0KTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0dXNlclRhbGtQYWdlLFxuXHRcdFx0d2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobXkv67mlLknLCAn5L2/55So6ICF6KiO6KuW6aCB5L+u5pS5Jylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmJsb2NrLmNhbGxiYWNrLm1haW4pO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNsb3NlUmVxdWVzdCA9ICh2aXBQYWdlKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gdmlwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRsZXQgdGV4dCA9IHZpcFBhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gdmlwUGFnZS5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0Y29uc3QgdXNlck5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHRjb25zdCBleHBpcnlUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmZvcm1hdFRpbWUocGFyYW1zLmV4cGlyeSk7XG5cdFx0Y29uc3QgY29tbWVudCA9IGB7e0Jsb2NrZWR8JHtNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShwYXJhbXMuZXhwaXJ5KSA/ICdpbmRlZicgOiBleHBpcnlUZXh0fX1944CCYDtcblx0XHRjb25zdCByZXF1ZXN0TGlzdCA9IHRleHQuc3BsaXQoLyg/PVxcbj09PS4rPT09XFxzKlxcbikvKTtcblx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRsZXQgaGlkZW5hbWUgPSBmYWxzZTtcblx0XHRjb25zdCB2aXBSZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRge3tcXFxccypbVnZdYW5kYWxcXFxccypcXFxcfFxcXFxzKigxXFxcXHMqPVxcXFxzKik/JHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KFxuXHRcdFx0XHR1c2VyTmFtZVxuXHRcdFx0KX1cXFxccyooXFxcXHxcXFxccypoaWRlbmFtZVxcXFxzKj1bXnxdKyk/fX1gLFxuXHRcdFx0J20nXG5cdFx0KTtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHJlcXVlc3RMaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAodmlwUmUuZXhlYyhyZXF1ZXN0TGlzdFtpXSkpIHtcblx0XHRcdFx0aGlkZW5hbWUgPSAvXFx8XFxzKmhpZGVuYW1lXFxzKj1bXnxdKy8udGVzdChyZXF1ZXN0TGlzdFtpXSk7XG5cdFx0XHRcdHJlcXVlc3RMaXN0W2ldID0gcmVxdWVzdExpc3RbaV0udHJpbUVuZCgpO1xuXHRcdFx0XHRsZXQgbmV3VGV4dCA9IHJlcXVlc3RMaXN0W2ldLnJlcGxhY2UoXG5cdFx0XHRcdFx0L14oXFwqXFxzKuWkhOeQhu+8milbIFxcdF0qKDwhLS0g6Z2e566h55CG5ZOh5YOF5Y+v5qiZ6KiY5bey5Z+36KGM55qE5bCB56aB77yM6Yed5bCN5o+Q5aCx55qE5oSP6KaL6KuL5pS+5Zyo5LiL5LiA6KGMIC0tPik/WyBcXHRdKiQvbSxcblx0XHRcdFx0XHRgJDEke2NvbW1lbnR9LS1+fmAuY29uY2F0KCd+ficpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChyZXF1ZXN0TGlzdFtpXSA9PT0gbmV3VGV4dCkge1xuXHRcdFx0XHRcdG5ld1RleHQgPSBgJHtyZXF1ZXN0TGlzdFtpXX1cXG4qIOWkhOeQhu+8miR7Y29tbWVudH0tLX5+YC5jb25jYXQoJ35+Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVxdWVzdExpc3RbaV0gPSBgJHtuZXdUZXh0fVxcbmA7XG5cdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZm91bmQpIHtcblx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+ayoeacieaJvuWIsOebuOWFs+eahOivt+axgicsICfmspLmnInmib7liLDnm7jpl5znmoToq4vmsYInKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRleHQgPSByZXF1ZXN0TGlzdC5qb2luKCcnKTtcblx0XHRsZXQgc3VtbWFyeTtcblx0XHRpZiAoaGlkZW5hbWUpIHtcblx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+agh+iusOS4uuW3suWkhOeQhicsICfmqJnoqJjngrrlt7LomZXnkIYnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VtbWFyeSA9IGAvKiAke3VzZXJOYW1lfSAqLyBgO1xuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdHN1bW1hcnkgKz0gd2luZG93LndnVUxTKCfkuI3pmZDmnJ/lsIHnpoEnLCAn5LiN6ZmQ5pyf5bCB6Y6WJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdW1tYXJ5ICs9IHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpICsgZXhwaXJ5VGV4dDtcblx0XHRcdH1cblx0XHR9XG5cdFx0dmlwUGFnZS5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5KTtcblx0XHR2aXBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR2aXBQYWdlLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdHZpcFBhZ2Uuc2F2ZSgpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmdldEJsb2NrTm90aWNlV2lraXRleHQgPSAocGFyYW1zKSA9PiB7XG5cdFx0bGV0IHRleHQgPSAne3snO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW3BhcmFtcy50ZW1wbGF0ZV07XG5cdFx0aWYgKHNldHRpbmdzLm5vbnN0YW5kYXJkKSB7XG5cdFx0XHR0ZXh0ICs9IHBhcmFtcy50ZW1wbGF0ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCArPSAnc3Vic3Q6Jy5jb25jYXQocGFyYW1zLnRlbXBsYXRlKTtcblx0XHRcdGlmIChwYXJhbXMuYXJ0aWNsZSAmJiBzZXR0aW5ncy5wYWdlUGFyYW0pIHtcblx0XHRcdFx0dGV4dCArPSBgfHBhZ2U9JHtwYXJhbXMuYXJ0aWNsZX1gO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCEvdGU/bXB8XlxccyokfG1pbi8uZXhlYyhwYXJhbXMuZXhwaXJ5KSkge1xuXHRcdFx0XHRpZiAocGFyYW1zLmluZGVmaW5pdGUpIHtcblx0XHRcdFx0XHR0ZXh0ICs9ICd8aW5kZWY9eWVzJztcblx0XHRcdFx0fSBlbHNlIGlmICghcGFyYW1zLmJsYW5rX2R1cmF0aW9uKSB7XG5cdFx0XHRcdFx0Ly8gTm8gZXhwaXJ5IGNoZWNrc1xuXHRcdFx0XHRcdC8vIEJsb2NrIHRlbXBsYXRlIHdhbnRzIGEgZHVyYXRpb24sIG5vdCBkYXRlXG5cdFx0XHRcdFx0dGV4dCArPSBgfHRpbWU9JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KX1gOyAvLyBmb3JtYXRUaW1lXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQgJiYgIXBhcmFtcy5oYXJkYmxvY2spIHtcblx0XHRcdFx0dGV4dCArPSAnfGFub249eWVzJztcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMucmVhc29uKSB7XG5cdFx0XHRcdHRleHQgKz0gYHxyZWFzb249JHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLmRpc2FibGV0YWxrKSB7XG5cdFx0XHRcdHRleHQgKz0gJ3xub3RhbGs9eWVzJztcblx0XHRcdH1cblx0XHRcdC8vIEN1cnJlbnRseSwgYWxsIHBhcnRpYWwgYmxvY2sgdGVtcGxhdGVzIGFyZSBcInN0YW5kYXJkXCJcblx0XHRcdC8vIEJ1aWxkaW5nIHRoZSB0ZW1wbGF0ZSwgaG93ZXZlciwgdGFrZXMgYSBmYWlyIGJpdCBvZiBsb2dpY1xuXHRcdFx0aWYgKHBhcmFtcy5wYXJ0aWFsKSB7XG5cdFx0XHRcdGlmIChwYXJhbXMucGFnZXJlc3RyaWN0aW9ucy5sZW5ndGggfHwgcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBtYWtlU2VudGVuY2UgPSAoYXJyYXkpID0+IHtcblx0XHRcdFx0XHRcdGlmIChhcnJheS5sZW5ndGggPCAzKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhcnJheS5qb2luKCflkownKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNvbnN0IGxhc3QgPSBhcnJheS5wb3AoKTtcblx0XHRcdFx0XHRcdHJldHVybiBgJHthcnJheS5qb2luKCfjgIEnKX3lkowke2xhc3R9YDtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHRleHQgKz0gJ3xhcmVhPeafkOS6myc7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSBg6aCB6Z2i77yIJHttYWtlU2VudGVuY2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLm1hcCgocCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBgW1s6JHtwfV1dYDtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCl9YDtcblx0XHRcdFx0XHRcdHRleHQgKz0gcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGggPyAn77yJ5ZKM5p+Q5LqbJyA6ICfvvIknO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdC8vIDEgPT4gVGFsaywgMiA9PiBVc2VyLCBldGMuXG5cdFx0XHRcdFx0XHRjb25zdCBuYW1lc3BhY2VOYW1lcyA9IHBhcmFtcy5uYW1lc3BhY2VyZXN0cmljdGlvbnMubWFwKChpZCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbWVudUZvcm1hdHRlZE5hbWVzcGFjZXNbaWRdO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ZXh0ICs9IGAke1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ1tbSGVscDrlkb3lkI3nqbrpl7R85ZG95ZCN56m66Ze0XV3vvIgnLCAnW1tIZWxwOuWRveWQjeepuumWk3zlkb3lkI3nqbrplpNdXe+8iCcpICtcblx0XHRcdFx0XHRcdFx0bWFrZVNlbnRlbmNlKG5hbWVzcGFjZU5hbWVzKVxuXHRcdFx0XHRcdFx0fe+8iWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5hcmVhKSB7XG5cdFx0XHRcdFx0dGV4dCArPSBgfGFyZWE9JHtwYXJhbXMuYXJlYX1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9lbWFpbCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSAnfGVtYWlsPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9jcmVhdGUpIHtcblx0XHRcdFx0XHRcdHRleHQgKz0gJ3xhY2NvdW50Y3JlYXRlPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzZXR0aW5ncy5zaWcpIHtcblx0XHRcdHRleHQgKz0gYHxzaWc9JHtzZXR0aW5ncy5zaWd9YDtcblx0XHR9XG5cdFx0cmV0dXJuIGAke3RleHR9fX1gO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLm1haW4gPSAocGFnZW9iaikgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Y29uc3QgZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHBhZ2VvYmouZ2V0TG9hZFRpbWUoKSk7XG5cdFx0Y29uc3Qge21lc3NhZ2VEYXRhfSA9IHBhcmFtcztcblx0XHRsZXQgdGV4dDtcblx0XHRwYXJhbXMuaW5kZWZpbml0ZSA9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2JsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2snKSAmJiBwYXJhbXMudGVtcGxhdGUgIT09ICd1dy1sYmxvY2snICYmIHBhcmFtcy5pbmRlZmluaXRlKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5qC55o2u5Y+C5pWw6K6+572u5riF56m66K6o6K666aG15bm25Li65pel5pyf5Yib5bu65pawMue6p+agh+mimCcsXG5cdFx0XHRcdFx0J+agueaTmuWBj+WlveioreWumua4heepuuiojuirlumggeS4pueCuuaXpeacn+W7uueri+aWsDLntJrmqJnpoYwnXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHR0ZXh0ID0gYCR7ZGF0ZS5tb250aEhlYWRlcigpfVxcbmA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBkYXRlLm1vbnRoSGVhZGVyUmVnZXgoKTtcblx0XHRcdGxldCBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0bGV0IGRhdGVIZWFkZXJSZWdleFJlc3VsdDtcblx0XHRcdHdoaWxlICgoZGF0ZUhlYWRlclJlZ2V4TGFzdCA9IGRhdGVIZWFkZXJSZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRkYXRlSGVhZGVyUmVnZXhSZXN1bHQgPSBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0IGlzIG51bGwgdGhlbiBsYXN0SGVhZGVySW5kZXggaXMgbmV2ZXIgY2hlY2tlZC4gSWYgaXQgaXMgbm90IG51bGwgYnV0XG5cdFx0XHQvLyBcXG49PSBpcyBub3QgZm91bmQsIHRoZW4gdGhlIGRhdGUgaGVhZGVyIG11c3QgYmUgYXQgdGhlIHZlcnkgc3RhcnQgb2YgdGhlIHBhZ2UuIGxhc3RJbmRleE9mXG5cdFx0XHQvLyByZXR1cm5zIC0xIGluIHRoaXMgY2FzZSwgc28gbGFzdEhlYWRlckluZGV4IGdldHMgc2V0IHRvIDAgYXMgZGVzaXJlZC5cblx0XHRcdGNvbnN0IGxhc3RIZWFkZXJJbmRleCA9IHRleHQubGFzdEluZGV4T2YoJ1xcbj09JykgKyAxO1xuXHRcdFx0aWYgKHRleHQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0ZXh0ICs9ICdcXG5cXG4nO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFkYXRlSGVhZGVyUmVnZXhSZXN1bHQgfHwgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0LmluZGV4ICE9PSBsYXN0SGVhZGVySW5kZXgpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnKrmib7liLDlvZPmnIjnmoTkuoznuqfmoIfpopjvvIzlsIbliJvlu7rmlrDnmoQnLCAn5pyq5om+5Yiw55W25pyI55qE5LqM57Sa5qiZ6aGM77yM5bCH5bu656uL5paw55qEJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGV4dCArPSBgJHtkYXRlLm1vbnRoSGVhZGVyKCl9XFxuYDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cGFyYW1zLmV4cGlyeSA9IHBhcmFtcy50ZW1wbGF0ZV9leHBpcnkgPT09IHVuZGVmaW5lZCA/IHBhcmFtcy5leHBpcnkgOiBwYXJhbXMudGVtcGxhdGVfZXhwaXJ5O1xuXHRcdHRleHQgKz0gVHdpbmtsZS5ibG9jay5jYWxsYmFjay5nZXRCbG9ja05vdGljZVdpa2l0ZXh0KHBhcmFtcyk7XG5cdFx0Ly8gYnVpbGQgdGhlIGVkaXQgc3VtbWFyeVxuXHRcdGxldCBzdW1tYXJ5ID0gcGFyYW1zLnVzZXJ0YWxrX3N1bW1hcnk7XG5cdFx0aWYgKG1lc3NhZ2VEYXRhLnN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeSAhPT0gdHJ1ZSAmJiBwYXJhbXMuYXJ0aWNsZSkge1xuXHRcdFx0c3VtbWFyeSArPSBgJHt3aW5kb3cud2dVTFMoJ++8jOS6jicsICfvvIzmlrwnKX1bWzoke3BhcmFtcy5hcnRpY2xlfV1dYDtcblx0XHR9XG5cdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkpO1xuXHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hCbG9ja05vdGljZXMnKSk7XG5cdFx0cGFnZW9iai5zYXZlKCk7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmxvY2ssICdibG9jaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gZnJpZW5kbHl0YWxrYmFjay5qcyAqL1xuKGZ1bmN0aW9uIGZyaWVuZGx5dGFsa2JhY2soJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIGZyaWVuZGx5dGFsa2JhY2suanM6IFRhbGtiYWNrIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJUQlwiKVxuXHQgKiBBY3RpdmUgb246IEFueSBwYWdlIHdpdGggcmVsZXZhbnQgdXNlciBuYW1lICh1c2Vyc3BhY2UsIGNvbnRyaWJzLCBldGMuKSBleGNlcHQgSVAgcmFuZ2VzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS50YWxrYmFjayA9ICgpID0+IHtcblx0XHRpZiAoIW13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrLFxuXHRcdFx0J+mAmuWRiicsXG5cdFx0XHQnZnJpZW5kbHktdGFsa2JhY2snLFxuXHRcdFx0d2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5a+C5a+e5Yiw5LqG6KaB6Ieq5bex5Zue5aSN6Ieq5bex55qE56iL5bqm5LmI77yfJywgJ+aCqOWvguWvnuWIsOS6huimgeiHquW3seWbnuimhuiHquW3seeahOeoi+W6pum6vO+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzUwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflhbPkuo57e3RhbGtiYWNrfX0nLCAn6Zec5pa8e3t0YWxrYmFja319JyksICdUZW1wbGF0ZTpUYWxrYmFjaycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6YCa5ZGK6K6+572uJywgJ+mAmuWRiuioreWumicpLCAnSDpUVy9QUkVGI3RhbGtiYWNrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3RhbGtiYWNrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3JhZGlvJyxcblx0XHRcdG5hbWU6ICd0YnRhcmdldCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm57lpI3vvJrmiJHnmoTorqjorrrpobUnLCAn5Zue6KaG77ya5oiR55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdteXRhbGsnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICd0cnVlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuS7lueUqOaIt+eahOiuqOiuuumhtScsICflm57opobvvJrlhbbku5bkvb/nlKjogIXnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3VzZXJ0YWxrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuWug+mhtemdoicsICflm57opobvvJrlhbblroPpoIHpnaInKSxcblx0XHRcdFx0XHR2YWx1ZTogJ290aGVyJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mCgOivt+iuqOiuuicsICfpgoDoq4voqI7oq5YnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NlZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+mAmuWRiuadv+mAmuefpScsXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpY2UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn4oCc5pyJ5paw6YKu5Lu24oCdJywgJ+OAjOacieaWsOmDteS7tuOAjScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWFpbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUudGFsa2JhY2suY2hhbmdlVGFyZ2V0LFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJ+W3peS9nOWMuicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHR9KTtcblx0XHRjb25zdCBwcmV2aWV3bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHQkKHByZXZpZXdsaW5rKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcocmVzdWx0KTsgLy8gfHJlc3VsdHwgaXMgZGVmaW5lZCBiZWxvd1xuXHRcdH0pO1xuXG5cdFx0cHJldmlld2xpbmsuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuXHRcdHByZXZpZXdsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfpooTop4gnLCAn6aCQ6Ka9Jyk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3RhbGtiYWNrcHJldmlldycsXG5cdFx0XHRsYWJlbDogW3ByZXZpZXdsaW5rXSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnZnJpZW5kbHl0YWxrYmFjay1wcmV2aWV3Ym94Jyxcblx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0cmVzdWx0LnByZXZpZXdlciA9IG5ldyBNb3JlYml0cy53aWtpLnByZXZpZXcoJChyZXN1bHQpLmZpbmQoJ2RpdiNmcmllbmRseXRhbGtiYWNrLXByZXZpZXdib3gnKS5sYXN0KClbMF0pO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGVcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQudGJ0YXJnZXRbMF0uZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdC8vIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIgaGFzIG9wdGVkIG91dCBmcm9tIHRhbGtiYWNrXG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAnZXh0bGlua3MnLFxuXHRcdFx0dGl0bGVzOiBgVXNlciB0YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCxcblx0XHRcdGVscXVlcnk6ICd1c2VyanMuaW52YWxpZC9ub1RhbGtiYWNrJyxcblx0XHRcdGVsbGltaXQ6ICcxJyxcblx0XHR9O1xuXHRcdGNvbnN0IHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bpgIDlh7rpgJrlkYrkv6Hmga8nLCAn5oqT5Y+W6YCA5Ye66YCa5ZGK6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUudGFsa2JhY2suY2FsbGJhY2sub3B0b3V0U3RhdHVzXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUudGFsa2JhY2sub3B0b3V0ID0gJyc7XG5cdFR3aW5rbGUudGFsa2JhY2suY2FsbGJhY2sub3B0b3V0U3RhdHVzID0gKGFwaW9iaikgPT4ge1xuXHRcdGNvbnN0ICRlbCA9ICQoYXBpb2JqLmdldFhNTCgpKS5maW5kKCdlbCcpO1xuXHRcdGlmICgkZWwubGVuZ3RoKSB7XG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLm9wdG91dCA9XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpICsgd2luZG93LndnVUxTKCfkuI3luIzmnJvmlLbliLDlm57lpI3pgJrlkYonLCAn5LiN5biM5pyb5pS25Yiw5Zue6KaG6YCa5ZGKJyk7XG5cdFx0XHRjb25zdCB1cmwgPSAkZWwudGV4dCgpO1xuXHRcdFx0Y29uc3QgcmVhc29uID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdyZWFzb24nLCB1cmwpO1xuXHRcdFx0VHdpbmtsZS50YWxrYmFjay5vcHRvdXQgKz0gcmVhc29uID8gYO+8miR7TW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKHJlYXNvbil9YCA6ICfjgIInO1xuXHRcdH1cblx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScpLnRleHQoVHdpbmtsZS50YWxrYmFjay5vcHRvdXQpO1xuXHR9O1xuXHRsZXQgcHJldl9wYWdlID0gJyc7XG5cdGxldCBwcmV2X3NlY3Rpb24gPSAnJztcblx0bGV0IHByZXZfbWVzc2FnZSA9ICcnO1xuXHRUd2lua2xlLnRhbGtiYWNrLmNoYW5nZVRhcmdldCA9IChlKSA9PiB7XG5cdFx0Y29uc3QgdmFsdWUgPSBlLnRhcmdldC52YWx1ZXM7XG5cdFx0Y29uc3Qgcm9vdCA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyb290LCAnd29ya19hcmVhJyk7XG5cdFx0aWYgKHJvb3Quc2VjdGlvbikge1xuXHRcdFx0cHJldl9zZWN0aW9uID0gcm9vdC5zZWN0aW9uLnZhbHVlO1xuXHRcdH1cblx0XHRpZiAocm9vdC5tZXNzYWdlKSB7XG5cdFx0XHRwcmV2X21lc3NhZ2UgPSByb290Lm1lc3NhZ2UudmFsdWU7XG5cdFx0fVxuXHRcdGlmIChyb290LnBhZ2UpIHtcblx0XHRcdHByZXZfcGFnZSA9IHJvb3QucGFnZS52YWx1ZTtcblx0XHR9XG5cdFx0bGV0IHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zue5aSN6YCa5ZGK5L+h5oGvJywgJ+WbnuimhumAmuWRiuizh+ioiicpLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0cm9vdC5wcmV2aWV3ZXIuY2xvc2VQcmV2aWV3KCk7XG5cdFx0c3dpdGNoICh2YWx1ZSkge1xuXHRcdFx0Y2FzZSAndXNlcnRhbGsnOlxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRsYWJlbDogJycsXG5cdFx0XHRcdFx0c3R5bGU6ICdjb2xvcjogI2YwMCcsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlLXRhbGtiYWNrLW9wdG91dC1tZXNzYWdlJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt++8iOW/heWhq++8iScsICfkvb/nlKjogIXvvIjlv4XloavvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+aCqOeVmeiogOmhtemdoueahOeUqOaIt+WQje+8jOW/heWhq+OAgicsICfmgqjnlZnoqIDpoIHpnaLnmoTkvb/nlKjogIXlkI3nqLHvvIzlv4XloavjgIInKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9wYWdlLFxuXHRcdFx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56ug6IqC77yI5Y+v6YCJ77yJJywgJ+eroOevgO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6DoioLmoIfpopjvvIznlZnnqbrliJnkuI3kvJrkuqfnlJ/nq6DoioLpk77mjqXjgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOevgOaomemhjO+8jOeVmeepuuWJh+S4jeacg+eUoueUn+eroOevgOmAo+e1kOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3NlY3Rpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ25vdGljZSc6IHtcblx0XHRcdFx0Y29uc3Qgbm90aWNlYm9hcmQgPSB3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnbm90aWNlYm9hcmQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn6YCa5ZGK5p2/77yaJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvciAoY29uc3QgW25ibmFtZSwgZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS50YWxrYmFjay5ub3RpY2Vib2FyZHMpKSB7XG5cdFx0XHRcdFx0bm90aWNlYm9hcmQuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGRhdGEubGFiZWwsXG5cdFx0XHRcdFx0XHR2YWx1ZTogbmJuYW1lLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWQ6ICEhZGF0YS5kZWZhdWx0U2VsZWN0ZWQsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56ug6IqC77yI5Y+v6YCJ77yJJywgJ+eroOevgO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJywgJ+eroOevgOaomemhjO+8jOeVmeepuuWJh+S4jeacg+eUoueUn+eroOevgOmAo+e1kOOAgicpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3NlY3Rpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgJ290aGVyJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0XHRcdGlkOiAndHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrozmlbTpobXpnaLlkI0nLCAn5a6M5pW06aCB6Z2i5ZCNJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+a2iOaBr+eahOWujOaVtOmhtemdouWQje+8jOS+i+WmguKAnExJQl90YWxrOummlumhteKAneOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ5LiL6KiK5oGv55qE5a6M5pW06aCB6Z2i5ZCN77yM5L6L5aaC44CMTElCX3RhbGs66aaW6aCB44CN44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfcGFnZSxcblx0XHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJyxcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdtYWlsJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55S15a2Q6YKu5Lu25Li76aKY77yI5Y+v6YCJ77yJJywgJ+mbu+WtkOmDteS7tuS4u+mhjO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oKo5Y+R5Ye655qE55S15a2Q6YKu5Lu255qE5Li76aKY44CCJywgJ+aCqOeZvOWHuueahOmbu+WtkOmDteS7tueahOS4u+mhjOOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzZWUnOlxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrozmlbTpobXpnaLlkI0nLCAn5a6M5pW06aCB6Z2i5ZCNJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+a2iOaBr+eahOWujOaVtOmhtemdouWQje+8jOS+i+WmguKAnExJQl90YWxrOummlumhteKAneOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ5LiL6KiK5oGv55qE5a6M5pW06aCB6Z2i5ZCN77yM5L6L5aaC44CMTElCX3RhbGs66aaW6aCB44CN44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfcGFnZSxcblx0XHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJyxcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvKiBjYXNlICdteXRhbGsnOiAqL1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0XHRcdGlkOiAndHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzZWN0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnq6DoioLvvIjlj6/pgInvvIknLCAn56ug56+A77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug56+A5qiZ6aGM77yM55WZ56m65YmH5LiN5pyD55Si55Sf56ug56+A6YCj57WQ44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfc2VjdGlvbixcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZiAodmFsdWUgIT09ICdub3RpY2UnKSB7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6ZmE5Yqg5L+h5oGv77yI5Y+v6YCJ77yJ77yaJywgJ+mZhOWKoOizh+ioiu+8iOWPr+mBuO+8ie+8micpLFxuXHRcdFx0XHRuYW1lOiAnbWVzc2FnZScsXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5Lya5Zyo5Zue5aSN6YCa5ZGK5qih5p2/5LiL5Ye6546w55qE5raI5oGv77yM5oKo55qE562+5ZCN5Lya6KKr5Yqg5Zyo5pyA5ZCO44CCJyxcblx0XHRcdFx0XHQn5pyD5Zyo5Zue6KaG6YCa5ZGK5qih5p2/5LiL5Ye654++55qE6KiK5oGv77yM5oKo55qE57C95ZCN5pyD6KKr5Yqg5Zyo5pyA5b6M44CCJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRyb290LnJlcGxhY2VDaGlsZCh3b3JrX2FyZWEsIG9sZF9hcmVhKTtcblx0XHRpZiAocm9vdC5tZXNzYWdlKSB7XG5cdFx0XHRyb290Lm1lc3NhZ2UudmFsdWUgPSBwcmV2X21lc3NhZ2U7XG5cdFx0fVxuXHRcdCRib2R5LmZpbmQoJyN0d2lua2xlLXRhbGtiYWNrLW9wdG91dC1tZXNzYWdlJykudGV4dChUd2lua2xlLnRhbGtiYWNrLm9wdG91dCk7XG5cdH07XG5cdFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzID0ge1xuXHRcdGFmZnA6IHtcblx0XHRcdGxhYmVsOiBgTElCOkFGL0ZQ77yIJHt3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOWkhOeQhi/miqXlkYonLCAn6YGO5r++5Zmo6JmV55CGL+WgseWRiicpfe+8iWAsXG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfov4fmu6TlmajplJnor6/miqXlkYrmnInmlrDlm57lupQnLCAn6YGO5r++5Zmo6Yyv6Kqk5aCx5ZGK5pyJ5paw5Zue5oeJJyksXG5cdFx0XHRjb250ZW50OiBgJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmgqjnmoRbW0xJQl90YWxrOui/h+a7pOWZqOWkhOeQhi/miqXlkYp86L+H5ruk5Zmo6ZSZ6K+v5oql5ZGKXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOmBjua/vuWZqOmMr+iqpOWgseWRil1d5bey5pyJ5Zue5oeJ77yM6KuL5YmN5b6A5p+l55yL44CCJ1xuXHRcdFx0KX0tLX5+YC5jb25jYXQoJ35+JyksXG5cdFx0XHRlZGl0U3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5pyJ5YWzW1tMSUJfdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOi/h+a7pOWZqOmUmeivr+aKpeWRil1d55qE6YCa55+lJyxcblx0XHRcdFx0J+aciemXnFtbTElCX3RhbGs66L+H5ruk5Zmo5aSE55CGL+aKpeWRinzpgY7mv77lmajpjK/oqqTloLHlkYpdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0XHRkZWZhdWx0U2VsZWN0ZWQ6IHRydWUsXG5cdFx0fSxcblx0XHRzYmw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS1ibGFja2xpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOm7keWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ6buR5ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXpu5HlkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDpu5HlkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHRzaGw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS13aGl0ZWxpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOeZveWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ55m95ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXnmb3lkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDnmb3lkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0bGV0IHBhZ2U7XG5cdFx0bGV0IG1lc3NhZ2U7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgZWRpdFN1bW1hcnk7XG5cdFx0aWYgKHRidGFyZ2V0ID09PSAnbm90aWNlJykge1xuXHRcdFx0cGFnZSA9IGZvcm0ubm90aWNlYm9hcmQudmFsdWU7XG5cdFx0XHQoe2VkaXRTdW1tYXJ5fSA9IFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzW3BhZ2VdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRidGFyZ2V0ID09PSAnbWFpbCcpIHtcblx0XHRcdFx0ZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+mAmuefpe+8muacieaWsOmCruS7ticsICfpgJrnn6XvvJrmnInmlrDpg7Xku7YnKTtcblx0XHRcdH0gZWxzZSBpZiAodGJ0YXJnZXQgPT09ICdzZWUnKSB7XG5cdFx0XHRcdGVkaXRTdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKCfor7fnnIvnnIsnLCAn6KuL55yL55yLJyl9W1s6JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ31dXSR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfkuIrnmoTorqjorronLFxuXHRcdFx0XHRcdCfkuIrnmoToqI7oq5YnXG5cdFx0XHRcdCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHRlZGl0U3VtbWFyeSA9IGAke3dpbmRvdy53Z1VMUygn5Zue5aSN6YCa5ZGKJywgJ+WbnuimhumAmuWRiicpfe+8iFtbOmA7XG5cdFx0XHRcdGlmICh0YnRhcmdldCAhPT0gJ290aGVyJyAmJiAhbmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoMyl9OmAsICdpJykudGVzdChwYWdlKSkge1xuXHRcdFx0XHRcdGVkaXRTdW1tYXJ5ICs9ICdVc2VyIHRhbGs6Jztcblx0XHRcdFx0fVxuXHRcdFx0XHRlZGl0U3VtbWFyeSArPSBgJHtwYWdlICsgKHNlY3Rpb24gPyBgIyR7c2VjdGlvbn1gIDogJycpfV1dKWA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0Y29uc3QgZnVsbFVzZXJUYWxrUGFnZU5hbWUgPSBgJHtcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW213LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykudXNlcl90YWxrXVxuXHRcdH06JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gZnVsbFVzZXJUYWxrUGFnZU5hbWU7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+WbnuWkjemAmuWRiuWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5Zue6KaG6YCa5ZGK5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0Y29uc3QgdGV4dCA9IGBcXG5cXG4ke1R3aW5rbGUudGFsa2JhY2suZ2V0Tm90aWNlV2lraXRleHQodGJ0YXJnZXQsIHBhZ2UsIHNlY3Rpb24sIG1lc3NhZ2UpWzBdfWA7XG5cdFx0Y29uc3QgdGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKGZ1bGxVc2VyVGFsa1BhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+WKoOWFpeWbnuWkjemAmuWRiicsICfliqDlhaXlm57opobpgJrlkYonKSk7XG5cdFx0dGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoZWRpdFN1bW1hcnkpO1xuXHRcdHRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KHRleHQpO1xuXHRcdHRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHR0YWxrcGFnZS5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFsa2JhY2tBc01pbm9yJykpO1xuXHRcdHRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdHRhbGtwYWdlLmFwcGVuZCgpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgcGFnZTtcblx0XHRsZXQgbWVzc2FnZTtcblx0XHRpZiAodGJ0YXJnZXQgPT09ICdub3RpY2UnKSB7XG5cdFx0XHRwYWdlID0gZm9ybS5ub3RpY2Vib2FyZC52YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBbbm90aWNldGV4dF0gPSBUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0KHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKTtcblx0XHRmb3JtLnByZXZpZXdlci5iZWdpblJlbmRlcihub3RpY2V0ZXh0LCBgVXNlcl90YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0fTtcblxuXHRUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0ID0gKHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKSA9PiB7XG5cdFx0bGV0IHRleHQ7XG5cdFx0bGV0IHRpdGxlO1xuXHRcdGxldCBjb250ZW50O1xuXHRcdGlmICh0YnRhcmdldCA9PT0gJ25vdGljZScpIHtcblx0XHRcdCh7dGl0bGV9ID0gVHdpbmtsZS50YWxrYmFjay5ub3RpY2Vib2FyZHNbcGFnZV0pO1xuXHRcdFx0Y29udGVudCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShUd2lua2xlLnRhbGtiYWNrLm5vdGljZWJvYXJkc1twYWdlXS5jb250ZW50LCAnJFNFQ1RJT04nLCBzZWN0aW9uKTtcblx0XHRcdHRleHQgPSBgPT0gJHt0aXRsZX0gPT1cXG4ke2NvbnRlbnR9YDtcblx0XHR9IGVsc2UgaWYgKHRidGFyZ2V0ID09PSAnc2VlJykge1xuXHRcdFx0dGl0bGUgPSBwYWdlICsgd2luZG93LndnVUxTKCfnmoTnm7jlhbPorqjorronLCAn55qE55u46Zec6KiO6KuWJyk7XG5cdFx0XHRjb250ZW50ID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRgUGxlYXNlIHNlZXxsb2NhdGlvbj0ke3BhZ2V9JHtzZWN0aW9uID8gYCMke3NlY3Rpb259YCA6ICcnfXxtb3JlPSR7bWVzc2FnZS50cmltKCl9fX1gXG5cdFx0XHQpO1xuXHRcdFx0dGV4dCA9ICd7eycuY29uY2F0KFxuXHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0YFBsZWFzZSBzZWV8bG9jYXRpb249JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ318bW9yZT0ke21lc3NhZ2UudHJpbSgpfX19YFxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCA9ICc9PSc7XG5cdFx0XHRpZiAodGJ0YXJnZXQgPT09ICdtYWlsJykge1xuXHRcdFx0XHR0aXRsZSA9IFR3aW5rbGUuZ2V0UHJlZignbWFpbEhlYWRpbmcnKTtcblx0XHRcdFx0Y29udGVudCA9IGB7e1lvdSd2ZSBnb3QgbWFpbHxzdWJqZWN0PSR7c2VjdGlvbn18dHM9fn5gLmNvbmNhdCgnficsICd+fn19Jyk7XG5cdFx0XHRcdHRleHQgKz0gYCR7VHdpbmtsZS5nZXRQcmVmKCdtYWlsSGVhZGluZycpfT09XFxue3tZb3UndmUgZ290IG1haWx8c3ViamVjdD0ke3NlY3Rpb259YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHQvLyBjbGVhbiB0YWxrYmFjayBoZWFkaW5nOiBzdHJpcCBzZWN0aW9uIGhlYWRlciBtYXJrZXJzIHRoYXQgd2VyZSBlcnJvbmVvdXNseSBzdWdnZXN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb25cblx0XHRcdFx0dGl0bGUgPSBUd2lua2xlLmdldFByZWYoJ3RhbGtiYWNrSGVhZGluZycpLnJlcGxhY2UoL15cXHMqPStcXHMqKC4qPylcXHMqPSskXFxzKi8sICckMScpO1xuXHRcdFx0XHRjb250ZW50ID0gYHt7dGFsa2JhY2t8JHtwYWdlfSR7c2VjdGlvbiA/IGB8JHtzZWN0aW9ufWAgOiAnJ31gO1xuXHRcdFx0XHR0ZXh0ICs9IGAke1R3aW5rbGUuZ2V0UHJlZigndGFsa2JhY2tIZWFkaW5nJykucmVwbGFjZShcblx0XHRcdFx0XHQvXlxccyo9K1xccyooLio/KVxccyo9KyRcXHMqLyxcblx0XHRcdFx0XHQnJDEnXG5cdFx0XHRcdCl9PT1cXG57e3RhbGtiYWNrfCR7cGFnZX0ke3NlY3Rpb24gPyBgfCR7c2VjdGlvbn1gIDogJyd9YDtcblx0XHRcdH1cblx0XHRcdGNvbnRlbnQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdHRleHQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRcdGNvbnRlbnQgKz0gYFxcbiR7bWVzc2FnZX1gO1xuXHRcdFx0XHR0ZXh0ICs9IGBcXG4ke21lc3NhZ2V9ICB+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmdldFByZWYoJ2luc2VydFRhbGtiYWNrU2lnbmF0dXJlJykpIHtcblx0XHRcdFx0dGV4dCArPSAnXFxufn4nLmNvbmNhdCgnfn4nKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFt0ZXh0LCB0aXRsZSwgY29udGVudF07XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUudGFsa2JhY2ssICd0YWxrYmFjaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXNwZWVkeS5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVzcGVlZHkoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVzcGVlZHkuanM6IENTRCBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiQ1NEXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwsIGV4aXN0aW5nIHBhZ2VzXG5cdCAqXG5cdCAqIE5PVEUgRk9SIERFVkVMT1BFUlM6XG5cdCAqICBJZiBhZGRpbmcgYSBuZXcgY3JpdGVyaW9uLCBhZGQgaXQgdG8gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcyBhdCB0aGUgdG9wIG9mXG5cdCAqICB0d2lua2xlY29uZmlnLmpzLlxuXHQgKiAgQWxzbywgY2hlY2sgb3V0IHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgQ1NEIHByZWZlcmVuY2VzIGluIHR3aW5rbGUuanMsXG5cdCAqICBhbmQgYWRkIHlvdXIgbmV3IGNyaXRlcmlvbiB0byB0aG9zZSBpZiB5b3UgdGhpbmsgaXQgd291bGQgYmUgZ29vZC5cblx0ICovXG5cdFR3aW5rbGUuc3BlZWR5ID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfpgJ/liKAnLCAn6YCf5YiqJyksXG5cdFx0XHQndHctY3NkJyxcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wID8gd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaQnLCAn5b+r6YCf5Yiq6ZmkJykgOiB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpCcsICfoq4vmsYLlv6vpgJ/liKrpmaQnKVxuXHRcdCk7XG5cdH07XG5cdC8vIFRoaXMgZnVuY3Rpb24gaXMgcnVuIHdoZW4gdGhlIENTRCB0YWIvaGVhZGVyIGxpbmsgaXMgY2xpY2tlZFxuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5pbml0RGlhbG9nKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgPyBUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVN5c29wIDogVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZXZhbHVhdGVVc2VyLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH07XG5cdC8vIFVzZWQgYnkgdW5saW5rIGZlYXR1cmVcblx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nID0gbnVsbDtcblx0Ly8gVXNlZCB0aHJvdWdob3V0XG5cdFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCA9ICEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlbGV0ZS1yZWFzb24nKTtcblx0Ly8gVGhlIHNwZWVkeSBjcml0ZXJpYSBsaXN0IGNhbiBiZSBpbiBvbmUgb2Ygc2V2ZXJhbCBtb2Rlc1xuXHRUd2lua2xlLnNwZWVkeS5tb2RlID0ge1xuXHRcdHN5c29wU2luZ2xlU3VibWl0OiAxLFxuXHRcdC8vIHJhZGlvIGJ1dHRvbnMsIG5vIHN1Ymdyb3Vwcywgc3VibWl0IHdoZW4gXCJTdWJtaXRcIiBidXR0b24gaXMgY2xpY2tlZFxuXHRcdHN5c29wUmFkaW9DbGljazogMixcblx0XHQvLyByYWRpbyBidXR0b25zLCBubyBzdWJncm91cHMsIHN1Ym1pdCB3aGVuIGEgcmFkaW8gYnV0dG9uIGlzIGNsaWNrZWRcblx0XHRzeXNvcE11bHRpcGxlU3VibWl0OiAzLFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIFwiU3VibWl0XCIgYnV0dG9uIGFscmVhZHkgcHJlc2VudFxuXHRcdHN5c29wTXVsdGlwbGVSYWRpb0NsaWNrOiA0LFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIG5lZWQgdG8gYWRkIGEgXCJTdWJtaXRcIiBidXR0b25cblx0XHR1c2VyTXVsdGlwbGVTdWJtaXQ6IDUsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgXCJTdWJtaXRcIiBidXR0b24gYWxyZWFkeSBwcmVzc2VudFxuXHRcdHVzZXJNdWx0aXBsZVJhZGlvQ2xpY2s6IDYsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgbmVlZCB0byBhZGQgYSBcIlN1Ym1pdFwiIGJ1dHRvblxuXHRcdHVzZXJTaW5nbGVTdWJtaXQ6IDcsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBcIlN1Ym1pdFwiIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0dXNlclNpbmdsZVJhZGlvQ2xpY2s6IDgsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBhIHJhZGlvIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0Ly8gYXJlIHdlIGluIFwiZGVsZXRlIHBhZ2VcIiBtb2RlP1xuXHRcdC8vIChzeXNvcHMgY2FuIGFjY2VzcyBib3RoIFwiZGVsZXRlIHBhZ2VcIiBbc3lzb3BdIGFuZCBcInRhZyBwYWdlIG9ubHlcIiBbdXNlcl0gbW9kZXMpXG5cdFx0aXNTeXNvcDogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2tcblx0XHRcdCk7XG5cdFx0fSxcblx0XHQvLyBkbyB3ZSBoYXZlIGEgXCJTdWJtaXRcIiBidXR0b24gb25jZSB0aGUgZm9ybSBpcyBjcmVhdGVkP1xuXHRcdGhhc1N1Ym1pdEJ1dHRvbjogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlclNpbmdsZVN1Ym1pdFxuXHRcdFx0KTtcblx0XHR9LFxuXHRcdC8vIGlzIGRiLW11bHRpcGxlIHRoZSBvdXRjb21lIGhlcmU/XG5cdFx0aXNNdWx0aXBsZTogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlck11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVN1Ym1pdCB8fFxuXHRcdFx0XHRtb2RlID09PSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlUmFkaW9DbGlja1xuXHRcdFx0KTtcblx0XHR9LFxuXHR9O1xuXHQvLyBQcmVwYXJlcyB0aGUgc3BlZWR5IGRlbGV0aW9uIGRpYWxvZyBhbmQgZGlzcGxheXMgaXRcblx0VHdpbmtsZS5zcGVlZHkuaW5pdERpYWxvZyA9IChjYWxsYmFja2Z1bmMpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dXaWR0aCcpLFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dIZWlnaHQnKVxuXHRcdCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLnNwZWVkeTtcblx0XHRkaWFsb2cuc2V0VGl0bGUod2luZG93LndnVUxTKCfpgInmi6nlv6vpgJ/liKDpmaTnkIbnlLEnLCAn6YG45pOH5b+r6YCf5Yiq6Zmk55CG55SxJykpO1xuXHRcdGRpYWxvZy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmlrnpkognLCAn5b+r6YCf5Yiq6Zmk5pa56YedJyksICdMSUI6Q1NEJyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfpgJ/liKDorr7nva4nLCAn6YCf5Yiq6Kit5a6aJyksICdIOlRXL1BSRUYjc3BlZWR5Jyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3NwZWVkeScpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFxuXHRcdFx0Y2FsbGJhY2tmdW5jLFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlTZWxlY3Rpb25TdHlsZScpID09PSAncmFkaW9DbGljaycgPyAnY2hhbmdlJyA6IG51bGxcblx0XHQpO1xuXHRcdGlmIChNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+q5qCH6K6w77yM5LiN5Yig6ZmkJywgJ+WPquaomeiomO+8jOS4jeWIqumZpCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICd0YWdfb25seScsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFnX29ubHknLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfoi6Xmgqjlj6rmg7PmoIforrDmraTpobXpnaLogIzkuI3mmK/lsIblhbbliKDpmaQnLCAn6Iul5oKo5Y+q5oOz5qiZ6KiY5q2k6aCB6Z2i6ICM5LiN5piv5bCH5YW25Yiq6ZmkJyksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiAhKFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCB8fCBUd2lua2xlLmdldFByZWYoJ2RlbGV0ZVN5c29wRGVmYXVsdFRvRGVsZXRlJykpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjRm9ybSA9IGV2ZW50LnRhcmdldC5mb3JtO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUvZGlzYWJsZSB0YWxrIHBhZ2UgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0aWYgKGNGb3JtLnRhbGtwYWdlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y0Zvcm0udGFsa3BhZ2UuZGlzYWJsZWQgPSBjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0XHRjRm9ybS50YWxrcGFnZS5jaGVja2VkID0gIWNDaGVja2VkICYmIFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZScpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIHJlZGlyZWN0cyBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRjRm9ybS5yZWRpcmVjdHMuZGlzYWJsZWQgPSBjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ucmVkaXJlY3RzLmNoZWNrZWQgPSAhY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIGRlbGV0ZSBtdWx0aXBsZVxuXHRcdFx0XHRcdFx0XHRjRm9ybS5kZWxtdWx0aXBsZS5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5kZWxtdWx0aXBsZS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIG9wZW4gdGFsayBwYWdlIGNoZWNrYm94XG5cdFx0XHRcdFx0XHRcdGNGb3JtLm9wZW51c2VydGFsay5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5vcGVudXNlcnRhbGsuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUvZGlzYWJsZSBub3RpZnkgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ubm90aWZ5LmRpc2FibGVkID0gIWNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5ub3RpZnkuY2hlY2tlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUvZGlzYWJsZSBtdWx0aXBsZVxuXHRcdFx0XHRcdFx0XHRjRm9ybS5tdWx0aXBsZS5kaXNhYmxlZCA9ICFjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ubXVsdGlwbGUuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUgcmVxdWVzdGluZyBjcmVhdGlvbiBwcm90ZWN0aW9uXG5cdFx0XHRcdFx0XHRcdGNGb3JtLnNhbHRpbmcuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5tb2RlQ2hhbmdlZChjRm9ybSk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBkZWxldGVPcHRpb25zID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bmFtZTogJ2RlbGV0ZV9vcHRpb25zJyxcblx0XHRcdH0pO1xuXHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz6YCJ6aG5JywgJ+WIqumZpOebuOmXnOmBuOmghScpLFxuXHRcdFx0fSk7XG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSAlIDIgPT09IDAgJiYgbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSAhPT0gMikge1xuXHRcdFx0XHQvLyBoaWRlIG9wdGlvbiBmb3IgdXNlciBwYWdlcywgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGRlbGV0aW5nIHVzZXIgdGFsayBwYWdlXG5cdFx0XHRcdGRlbGV0ZU9wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk6K6o6K666aG1JywgJ+WIqumZpOiojuirlumggScpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3RhbGtwYWdlJyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3RhbGtwYWdlJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfliKDpmaTml7bpmYTluKbliKDpmaTmraTpobXpnaLnmoTorqjorrrpobXjgIInLCAn5Yiq6Zmk5pmC6ZmE5bi25Yiq6Zmk5q2k6aCB6Z2i55qE6KiO6KuW6aCB44CCJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZScpLFxuXHRcdFx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk6YeN5a6a5ZCRJywgJ+WIqumZpOmHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdyZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOWIsOatpOmhteeahOmHjeWumuWQkeOAgicsICfliKrpmaTliLDmraTpoIHnmoTph43mlrDlsI7lkJHjgIInKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlUmVkaXJlY3RzT25EZWxldGUnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGRlbGV0ZU9wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W6lOeUqOWkmuS4queQhueUseWIoOmZpCcsICfmh4nnlKjlpJrlgIvnkIbnlLHliKrpmaQnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsbXVsdGlwbGUnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ2RlbG11bHRpcGxlJyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oKo5Y+v6YCJ5oup5bqU55So5LqO6K+l6aG155qE5aSa5Liq55CG55Sx44CCJywgJ+aCqOWPr+mBuOaTh+aHieeUqOaWvOipsumggeeahOWkmuWAi+eQhueUseOAgicpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5tb2RlQ2hhbmdlZChldmVudC50YXJnZXQuZm9ybSk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHRkZWxldGVPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvIDlkK/nlKjmiLforqjorrrpobUnLCAn6ZaL5ZWf5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ29wZW51c2VydGFsaycsXG5cdFx0XHRcdFx0XHRuYW1lOiAnb3BlbnVzZXJ0YWxrJyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+atpOmhueeahOm7mOiupOWAvOS4uuaCqOeahOW8gOWQr+iuqOiuuumhteiuvue9ruOAguWcqOaCqOmAieaLqeW6lOeUqOWkmuadoeeQhueUseWIoOmZpOaXtuatpOmhueWwhuS/neaMgeS4jeWPmOOAgicsXG5cdFx0XHRcdFx0XHRcdCfmraTpoIXnmoTpoJDoqK3lgLzngrrmgqjnmoTplovllZ/oqI7oq5bpoIHoqK3lrprjgILlnKjmgqjpgbjmk4fmh4nnlKjlpJrmop3nkIbnlLHliKrpmaTmmYLmraTpoIXlsIfkv53mjIHkuI3ororjgIInXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCB0YWdPcHRpb25zID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRuYW1lOiAndGFnX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGlmIChNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0dGFnT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w55u45YWz6YCJ6aG5JywgJ+aomeiomOebuOmXnOmBuOmghScpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRhZ09wdGlvbnMuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpoLlj6/og73vvIzpgJrnn6XliJvlu7rogIUnLCAn5aaC5Y+v6IO977yM6YCa55+l5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkuIDkuKrpgJrnn6XmqKHmnb/lsIbkvJrooqvliqDlhaXliJvlu7rogIXnmoTorqjorrrpobXvvIzoi6XmgqjlkK/nlKjkuobor6XnkIbmja7nmoTpgJrnn6XjgIInLFxuXHRcdFx0XHRcdFx0J+S4gOWAi+mAmuefpeaooeadv+Wwh+acg+iiq+WKoOWFpeW7uueri+iAheeahOiojuirlumgge+8jOiLpeaCqOWVn+eUqOS6huipsueQhuaTmueahOmAmuefpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6XG5cdFx0XHRcdFx0XHQhTW9yZWJpdHMudXNlcklzU3lzb3AgfHxcblx0XHRcdFx0XHRcdCEoVHdpbmtsZS5zcGVlZHkuaGFzQ1NEIHx8IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUnKSksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+a4heepuumhtemdoicsICfmuIXnqbrpoIHpnaInKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2JsYW5rJyxcblx0XHRcdFx0XHRuYW1lOiAnYmxhbmsnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjmoIforrDmqKHmnb/liY3vvIzlhYjmuIXnqbrpobXpnaLvvIzpgILnlKjkuo7kuKXph43noLTlnY/miJbotJ/pnaLnlJ/ogIXkvKDorrDnrYnjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOaomeiomOaooeadv+WJje+8jOWFiOa4heepuumggemdou+8jOmBqeeUqOaWvOWatOmHjeegtOWjnuaIluiyoOmdoueUn+iAheWCs+iomOetieOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZCM5pe25qCH6K6w5Lul6K+35rGC55m957q45L+d5oqkJywgJ+WQjOaZguaomeiomOS7peiri+axgueZvee0meS/neittycpLFxuXHRcdFx0XHRcdHZhbHVlOiAnc2FsdGluZycsXG5cdFx0XHRcdFx0bmFtZTogJ3NhbHRpbmcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfpgInlj5blkI7vvIzlv6vpgJ/liKDpmaTmqKHmnb/lkI7lsIbpmYTluKYge3tzYWx0fX0g5qCH562+77yM5Lul6K+35rGC5omn6KGM5Yig6Zmk55qE566h55CG5ZGY6L+b6KGM55m957q45L+d5oqk77yM5LuF5Zyo6aG16Z2i5Yib5bu6M+asoeS7peS4iuaJjemAieaLqeatpOmhueOAgicsXG5cdFx0XHRcdFx0XHQn6YG45Y+W5b6M77yM5b+r6YCf5Yiq6Zmk5qih5p2/5b6M5bCH6ZmE5bi2IHt7c2FsdH19IOaomeexpO+8jOS7peiri+axguWft+ihjOWIqumZpOeahOeuoeeQhuWToemAsuihjOeZvee0meS/neitt++8jOWDheWcqOmggemdouW7uuerizPmrKHku6XkuIrmiY3pgbjmk4fmraTpoIXjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W6lOeUqOWkmuS4queQhueUsScsICfmh4nnlKjlpJrlgIvnkIbnlLEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ211bHRpcGxlJyxcblx0XHRcdFx0XHRuYW1lOiAnbXVsdGlwbGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oKo5Y+v6YCJ5oup5bqU55So5LqO6K+l6aG155qE5aSa5Liq55CG55Sx44CCJywgJ+aCqOWPr+mBuOaTh+aHieeUqOaWvOipsumggeeahOWkmuWAi+eQhueUseOAgicpLFxuXHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKGV2ZW50LnRhcmdldC5mb3JtKTtcblx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0aWQ6ICdwcmlvci1kZWxldGlvbi1jb3VudCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfliJ3lp4vljJZDU0TmqKHlnZflpLHotKXvvIzor7fph43or5XvvIzmiJblsIbov5nmiqXlkYrnu5lUd2lua2xl5byA5Y+R6ICF44CCJyxcblx0XHRcdFx0J+WIneWni+WMlkNTROaooee1hOWkseaVl++8jOiri+mHjeippu+8jOaIluWwh+mAmeWgseWRiue1plR3aW5rbGXplovnmbzogIXjgIInXG5cdFx0XHQpLFxuXHRcdH0pO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgIT09ICdyYWRpb0NsaWNrJykge1xuXHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0Y2xhc3NOYW1lOiAndHctc3BlZWR5LXN1Ym1pdCcsXG5cdFx0XHR9KTsgLy8gUmVuYW1lZCBpbiBtb2RlQ2hhbmdlZFxuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0ZGlhbG9nLnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRkaWFsb2cuZGlzcGxheSgpO1xuXHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKHJlc3VsdCk7XG5cdFx0Ly8gQ2hlY2sgZm9yIHByaW9yIGRlbGV0aW9ucy4gIEp1c3Qgb25jZSwgdXBvbiBpbml0XG5cdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2sucHJpb3JEZWxldGlvbkNvdW50KCk7XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLmdldE1vZGUgPSAoZm9ybSkgPT4ge1xuXHRcdGxldCBtb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyU2luZ2xlU3VibWl0O1xuXHRcdGlmIChmb3JtLnRhZ19vbmx5ICYmICFmb3JtLnRhZ19vbmx5LmNoZWNrZWQpIHtcblx0XHRcdGlmIChmb3JtLmRlbG11bHRpcGxlLmNoZWNrZWQpIHtcblx0XHRcdFx0bW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVN1Ym1pdDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnN5c29wU2luZ2xlU3VibWl0O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZm9ybS5tdWx0aXBsZS5jaGVja2VkKSB7XG5cdFx0XHRtb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVTdWJtaXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJTaW5nbGVTdWJtaXQ7XG5cdFx0fVxuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgPT09ICdyYWRpb0NsaWNrJykge1xuXHRcdFx0bW9kZSsrO1xuXHRcdH1cblx0XHRyZXR1cm4gbW9kZTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2subW9kZUNoYW5nZWQgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IG5hbWVzcGFjZSA9IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJyk7XG5cdFx0Ly8gZmlyc3QgZmlndXJlIG91dCB3aGF0IG1vZGUgd2UncmUgaW5cblx0XHRjb25zdCBtb2RlID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZ2V0TW9kZShmb3JtKTtcblx0XHRjb25zdCBpc1N5c29wTW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKTtcblx0XHRpZiAoaXNTeXNvcE1vZGUpIHtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPWRlbGV0ZV9vcHRpb25zXScpLnNob3coKTtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPXRhZ19vcHRpb25zXScpLmhpZGUoKTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy1zcGVlZHktc3VibWl0JykudGV4dCh3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPWRlbGV0ZV9vcHRpb25zXScpLmhpZGUoKTtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPXRhZ19vcHRpb25zXScpLnNob3coKTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy1zcGVlZHktc3VibWl0JykudGV4dCh3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSk7XG5cdFx0fVxuXHRcdGNvbnN0IHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdH0pO1xuXHRcdGlmIChcblx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlck11bHRpcGxlUmFkaW9DbGljayB8fFxuXHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlUmFkaW9DbGlja1xuXHRcdCkge1xuXHRcdFx0Y29uc3QgZXZhbHVhdGVUeXBlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpID8gJ2V2YWx1YXRlU3lzb3AnIDogJ2V2YWx1YXRlVXNlcic7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W9k+mAieaLqeWujOaIkOWQju+8jOWNleWHu++8micsICfnlbbpgbjmk4flrozmiJDlvozvvIzpu57mk4rvvJonKSxcblx0XHRcdH0pO1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRuYW1lOiAnc3VibWl0LW11bHRpcGxlJyxcblx0XHRcdFx0bGFiZWw6IGlzU3lzb3BNb2RlID8gd2luZG93LndnVUxTKCfliKDpmaTpobXpnaInLCAn5Yiq6Zmk6aCB6Z2iJykgOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSxcblx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrW2V2YWx1YXRlVHlwZV0oZXZlbnQpO1xuXHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHR9LFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IHJhZGlvT3JDaGVja2JveCA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNNdWx0aXBsZShtb2RlKSA/ICdjaGVja2JveCcgOiAncmFkaW8nO1xuXHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnnkIbnlLEnLCAn6Ieq6KiC55CG55SxJyksXG5cdFx0XHR9KTtcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiByYWRpb09yQ2hlY2tib3gsXG5cdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuY3VzdG9tUmF0aW9uYWxlLCBtb2RlKSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRzd2l0Y2ggKG5hbWVzcGFjZSkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHQvLyBhcnRpY2xlIGFuZCBwc2V1ZG8gbmFtZXNwYWNlXG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuYXJ0aWNsZUxpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRcdC8vIHVzZXJcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi36aG1JywgJ+S9v+eUqOiAhemggemdoicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS51c2VyTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMzpcblx0XHRcdFx0Ly8gdXNlciB0YWxrXG5cdFx0XHRcdGlmIChtdy51dGlsLmlzSVBBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobUnLCAn5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiByYWRpb09yQ2hlY2tib3gsXG5cdFx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS51c2VydGFsa0xpc3QsIG1vZGUpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSA2OlxuXHRcdFx0XHQvLyBmaWxlXG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7ticsICfmqpTmoYgnKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuZmlsZUxpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkpIHtcblx0XHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+agh+iusENTRCBGMeOAgUYz44CBRjXvvIzor7fkvb/nlKhUd2lua2xl55qE4oCc5Zu+5p2D4oCd5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdFx0J+aomeiomENTRCBGMeOAgUYz44CBRjXvvIzoq4vkvb/nlKhUd2lua2xl55qE44CM5ZyW5qyK44CN5Yqf6IO944CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTQ6XG5cdFx0XHRcdC8vIGNhdGVnb3J5XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIhuexuycsICfliIbpoZ4nKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuY2F0ZWdvcnlMaXN0LCBtb2RlKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzMDI6XG5cdFx0XHRcdC8vIGRyYWZ0XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiAn6I2J56i/Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuZHJhZnRMaXN0LCBtb2RlKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBuYW1lc3BhY2UgJSAyID09PSAxICYmIG5hbWVzcGFjZSAhPT0gMzpcblx0XHRcdFx0Ly8gc2hvdyBkYi10YWxrIG9uIHRhbGsgcGFnZXMsIGJ1dCBub3QgdXNlciB0YWxrIHBhZ2VzXG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iuqOiuuumhtScsICfoqI7oq5bpoIEnKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkudGFsa0xpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gY3VzdG9tIHJhdGlvbmFsZSBsaXZlcyB1bmRlciBnZW5lcmFsIGNyaXRlcmlhIHdoZW4gdGFnZ2luZ1xuXHRcdGxldCBnZW5lcmFsQ3JpdGVyaWEgPSBUd2lua2xlLnNwZWVkeS5nZW5lcmFsTGlzdDtcblx0XHRpZiAoIVR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSkge1xuXHRcdFx0Z2VuZXJhbENyaXRlcmlhID0gWy4uLlR3aW5rbGUuc3BlZWR5LmN1c3RvbVJhdGlvbmFsZSwgLi4uZ2VuZXJhdGVBcnJheShnZW5lcmFsQ3JpdGVyaWEpXTtcblx0XHR9XG5cdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhCcsICfluLjopo8nKSxcblx0XHR9KTtcblx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KGdlbmVyYWxDcml0ZXJpYSwgbW9kZSksXG5cdFx0fSk7XG5cdFx0aWYgKCFUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkpIHtcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5oql5L615p2D6aG16Z2i77yM6K+35L2/55SoVHdpbmtsZeeahOKAnOS+teadg+KAneWKn+iDveOAgicsXG5cdFx0XHRcdFx0J+aPkOWgseS+teasiumggemdou+8jOiri+S9v+eUqFR3aW5rbGXnmoTjgIzkvrXmrIrjgI3lip/og73jgIInXG5cdFx0XHRcdCksXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnSXNSZWRpcmVjdCcpIHx8IE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGxhYmVsOiAn6YeN5a6a5ZCRJyxcblx0XHRcdH0pO1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5yZWRpcmVjdExpc3QsIG1vZGUpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IFtvbGRfYXJlYV0gPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ3dvcmtfYXJlYScpO1xuXHRcdGZvcm0ucmVwbGFjZUNoaWxkKHdvcmtfYXJlYS5yZW5kZXIoKSwgb2xkX2FyZWEpO1xuXHRcdC8vIGlmIHN5c29wLCBjaGVjayBpZiBDU0QgaXMgYWxyZWFkeSBvbiB0aGUgcGFnZSBhbmQgZmlsbCBpbiBjdXN0b20gcmF0aW9uYWxlXG5cdFx0aWYgKGlzU3lzb3BNb2RlICYmIFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCkge1xuXHRcdFx0Y29uc3QgW2N1c3RvbU9wdGlvbl0gPSAkYm9keS5maW5kKCdpbnB1dFtuYW1lPWNzZF1bdmFsdWU9cmVhc29uXScpO1xuXHRcdFx0aWYgKGN1c3RvbU9wdGlvbikge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlTZWxlY3Rpb25TdHlsZScpICE9PSAncmFkaW9DbGljaycpIHtcblx0XHRcdFx0XHQvLyBmb3JjZSBsaXN0ZW5lcnMgdG8gcmUtaW5pdFxuXHRcdFx0XHRcdGN1c3RvbU9wdGlvbi5jbGljaygpO1xuXHRcdFx0XHRcdGN1c3RvbU9wdGlvbi5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGN1c3RvbU9wdGlvbi5zdWJncm91cCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3VzdG9tT3B0aW9uLnN1Ymdyb3VwLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI2RlbGV0ZS1yZWFzb24nKS50ZXh0KClcblx0XHRcdFx0KS5yZXBsYWNlKC9cXCsvZywgJyAnKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gZW5sYXJnZSBHNyByYWRpby9jaGVja2JveCBhbmQgaXRzIGxhYmVsXG5cdFx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3ZhbHVlPVwiZzdcIl0nKSAmJiBUd2lua2xlLmdldFByZWYoJ2VubGFyZ2VHN0lucHV0JykpIHtcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3ZhbHVlPVwiZzdcIl0nKS5zdHlsZSA9XG5cdFx0XHRcdCdoZWlnaHQ6IDJlbTsgd2lkdGg6IDJlbTsgaGVpZ2h0OiAtbW96LWluaXRpYWw7IHdpZHRoOiAtbW96LWluaXRpYWw7IC1tb3otdHJhbnNmb3JtOiBzY2FsZSgyKTsgLW8tdHJhbnNmb3JtOiBzY2FsZSgyKTsnO1xuXHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdmFsdWU9XCJnN1wiXScpLmxhYmVsc1swXS5zdHlsZSA9ICdmb250LXNpemU6IDEuNWVtOyBsaW5lLWhlaWdodDogMS41ZW07Jztcblx0XHR9XG5cdFx0aWYgKCFpc1N5c29wTW9kZSAmJiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSAhPT0gJ3dpa2l0ZXh0Jykge1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnX29wdGlvbnNdJykuaGlkZSgpO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9d29ya19hcmVhXScpLmVtcHR5KCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gW1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ1R3aW5rbGXkuI3mlK/mjIHlnKjpobXpnaLlhoXlrrnmqKHlnovkuLonLCAnVHdpbmtsZeS4jeaUr+aPtOWcqOmggemdouWFp+WuueaooeWei+eCuicpLFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSxcblx0XHRcdFx0d2luZG93LndnVUxTKCfnmoTpobXpnaLkuIrmjILkuIrlv6vpgJ/liKDpmaTmqKHmnb/vvIzor7flj4Lop4EnLCAn55qE6aCB6Z2i5LiK5o6b5LiK5b+r6YCf5Yiq6Zmk5qih5p2/77yM6KuL5Y+D6KaLJyksXG5cdFx0XHRcdCQoJzxhPicpXG5cdFx0XHRcdFx0LmF0dHIoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiAnX2JsYW5rJyxcblx0XHRcdFx0XHRcdHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInLFxuXHRcdFx0XHRcdFx0aHJlZjogbXcudXRpbC5nZXRVcmwoJ0xJQjpTUEVDSUFMU0QnKSxcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5omL5Yqo5pS+572u5qih5p2/5pe255qE5rOo5oSP5LqL6aG5JywgJ+aJi+WLleaUvue9ruaooeadv+aZgueahOazqOaEj+S6i+mghScpKVswXSxcblx0XHRcdFx0J+OAgicsXG5cdFx0XHRdO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9d29ya19hcmVhXScpLmFwcGVuZChtZXNzYWdlKTtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZCh0cnVlKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLnByaW9yRGVsZXRpb25Db3VudCA9ICgpID0+IHtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0bGlzdDogJ2xvZ2V2ZW50cycsXG5cdFx0XHRsZXR5cGU6ICdkZWxldGUnLFxuXHRcdFx0bGVhY3Rpb246ICdkZWxldGUvZGVsZXRlJyxcblx0XHRcdC8vIEp1c3QgcHVyZSBwYWdlIGRlbGV0aW9uLCBubyByZWRpcmVjdCBvdmVyd3JpdGVzIG9yIHJldmRlbFxuXHRcdFx0bGV0aXRsZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0bGVwcm9wOiAnJyxcblx0XHRcdC8vIFdlJ3JlIGp1c3QgY291bnRpbmcgd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgZW50cmllc1xuXHRcdFx0bGVsaW1pdDogNSxcblx0XHRcdC8vIEEgbGl0dGxlIGJpdCBnb2VzIGEgbG9uZyB3YXlcblx0XHR9O1xuXG5cdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn5qOA5p+l5LmL5YmN55qE5Yig6ZmkJywgJ+aqouafpeS5i+WJjeeahOWIqumZpCcpLCBxdWVyeSwgKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhcGlvYmouZ2V0UmVzcG9uc2UoKTtcblx0XHRcdGNvbnN0IGRlbENvdW50ID0gcmVzcG9uc2UucXVlcnkubG9nZXZlbnRzLmxlbmd0aDtcblx0XHRcdGlmIChkZWxDb3VudCkge1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9IHdpbmRvdy53Z1VMUygn6KKr5Yig6ZmkJywgJ+iiq+WIqumZpCcpO1xuXHRcdFx0XHRpZiAocmVzcG9uc2UuY29udGludWUpIHtcblx0XHRcdFx0XHRtZXNzYWdlICs9IHdpbmRvdy53Z1VMUygn6LaF6L+HJywgJ+i2hemBjicpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lc3NhZ2UgKz0gYCR7ZGVsQ291bnR95qyhYDtcblx0XHRcdFx0Ly8gMysgc2VlbXMgcHJvYmxlbWF0aWNcblx0XHRcdFx0aWYgKGRlbENvdW50ID49IDMpIHtcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjcHJpb3ItZGVsZXRpb24tY291bnQnKS5jc3MoJ2NvbG9yJywgJyNmZjAwMDAnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBQcm92aWRlIGEgbGluayB0byBwYWdlIGxvZ3MgKENTRCB0ZW1wbGF0ZXMgaGF2ZSBvbmUgZm9yIHN5c29wcylcblx0XHRcdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgd2luZG93LndnVUxTKCfvvIjml6Xlv5fvvIknLCAn77yI5pel6KqM77yJJykpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZShcblx0XHRcdFx0XHQnaHJlZicsXG5cdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0cGFnZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG5cdFx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdFx0XHQkYm9keS5maW5kKCcjcHJpb3ItZGVsZXRpb24tY291bnQnKS50ZXh0KG1lc3NhZ2UpOyAvLyBTcGFjZSBiZWZvcmUgbG9nIGxpbmtcblx0XHRcdFx0JGJvZHkuZmluZCgnI3ByaW9yLWRlbGV0aW9uLWNvdW50JykuYXBwZW5kKGxpbmspO1xuXHRcdFx0fVxuXHRcdH0pLnBvc3QoKTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0ID0gKGxpc3QsIG1vZGUpID0+IHtcblx0XHQvLyBtb2RlIHN3aXRjaGVzXG5cdFx0Y29uc3QgaXNTeXNvcE1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSk7XG5cdFx0Y29uc3QgbXVsdGlwbGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzTXVsdGlwbGUobW9kZSk7XG5cdFx0Y29uc3QgaGFzU3VibWl0QnV0dG9uID0gVHdpbmtsZS5zcGVlZHkubW9kZS5oYXNTdWJtaXRCdXR0b24obW9kZSk7XG5cdFx0Y29uc3Qgb3BlblN1Ymdyb3VwSGFuZGxlciA9IChlKSA9PiB7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2lucHV0JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblx0XHRcdCQoZS50YXJnZXQuZm9ybSkuY2hpbGRyZW4oKS5jc3MoJ2NvbG9yJywgJ2dyYXknKTtcblx0XHRcdCQoZS50YXJnZXQpLnBhcmVudCgpLmNzcygnY29sb3InLCAnYmxhY2snKS5maW5kKCdpbnB1dCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuXHRcdFx0JChlLnRhcmdldCkucGFyZW50KCkuZmluZCgnaW5wdXQ6dGV4dCcpWzBdLmZvY3VzKCk7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH07XG5cdFx0Y29uc3Qgc3VibWl0U3ViZ3JvdXBIYW5kbGVyID0gKGUpID0+IHtcblx0XHRcdGNvbnN0IGV2YWx1YXRlVHlwZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSA/ICdldmFsdWF0ZVN5c29wJyA6ICdldmFsdWF0ZVVzZXInO1xuXHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tbZXZhbHVhdGVUeXBlXShlKTtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fTtcblx0XHRyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGxpc3QsIChjcml0RWxlbWVudCkgPT4ge1xuXHRcdFx0Y29uc3QgY3JpdGVyaW9uID0ge1xuXHRcdFx0XHQuLi5jcml0RWxlbWVudCxcblx0XHRcdH07XG5cdFx0XHRpZiAobXVsdGlwbGUpIHtcblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlV2hlbk11bHRpcGxlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlU3ViZ3JvdXBXaGVuTXVsdGlwbGUpIHtcblx0XHRcdFx0XHRjcml0ZXJpb24uc3ViZ3JvdXAgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVXaGVuU2luZ2xlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlU3ViZ3JvdXBXaGVuU2luZ2xlKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGlzU3lzb3BNb2RlKSB7XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVdoZW5TeXNvcCkge1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVN1Ymdyb3VwV2hlblN5c29wKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlV2hlblVzZXIpIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVTdWJncm91cFdoZW5Vc2VyKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnSXNSZWRpcmVjdCcpICYmIGNyaXRlcmlvbi5oaWRlV2hlblJlZGlyZWN0KSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjcml0ZXJpb24uc2hvd0luTmFtZXNwYWNlcyAmJlxuXHRcdFx0XHQhY3JpdGVyaW9uLnNob3dJbk5hbWVzcGFjZXMuaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGNyaXRlcmlvbi5oaWRlSW5OYW1lc3BhY2VzICYmXG5cdFx0XHRcdGNyaXRlcmlvbi5oaWRlSW5OYW1lc3BhY2VzLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3JpdGVyaW9uLnN1Ymdyb3VwICYmICFoYXNTdWJtaXRCdXR0b24pIHtcblx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gZ2VuZXJhdGVBcnJheShjcml0ZXJpb24uc3ViZ3JvdXAsIHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRuYW1lOiAnc3VibWl0Jyxcblx0XHRcdFx0XHRsYWJlbDogaXNTeXNvcE1vZGUgPyB3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSA6IHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpLFxuXHRcdFx0XHRcdGV2ZW50OiBzdWJtaXRTdWJncm91cEhhbmRsZXIsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBGSVhNRTogZG9lcyB0aGlzIGRvIGFueXRoaW5nP1xuXHRcdFx0XHRjcml0ZXJpb24uZXZlbnQgPSBvcGVuU3ViZ3JvdXBIYW5kbGVyO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGlzU3lzb3BNb2RlKSB7XG5cdFx0XHRcdGNvbnN0IG9yaWdpbmFsRXZlbnQgPSBjcml0ZXJpb24uZXZlbnQ7XG5cdFx0XHRcdGNyaXRlcmlvbi5ldmVudCA9IChlKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG11bHRpcGxlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luYWxFdmVudChlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3Qgbm9ybWFsaXplZENyaXRlcmlvbiA9IFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2hbZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0XHRcdCRib2R5XG5cdFx0XHRcdFx0XHQuZmluZCgnW25hbWU9b3BlbnVzZXJ0YWxrXScpXG5cdFx0XHRcdFx0XHQucHJvcChcblx0XHRcdFx0XHRcdFx0J2NoZWNrZWQnLFxuXHRcdFx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ29wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZScpLmluY2x1ZGVzKG5vcm1hbGl6ZWRDcml0ZXJpb24pXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChvcmlnaW5hbEV2ZW50KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luYWxFdmVudChlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3JpdGVyaW9uO1xuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jdXN0b21SYXRpb25hbGUgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6IGDoh6rlrprkuYnnkIbnlLEke01vcmViaXRzLnVzZXJJc1N5c29wID8gJ++8iOiHquWumuS5ieWIoOmZpOeQhueUse+8iScgOiAnJ31gLFxuXHRcdFx0dmFsdWU6ICdyZWFzb24nLFxuXHRcdFx0dG9vbHRpcDogJ+ivpemhteiHs+WwkeW6lOivpeespuWQiOS4gOadoeW/q+mAn+WIoOmZpOeahOagh+WHhu+8jOW5tuS4lOaCqOW/hemhu+WcqOeQhueUseS4reaPkOWIsOOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAncmVhc29uXzEnLFxuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5maWxlTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Yx77ya5piO5pi+5LiN56ym5ZCI5pys56uZ6JGX5L2c5p2D5pa56ZKI55qE5paH5Lu2Jyxcblx0XHRcdHZhbHVlOiAnZjEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheWGte+8mjEu5LiK5Lyg5ZCOM+WkqeWGheS7jeeEtuadpea6kOS4jeaYjuOAgeiRl+S9nOadg+S4jeaYjueahOaWh+S7tuOAgjIu5LiK5Lyg6ICF5a6j56ew5oul5pyJ77yM6ICM5Zyo5YW25LuW5p2l5rqQ5om+5Yiw55qE5paH5Lu244CCMy7mlofku7blrqPnp7DnlLHmn5DkvZzogIXkvp3mja7mn5Doh6rnlLHokZfkvZzmnYPljY/orq7lj5HluIPvvIzkvYbmib7kuI3liLDor6Xoh6rnlLHljY/orq7nmoTlo7DmmI7jgII0LuWFtuS7luaYjuaYvuS+teadg+eahOaWh+S7tu+8jOWPr+mZhOWKoOS+teadg+eQhueUseOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Yy77ya6YeN5aSN5LiU5LiN5YaN6KKr5L2/55So55qE5paH5Lu2Jyxcblx0XHRcdHZhbHVlOiAnZjInLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheWGte+8muS4jueOsOacieaWh+S7tuWujOWFqOebuOWQjO+8iOaIluS4jueOsOacieaWh+S7tuWGheWuueS4gOiHtOS9huWwuuWvuOi+g+Wwj++8ie+8jOS4lOayoeacieWuouingumcgOimge+8iOWmguafkOS6m+WcuuWQiOmcgOS9v+eUqOWwj+WwuuWvuOWbvueJh++8ieeahOaWh+S7tuOAguaIluaYr+iiq+abtOWKoOa4heaZsOeahOaWh+S7tuOAgVNWR+agvOW8j+aWh+S7tuaJgOWPluS7o+eahOaWh+S7tuOAguivt+aPkOaKpeiAheehruWumuaWh+S7tuayoeacieS7u+S9lemhtemdouS9v+eUqOWQjuWGjeaPkOaKpeWIoOmZpO+8jOW5tumZhOazqOWvueW6lOi0qOmHj+abtOWlveeahOaWh+S7tuWQjeOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAnZjJfZmlsZW5hbWUnLFxuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRsYWJlbDogJ+aWsOaWh+S7tuWQje+8micsXG5cdFx0XHRcdHRvb2x0aXA6ICflj6/kuI3lkKvigJxGaWxlOuKAneWJjee8gOOAgicsXG5cdFx0XHR9LFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LmFydGljbGVMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnQTHvvJrlhoXlrrnnqbrms5vmiJblrozlhajmsqHmnInlhoXlrrnjgIInLFxuXHRcdFx0dmFsdWU6ICdhMScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5p2h55uu55qE5YaF5a6556y857uf77yM5oiW55Sa6Iez5qC55pys5rKh5pyJ5o+Q5Y+K5p2h55uu5Li75L2T77yM5L2/5p2h55uu5LiN6IO955So5Lul5Yy65YiG5YW25LuW5LqL54mp77yb5oiW5p2h55uu5Y+q5YyF5ous5aSW6YOo6ZO+5o6l44CB5Y+C6KeB44CB5Y+C6ICD5p2l5rqQ44CB5YiG57G744CB5qih5p2/77yM6ICM5rKh5pyJ5paH5a2X5o+P6L+w44CC5raI5q2n5LmJ6aG144CB6YeN5a6a5ZCR6aG15LiN6YCC55So5q2k5p2h44CC6K+35rOo5oSP5pyJ5Lqb55So5oi35Y+v6IO95Lya5aSa5qyh5L+d5a2Y77yM6Iul5q2k57G76aG16Z2i55qE5pyA5ZCO5LiA5qyh57yW6L6R5pe26Ze06LaF6L+HMjTlsI/ml7bvvIzliJnlj6/mj5Dor7flv6vpgJ/liKDpmaTjgIInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdBMu+8muS4juWFtuS7luadoeebruaIluWFtuWOhuWPsueJiOacrOmHjeWkje+8jOS4lOS4jemAguWQiOS9nOS4uuWFtumHjeWumuWQkeOAgicsXG5cdFx0XHR2YWx1ZTogJ2EyJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfmnaHnm67liJvlu7rml7bnmoTlhoXlrrnvvIzkuI7lhbbku5bnjrDmnInmnaHnm67vvIjmiJblhbbljoblj7LniYjmnKzvvInlhoXlrrnlrozlhajnm7jlkIzmiJbpnZ7luLjnm7jkvLzvvIzkuJTlkI3np7DkuI3pgILlkIjkvZzkuLrlkI7ogIXnmoTph43lrprlkJHjgILkuI3ljIXmi6zmi4bliIbjgIHlkIjlubbjgIHph43nu4TlkI7kuqfnlJ/nmoTmnaHnm67jgILlpoLmnInnlpHomZHvvIzlj6/ovazkuqTliKDpmaTorqjorrrjgILoi6XlkI7liJvlu7rnmoTmnaHnm67lkI3np7Dlj6/kvZzkuLrph43lrprlkJHvvIzlj6/nm7TmjqXmlLnkuLrph43lrprlkJHvvJvoi6XlhYjliJvlu7rnmoTmnaHnm67lrpzkvZzkuLrlkI7liJvlu7rmnaHnm67nmoTph43lrprlkJHvvIzor7fmj5Dor7fnp7vliqjor7fmsYLjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ2EyX3BhZ2VuYW1lJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfnjrDmnInmnaHnm67lkI3vvJonLFxuXHRcdFx0XHR0b29sdGlwOiAn5LiN6Ieq5Yqo5Yqg5LiK6ZO+5o6l77yM6Iul6ZyA6KaB6K+36Ieq6KGM5Yqg5LiKW1tdXeOAgicsXG5cdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnQTPvvJrpnZ7njrDku6PmsYnor63miJbnv7vor5Hmi5nliqPnmoTmnaHnm64nLFxuXHRcdFx0dmFsdWU6ICdhMycsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5p2h55uu5YaF5a6557ud5aSn6YOo5YiG6Z2e546w5Luj5rGJ6K+t77yM5YyF5ous5pyq57+76K+R55qE5aSW6K+t44CB5pa56KiA5Y+K5paH6KiA5paH77yb5oiW57+76K+R6LSo6YeP5L2O5LiL77yM5Lul6Iez5LqO6Zq+5Lul55CG6Kej5oiW5Ye6546w6L6D5aSa6ZSZ6K+v44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5jYXRlZ29yeUxpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdPMu+8muepuuWIhuexu+OAgicsXG5cdFx0XHR2YWx1ZTogJ28yJyxcblx0XHRcdHRvb2x0aXA6ICfmsqHmnInmlLblvZXku7vkvZXpobXpnaLjgIHmlofku7bjgIHlrZDliIbnsbvnmoTliIbnsbvjgIJDYXRlZ29yeTror7fli7/liKDpmaTnmoTliIbnsbvkuK3nmoTliIbnsbvkuI3pgILnlKjjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LmRyYWZ0TGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ08z77ya5bqf5byD6I2J56i/44CCJyxcblx0XHRcdHZhbHVlOiAnbzMnLFxuXHRcdFx0dG9vbHRpcDogJ+iNieeov+WQjeWtl+epuumXtOWGheWFreS4quaciOWGheaXoOe8lui+keeahOmhtemdouOAgicsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkudXNlckxpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdPMe+8mueUqOaIt+ivt+axguWIoOmZpOiHquW3seeahOeUqOaIt+mhteOAgicsXG5cdFx0XHR2YWx1ZTogJ28xJyxcblx0XHRcdHRvb2x0aXA6ICfnrqHnkIblkZjpnIDmn6XnnIvnvJbovpHljoblj7LvvIznoa7orqTor6XpobXpnaLkuI3mmK/ku47lhbbku5blkI3lrZfnqbrpl7Tnp7vliqjogIzmnaXjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LmdlbmVyYWxMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzHvvJrmmI7mmL7ov53lj43ms5Xlvovms5Xop4TmiJbov53og4zlhazluo/oia/kv5fnmoTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnMScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5piO5pi+6L+d5Y+N5pyN5Yqh5Zmo5omA5Zyo5Zyw55qE5rOV5b6L5rOV6KeE5Y+K5pyJ5YWz6KeE5a6a77yM5oiW56qB56C056S+5Lya5YWs5bqP6Imv5L+X5bqV57q/77yM5oyJ54Wn5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95LqS6IGU572R566h55CG6KeE5a6a5bqU5LqI5Yig6Zmk55qE6aG16Z2i44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzLvvJrmsqHmnInlrp7pmYXlhoXlrrnnmoTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnMicsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5LuF5YyF5ous5peg5oSP5LmJ5a2X56ym5Liy6ICM5rKh5pyJ5a6e6ZmF5YaF5a6555qE6aG16Z2i44CC55Sx55So5oi35pys5Lq65Yib5bu655qE55So5oi36aG144CB55So5oi36K6o6K666aG177yM5Y+K5LiT5Li65rWL6K+V5o+Q5L6b55qE5rKZ55uS77yM5LiN6YCC55So5q2k5YeG5YiZ44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzPvvJrnuq/nsrnnoLTlnY8nLFxuXHRcdFx0dmFsdWU6ICdnMycsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5YyF5ous5L2G5LiN6ZmQ5LqO5piO5pi+55qE5oG25L2c5Ymn44CB6ZSZ6K+v5L+h5oGv44CB5Lq66Lqr5pS75Ye7562J77yM5Lul5Y+K5riF55CG56e75Yqo56C05Z2P5pe255WZ5LiL55qE6YeN5a6a5ZCR44CC6Iul5pS25Yiw5oiW5Y+R546w5Lil6YeN55qE5Lq66Lqr5pS75Ye75LiO6K+L5q+B77yM566h55CG5ZGY5Y+K5YW25LuW55So5oi35bqU6YCa55+l55uR552j5ZGY6L+b6KGM55uR552j6ZqQ6JeP44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzTvvJrph43mlrDliJvlu7rlt7LooqvliKDpmaTnmoTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnNCcsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn6Iul546w5pyJ6aG16Z2i5LiO5pu+5Zyo5Yig6Zmk6K6o6K6677yI5ZCr6aG16Z2i5a2Y5bqf6K6o6K6644CB5paH5Lu25a2Y5bqf6K6o6K665ZKM5L615p2D5a6h5qC477yM5LiN5ZCr5b+r6YCf5Yig6Zmk77yJ5Lit6KKr5Yig6Zmk5YaF5a6555u45ZCM5oiW6Z2e5bi455u45Ly877yM5LiU546w5pyJ5YaF5a655LuN54S26YCC55So5Yig6Zmk6K6o6K665Lit55qE57uT6K6677yM5peg6K665qCH6aKY5piv5ZCm55u45ZCM77yM6YO96YCC55So5pys5qCH5YeG44CC6Iul546w5pyJ6aG16Z2i5qCH6aKY5LiO5bey5Yig54mI5pys5LiN5LiA6Ie077yM5YiZ5o+Q6K+36YCf5Yig6ICF5bqU5LiA5bm25rOo5piO5bey5Yig54mI5pys55qE6aG16Z2i5ZCN77yb6Iul6K+l6aG16Z2i5LmL5YmN6KKr5b+r6YCf5Yig6Zmk77yM6K+35Lul55u45ZCM55CG55Sx6YeN5paw5o+Q6K+36YCf5Yig44CC6Iul546w5pyJ5YaF5a655LiN6YCC55So5Yig6Zmk6K6o6K665Lit55qE57uT6K6677yM5bqU6YeN5paw5o+Q5Ye65Yig6Zmk6K6o6K6644CCJyxcblx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZzRfcGFnZW5hbWUnLFxuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bGFiZWw6ICflt7LliKDniYjmraTpobXpnaLlkI3vvJonLFxuXHRcdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHRcdGhpZGVTdWJncm91cFdoZW5NdWx0aXBsZTogdHJ1ZSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzXvvJrlm6DmioDmnK/ljp/lm6DliKDpmaTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnNScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5YyF5ous5Lul5LiL5oOF5b2i77ya5Zug56e75Yqo6K+35rGC6ICM5Yig6Zmk6aG16Z2i77yb5Lul6KaG55uW5Yig6Zmk6YeN5a6a5ZCR77yb5Yig6Zmk5peg55So55qETWVkaWFXaWtp6aG16Z2i77yM5Y+K5YW25LuW5oqA5pyv5Zui6Zif5oiW55WM6Z2i566h55CG5ZGY6K6k5Li65pyJ5b+F6KaB5omn6KGM55qE5b+r6YCf5Yig6Zmk5oOF5b2i44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzbvvJrljp/kvZzogIXmj5Dor7fliKDpmaTmiJbmuIXnqbrpobXpnaLvvIzkuJTpobXpnaLljp/kvZzogIXku4XmnInkuIDkuronLFxuXHRcdFx0dmFsdWU6ICdnNicsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn6aG16Z2i5Y6f5L2c6ICF5oyB5ZCI55CG55CG55Sx5o+Q5Ye655qE5b+r6YCf5Yig6Zmk77yb5oiW6aG16Z2i5Y6f5L2c6ICF77yI5a6e6ZmF6LSh54yu6ICF77yJ5riF56m66aG16Z2i77yM5YW25LuW55So5oi35o+Q5Lqk55qE5b+r6YCf5Yig6Zmk44CC6aG16Z2i5Y6f5L2c6ICF77yI5a6e6ZmF6LSh54yu6ICF77yJ5LuF5LiA5Lq65pe25ruh6Laz5pys5YeG5YiZ44CC6Iul6aG16Z2i5a6e6ZmF6LSh54yu6ICF5aSa5LqO5LiA5Lq677yM6K+35oyB5ZCI55CG55CG55Sx5o+Q5Lqk5Yig6Zmk6K6o6K6644CC5ZCO5LiA5oOF5b2i5LiN5YyF5ous55So5oi36aG144CB55So5oi36K6o6K666aG177yM5LiU5bqU5Zyo6aG16Z2i5pyA5ZCO5LiA5qyh57yW6L6RNuWwj+aXtuWQjuaPkOWHuuOAguiiq+WvvOWFpeeahOmhtemdou+8jOWvvOWFpeiAheinhuS4uuWOn+S9nOiAheOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAnZzZfcmF0aW9uYWxlJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfliKDpmaTljp/lm6DvvJonLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0sXG5cdFx0XHRoaWRlU3ViZ3JvdXBXaGVuU3lzb3A6IHRydWUsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c377ya5piO5pi+55qE5bm/5ZGK5a6j5LygJyxcblx0XHRcdHZhbHVlOiAnZzcnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+W6lOeUqOS6juaYjuaYvueahOW5v+WRiuWuo+S8oO+8jOaIluWPquacieebuOWFs+S6uueJqeOAgee7hOe7h+etieS6i+eJqeiBlOezu+aWueazle+8iOWMheaLrOS9huS4jemZkOS6jueUteivneOAgeWcsOWdgOOAgeeUteWtkOmCrueuseOAgeWNs+aXtumAmuiur+i9r+S7tuiBlOezu+aWueW8j++8iOWmglFR5Y+344CB5b6u5L+h5Y+377yJ44CB56S+5Lqk5aqS5L2T6ZO+5o6l77yJ44CC6Iul5a6j5Lyg6K+t5rCU5LiN5piO5pi+77yM5bu66K6u6L2s5Lqk5Yig6Zmk6K6o6K6644CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzjvvJrmnKrliJfmmI7lj6/pnaDmnaXmupDkuJTor63osIPotJ/pnaLnmoTnlJ/ogIXkvKDorrAnLFxuXHRcdFx0dmFsdWU6ICdnOCcsXG5cdFx0XHR0b29sdGlwOiAn5pys5oOF5Ya15LiL5pyJ55qE6aG16Z2i5Lil6YeN5L6154qv5LuW5Lq65ZCN6KqJ5p2D77yM5pyJ5pe25Y+v6IO95L6154qv6ZqQ56eB5p2D77yM5Y+v6IO96ZyA6KaB5o+Q6K+355uR552j44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRznvvJrlraTnq4vpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnOScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5YyF5ous5Lul5LiL5Yeg56eN57G75Z6L77yaMS7msqHmnInlr7nlupTmlofku7bnmoTmlofku7bpobXpnaLvvJsyLuayoeacieWvueW6lOavjemhtemdoueahOWtkOmhtemdou+8iOeUqOaIt+mhteWtkOmhtemdoumZpOWklu+8ie+8mzMu5oyH5ZCR5LiN5a2Y5Zyo6aG16Z2i55qE6YeN5a6a5ZCR77ybNC7msqHmnInlr7nlupTlhoXlrrnpobXpnaLnmoTorqjorrrpobXvvIjorqjorrrpobXlrZjmoaPjgIHnlKjmiLforqjorrrpobXvvIzku6Xlj4rlnKjkuLvpobXpnaLmjILmnIl7e0NTRCBQbGFjZWhvbGRlcn195qih5p2/55qE6K6o6K666aG16Zmk5aSW77yJ77ybNS7kuI3lrZjlnKjms6jlhoznlKjmiLfnmoTnlKjmiLfpobXlj4rnlKjmiLfpobXlrZDpobXpnaLvvIjpmo/nlKjmiLfmm7TlkI3kuqfnlJ/nmoTnlKjmiLfpobXph43lrprlkJHpmaTlpJbvvInjgILor7flnKjliKDpmaTml7bms6jmhI/mnInml6DlsIblhoXlrrnnp7voh7Pku5blpITnmoTlv4XopoHjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LnJlZGlyZWN0TGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ1Ix77ya5LiN6IO95Y+R5oyl5a6e6ZmF5L2c55So55qE6YeN5a6a5ZCR44CCJyxcblx0XHRcdHZhbHVlOiAncjEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheWGte+8mjEu5oyH5ZCR5pys6Lqr5oiW5b6q546v55qE6YeN5a6a5ZCR77yM5aaCQeKGkkLihpJD4oaS4oCm4oCm4oaSQeaIlkHihpJB77yI57mB566A6YeN5a6a5ZCR5LiN6YCC55So5q2k6aG577yJ77ybMi7moLzlvI/plJnor6/nmoTph43lrprlkJHvvIzljIXmi6zmoIfpopjku4XkuLrnuYHkvZPjgIHnuYHnroDmt7fnlKjjgIHmtojmrafkuYnkvb/nlKjnmoTmi6zlvKfmiJbnqbrmoLzplJnor6/jgIHpl7TpmpTlj7fkvb/nlKjplJnor6/vvIjlm6DnsbvmjqjnroDljJblrZfmnKrmlLblvZXoh7PjgIrpgJrnlKjop4TojIPmsYnlrZfooajjgIvlr7zoh7TnmoTnuYHnroDmt7fmnYLmg4XlvaLvvIzmiJbns7vnu5/ml6Dms5Xoh6rliqjov5vooYznuYHnroDlpITnkIbnmoTmg4XlvaLvvIzliJnkuI3pgILnlKjvvInjgILoi6Xph43lrprlkJHpobXpnaLmoIfpopjvvIzkuI7lkIjkuY7lkb3lkI3luLjop4TnmoTnm67moIfpobXpnaLmoIfpopjkuYvpl7TvvIzku4XlrZjlnKjnuYHnroDlrZfkvZPnmoTljLrliKvvvIzogIzkuI3lrZjlnKjor43or63nlKjms5XljLrliKvvvIzliJnkuI3kv53nlZnor6Xph43lrprlkJHjgILlm6Dns7vnu5/ml6Dms5Xoh6rliqjnuYHnroDovazmjaLogIzlv4Xpobvkv53nlZnnmoTph43lrprlkJHpobXpnaLpmaTlpJbjgILlr7nkuo7lhbbku5bmnKrliJflh7rnmoTmg4XlhrXvvIzoi6XnlKjmiLforqTkuLror6Xph43lrprlkJHml6Dms5Xlj5HmjKXlrp7pmYXkvZznlKjvvIzkuJTkvp3mja7luLjor4bmsqHmnInku7vkvZXkuonorq7vvIzlj6/lh63lkIjnkIbnkIbnlLHmj5Dor7fpgJ/liKDvvIznlLHnrqHnkIblkZjliKTmlq3jgILmjIflkJHkuI3lrZjlnKjpobXpnaLnmoTph43lrprlkJHvvIzpgILnlKhHNeWHhuWImeOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAncjFfdHlwZScsXG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRsYWJlbDogJ+mAgueUqOexu+Wei++8micsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+ivt+mAieaLqScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+aMh+WQkeacrOi6q+aIluW+queOr+eahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+aMh+WQkeacrOi6q+aIluW+queOr+eahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+agh+mimOe5geeugOa3t+eUqCcsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+agh+mimOe5geeugOa3t+eUqOOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+a2iOatp+S5ieS9v+eUqOeahOaLrOWPt+aIluepuuagvOmUmeivrycsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+a2iOatp+S5ieS9v+eUqOeahOaLrOWPt+aIluepuuagvOmUmeivr+OAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+mXtOmalOWPt+S9v+eUqOmUmeivrycsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+mXtOmalOWPt+S9v+eUqOmUmeivr+OAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+WFtuS7lueQhueUse+8iOivt+WLvumAieS4iuaWueKAnOW6lOeUqOWkmuS4queQhueUseKAne+8jOW5tuWhq+WGmeiHquWumuS5ieeQhueUse+8iScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ1Iy77ya5ZCN56ew5LiO5a+85ZCR55uu5qCH5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJyxcblx0XHRcdHZhbHVlOiAncjInLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS9huS4jemZkOS6juS7peS4i+aDheWGte+8mjEu55Sx5Lu75L2V6Z2e5p2h55uu6aG16Z2i77yI6Zmk55So5oi36aG177yJ5a+85ZCR5p2h55uu6aG155qE6YeN5a6a5ZCR77yM5Lul5Y+K55Sx5p2h55uu6aG15a+85ZCR5Lu75L2V6Z2e5p2h55uu6aG16Z2i55qE6YeN5a6a5ZCR44CCMi7mmI7mmL7nrJTor6/nmoTph43lrprlkJHvvIzlpoLlh7rnjrDkuI3luLjop4HnmoTplJnliKvlrZfnrYnjgILvvIjliKvnp7Dph43lrprlkJHkuI3pgILnlKjmraTpobnjgILoi6XlkKvplJnliKvlrZfmiJbmnInnrJTor6/nmoTph43lrprlkJHkvb/nlKjpopHnjofpq5jvvIzmraTnsbvph43lrprlkJHmnInliqnkuo7luK7liqnnlKjmiLflr7vmib7liLDmraPnoa7nmoTpobXpnaLvvIzkuI3pgILnlKjmraTmoIflh4bjgILmnInkuonorq7nmoTmraTnsbvph43lrprlkJHlrpzmj5DkuqTliKDpmaTorqjorrrjgILvvIkzLuaYjuaYvuS4juWvvOWQkeebruagh+aJgOa2teeblueahOS4u+mimOaXoOWFs++8jOaIluavlOWvvOWQkeebruagh+aJgOa2teeblueahOS4u+mimOabtOW5v+azm+eahOmHjeWumuWQkeOAgu+8iOiLpeS4jeaYjuaYvu+8jOWPr+aUueS4uuaPkOS6pOWIoOmZpOiuqOiuuuOAgu+8iScsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAncjJfdHlwZScsXG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRsYWJlbDogJ+mAgueUqOexu+Wei++8micsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+ivt+mAieaLqScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+eUsemdnuadoeebrumhtemdou+8iOmZpOeUqOaIt+mhte+8ieWvvOWQkeadoeebrumhteeahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+eUsemdnuadoeebrumhtemdou+8iOmZpOeUqOaIt+mhte+8ieWvvOWQkeadoeebrumhteeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+eUseadoeebrumhteWvvOWQkemdnuadoeebrumhtemdoueahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+eUseadoeebrumhteWvvOWQkeS7u+S9lemdnuadoeebrumhtemdoueahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+aYjuaYvueslOivr+eahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+aYjuaYvueslOivr+eahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+S4juWvvOWQkeebruagh+aXoOWFs+aIluavlOWFtuiMg+WbtOabtOW5v+azm+eahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+S4juWvvOWQkeebruagh+aXoOWFs+aIluavlOWFtuiMg+WbtOabtOW5v+azm+eahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+WFtuS7lueQhueUse+8iOivt+WLvumAieS4iuaWueKAnOW6lOeUqOWkmuS4queQhueUseKAne+8jOW5tuWhq+WGmeiHquWumuS5ieeQhueUse+8iScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0sXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkubm9ybWFsaXplSGFzaCA9IHtcblx0XHRyZWFzb246ICdkYicsXG5cdFx0bXVsdGlwbGU6ICdtdWx0aXBsZScsXG5cdFx0J211bHRpcGxlLWZpbmlzaCc6ICdtdWx0aXBsZS1maW5pc2gnLFxuXHRcdGcxOiAnZzEnLFxuXHRcdGcyOiAnZzInLFxuXHRcdGczOiAnZzMnLFxuXHRcdGc0OiAnZzQnLFxuXHRcdGc1OiAnZzUnLFxuXHRcdGc2OiAnZzYnLFxuXHRcdGc3OiAnZzcnLFxuXHRcdGc4OiAnZzgnLFxuXHRcdGc5OiAnZzknLFxuXHRcdGExOiAnYTEnLFxuXHRcdGEyOiAnYTInLFxuXHRcdGEzOiAnYTMnLFxuXHRcdHIxOiAncjEnLFxuXHRcdHIyOiAncjInLFxuXHRcdGYxOiAnZjEnLFxuXHRcdGYyOiAnZjInLFxuXHRcdGYzOiAnZjMnLFxuXHRcdGY0OiAnZjQnLFxuXHRcdGY1OiAnZjUnLFxuXHRcdG8xOiAnbzEnLFxuXHRcdG8yOiAnbzInLFxuXHRcdG8zOiAnbzMnLFxuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MgPSB7XG5cdFx0Z2V0VGVtcGxhdGVDb2RlQW5kUGFyYW1zOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRsZXQgY29kZTtcblx0XHRcdGxldCBwYXJhbWV0ZXJzO1xuXHRcdFx0bGV0IGk7XG5cdFx0XHRpZiAocGFyYW1zLm5vcm1hbGl6ZWRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0Y29kZSA9ICd7e2RlbGV0ZSc7XG5cdFx0XHRcdHBhcmFtcy51dHBhcmFtcyA9IHt9O1xuXHRcdFx0XHRmb3IgKGNvbnN0IFtpbmRleCwgbm9ybV0gb2YgcGFyYW1zLm5vcm1hbGl6ZWRzLmVudHJpZXMoKSkge1xuXHRcdFx0XHRcdGlmIChub3JtICE9PSAnZGInKSB7XG5cdFx0XHRcdFx0XHRjb2RlICs9IGB8JHtub3JtLnRvVXBwZXJDYXNlKCl9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cGFyYW1ldGVycyA9IHBhcmFtcy50ZW1wbGF0ZVBhcmFtc1tpbmRleF0gfHwgW107XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpXyBpbiBwYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtZXRlcnNbaV9dID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRjb2RlICs9IGB8JHtwYXJhbWV0ZXJzW2lfXX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwYXJhbXMudXRwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHQuLi5wYXJhbXMudXRwYXJhbXMsXG5cdFx0XHRcdFx0XHQuLi5Ud2lua2xlLnNwZWVkeS5nZXRVc2VyVGFsa1BhcmFtZXRlcnMobm9ybSwgcGFyYW1ldGVycyksXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb2RlICs9ICd9fSc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwYXJhbWV0ZXJzID0gcGFyYW1zLnRlbXBsYXRlUGFyYW1zWzBdIHx8IFtdO1xuXHRcdFx0XHRjb2RlID0gJ3t7ZGVsZXRlJztcblx0XHRcdFx0aWYgKHBhcmFtcy52YWx1ZXNbMF0gIT09ICdyZWFzb24nKSB7XG5cdFx0XHRcdFx0Y29kZSArPSBgfCR7cGFyYW1zLnZhbHVlc1swXX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoaSBpbiBwYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbWV0ZXJzW2ldID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0Y29kZSArPSBgfCR7cGFyYW1ldGVyc1tpXX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjb2RlICs9ICd9fSc7XG5cdFx0XHRcdHBhcmFtcy51dHBhcmFtcyA9IFR3aW5rbGUuc3BlZWR5LmdldFVzZXJUYWxrUGFyYW1ldGVycyhwYXJhbXMubm9ybWFsaXplZHNbMF0sIHBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFtjb2RlLCBwYXJhbXMudXRwYXJhbXNdO1xuXHRcdH0sXG5cdFx0cGFyc2VXaWtpdGV4dDogKHRpdGxlLCB3aWtpdGV4dCwgY2FsbGJhY2spID0+IHtcblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwYXJzZScsXG5cdFx0XHRcdHByb3A6ICd0ZXh0Jyxcblx0XHRcdFx0cHN0OiAndHJ1ZScsXG5cdFx0XHRcdHRleHQ6IHdpa2l0ZXh0LFxuXHRcdFx0XHRjb250ZW50bW9kZWw6ICd3aWtpdGV4dCcsXG5cdFx0XHRcdHRpdGxlLFxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IHN0YXR1c0luZGljYXRvciA9IG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfmnoTpgKDliKDpmaTnkIbnlLEnLCAn5qeL6YCg5Yiq6Zmk55CG55SxJykpO1xuXHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ino+aekOWIoOmZpOaooeadvycsICfop6PmnpDliKrpmaTmqKHmnb8nKSxcblx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdChhcGlPYmopID0+IHtcblx0XHRcdFx0XHRjb25zdCByZWFzb24gPSBkZWNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRcdFx0XHQkKGFwaU9iai5nZXRYTUwoKS5xdWVyeVNlbGVjdG9yKCd0ZXh0JykuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpXG5cdFx0XHRcdFx0XHRcdC5maW5kKCcjZGVsZXRlLXJlYXNvbicpXG5cdFx0XHRcdFx0XHRcdC50ZXh0KClcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL1xcKy9nLCAnICcpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAocmVhc29uKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN0YXR1c0luZGljYXRvci53YXJuKHdpbmRvdy53Z1VMUygn5pyq6IO95LuO5Yig6Zmk5qih5p2/55Sf5oiQ5Yig6Zmk55CG55SxJywgJ+acquiDveW+nuWIqumZpOaooeadv+eUn+aIkOWIqumZpOeQhueUsScpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FsbGJhY2socmVhc29uKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yXG5cdFx0XHQpO1xuXHRcdFx0YXBpLnBvc3QoKTtcblx0XHR9LFxuXHRcdHN5c29wOiB7XG5cdFx0XHRtYWluOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdGxldCByZWFzb247XG5cdFx0XHRcdGlmICghcGFyYW1zLm5vcm1hbGl6ZWRzLmxlbmd0aCAmJiBwYXJhbXMubm9ybWFsaXplZHNbMF0gPT09ICdkYicpIHtcblx0XHRcdFx0XHRyZWFzb24gPSBwcm9tcHQod2luZG93LndnVUxTKCfovpPlhaXliKDpmaTnkIbnlLHvvJonLCAn6Ly45YWl5Yiq6Zmk55CG55Sx77yaJyksICcnKTtcblx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUGFnZShyZWFzb24sIHBhcmFtcyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgW2NvZGVdID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLmdldFRlbXBsYXRlQ29kZUFuZFBhcmFtcyhwYXJhbXMpO1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5wYXJzZVdpa2l0ZXh0KG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwgY29kZSwgKGRlbGV0ZVJlYXNvbikgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5wcm9tcHRGb3JTdW1tYXJ5KSB7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZVJlYXNvbiA9IHByb21wdChcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6L6T5YWl5Yig6Zmk55CG55Sx77yM5oiW5Y2V5Ye756Gu5a6a5Lul5o6l5Y+X6Ieq5Yqo55Sf5oiQ55qE77yaJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfovLjlhaXliKrpmaTnkIbnlLHvvIzmiJbpu57mk4rnorrlrprku6XmjqXlj5foh6rli5XnlJ/miJDnmoTvvJonXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRkZWxldGVSZWFzb25cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5kZWxldGVQYWdlKGRlbGV0ZVJlYXNvbiwgcGFyYW1zKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVBhZ2U6IChyZWFzb24sIHBhcmFtcykgPT4ge1xuXHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk6aG16Z2iJywgJ+WIqumZpOmggemdoicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChyZWFzb24gPT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gTW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor6Lpl67nkIbnlLEnLCAn6Kmi5ZWP55CG55SxJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIXJlYXNvbiB8fCAhcmVhc29uLnRyaW0oKSkge1xuXHRcdFx0XHRcdHJldHVybiBNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivoumXrueQhueUsScsICfoqaLllY/nkIbnlLEnKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L2g5LiN57uZ5oiR55CG55Sx4oCm5oiR5bCx4oCm5LiN566h5LqG4oCmJywgJ+S9oOS4jee1puaIkeeQhueUseKApuaIkeWwseKApuS4jeeuoeS6huKApicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBkZWxldGVNYWluID0gKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldEVkaXRTdW1tYXJ5KHJlYXNvbik7XG5cdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldFdhdGNobGlzdChwYXJhbXMud2F0Y2gpO1xuXHRcdFx0XHRcdHRoaXNwYWdlLmRlbGV0ZVBhZ2UoKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVRhbGsocGFyYW1zKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdFx0Ly8gbG9vayB1cCBpbml0aWFsIGNvbnRyaWJ1dG9yLiBJZiBwcm9tcHRpbmcgdXNlciBmb3IgZGVsZXRpb24gcmVhc29uLCBqdXN0IGRpc3BsYXkgYSBsaW5rLlxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugb3BlbiB0aGUgdGFsayBwYWdlIGRpcmVjdGx5XG5cdFx0XHRcdGlmIChwYXJhbXMub3BlblVzZXJUYWxrKSB7XG5cdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdFx0dGhpc3BhZ2UubG9va3VwQ3JlYXRpb24oKCkgPT4ge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLm9wZW5Vc2VyVGFsa1BhZ2UodGhpc3BhZ2UpO1xuXHRcdFx0XHRcdFx0ZGVsZXRlTWFpbigpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlbGV0ZU1haW4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVRhbGs6IChwYXJhbXMpID0+IHtcblx0XHRcdFx0Ly8gZGVsZXRlIHRhbGsgcGFnZVxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cGFyYW1zLmRlbGV0ZVRhbGtQYWdlICYmXG5cdFx0XHRcdFx0cGFyYW1zLm5vcm1hbGl6ZWQgIT09ICdvMScgJiZcblx0XHRcdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NhLXRhbGsnKS5jbGFzc0xpc3QuY29udGFpbnMoJ25ldycpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IHRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdGAke1xuXHRcdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVttdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICsgMV1cblx0XHRcdFx0XHRcdH06JHttdy5jb25maWcuZ2V0KCd3Z1RpdGxlJyl9YCxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk6K6o6K666aG1JywgJ+WIqumZpOiojuirlumggScpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRcdGBbW0xJQjpDU0QjRzl8RzldXTog5a2k56uL6aG16Z2i77ya5bey5Yig6Zmk6aG16Z2i4oCcJHtNb3JlYml0cy5wYWdlTmFtZU5vcm194oCd55qE6K6o6K666aG1YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdHRhbGtwYWdlLmRlbGV0ZVBhZ2UoKTtcblx0XHRcdFx0XHQvLyB0aGlzIGlzIHVnbHksIGJ1dCBiZWNhdXNlIG9mIHRoZSBhcmNoaXRlY3R1cmUgb2Ygd2lraS5hcGksIGl0IGlzIG5lZWRlZFxuXHRcdFx0XHRcdC8vIChvdGhlcndpc2Ugc3VjY2Vzcy9mYWlsdXJlIG1lc3NhZ2VzIGZvciB0aGUgcHJldmlvdXMgYWN0aW9uIHdvdWxkIGJlIHN1cHByZXNzZWQpXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUmVkaXJlY3RzKHBhcmFtcyk7XG5cdFx0XHRcdFx0fSwgMTgwMCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVJlZGlyZWN0cyhwYXJhbXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZXRlUmVkaXJlY3RzOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdC8vIGRlbGV0ZSByZWRpcmVjdHNcblx0XHRcdFx0aWYgKHBhcmFtcy5kZWxldGVSZWRpcmVjdHMpIHtcblx0XHRcdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0cHJvcDogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRyZGxpbWl0OiA1MDAwLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6YeN5a6a5ZCR5YiX6KGo4oCmJywgJ+WPluW+l+mHjeaWsOWwjuWQkeWIl+ihqOKApicpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUmVkaXJlY3RzTWFpbixcblx0XHRcdFx0XHRcdG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEnLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRJykpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHByb21wdCBmb3IgcHJvdGVjdCBvbiBHN1xuXHRcdFx0XHRsZXQgJGxpbms7XG5cdFx0XHRcdGxldCAkYmlndGV4dDtcblx0XHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkID09PSAnZzcnKSB7XG5cdFx0XHRcdFx0JGxpbmsgPSAkKCc8YT4nKVxuXHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnIycpXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WNleWHu+i/memHjOaWveihjOS/neaKpCcsICfpu57mk4rpgJnoo6Hmlr3ooYzkv53orbcnKSlcblx0XHRcdFx0XHRcdC5jc3Moe1xuXHRcdFx0XHRcdFx0XHQnZm9udC1zaXplJzogJzEyNSUnLFxuXHRcdFx0XHRcdFx0XHQnZm9udC13ZWlnaHQnOiAnYm9sZCcsXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0Lm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLnNldCgnd2dBcnRpY2xlSWQnLCAwKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrKCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkYmlndGV4dCA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn55m957q45L+d5oqk6K+l6aG1JywgJ+eZvee0meS/neitt+ipsumggScpKTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHByb21vdGUgVW5saW5rIHRvb2xcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0XHQkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICcjJylcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y2V5Ye76L+Z6YeM5YmN5b6A5Y+W5raI6ZO+5YWl5bel5YW3JywgJ+m7nuaTiumAmeijoeWJjeW+gOWPlua2iOmAo+WFpeW3peWFtycpKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnVubGluay5jYWxsYmFjayhcblx0XHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOaWh+S7tiAnLCAn5Y+W5raI5bCN5bey5Yiq6Zmk5qqU5qGIICcpICsgTW9yZWJpdHMucGFnZU5hbWVOb3JtfSDnmoTkvb/nlKhgXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkYmlndGV4dCA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y+W5raI5a+55bey5Yig6Zmk5paH5Lu255qE5L2/55SoJywgJ+WPlua2iOWwjeW3suWIqumZpOaqlOahiOeahOS9v+eUqCcpKTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJyMnKVxuXHRcdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vov5nph4zliY3lvoDlj5bmtojpk77lhaXlt6XlhbcnLCAn6bue5pOK6YCZ6KOh5YmN5b6A5Y+W5raI6YCj5YWl5bel5YW3JykpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUudW5saW5rLmNhbGxiYWNrKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Y+W5raI5a+55bey5Yig6Zmk6aG16Z2iICcsICflj5bmtojlsI3lt7LliKrpmaTpoIHpnaIgJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtICtcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOeahOmTvuaOpScsICcg55qE6YCj57WQJylcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdCRiaWd0ZXh0ID0gJCgnPHNwYW4+JykudGV4dCh3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOmhtemdoueahOmTvuaOpScsICflj5bmtojlsI3lt7LliKrpmaTpoIHpnaLnmoTpgKPntZAnKSkuY3NzKHtcblx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHQuYXR0cignaHJlZicsIG13LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOlJhbmRvbUluQ2F0ZWdvcnkv5b+r6YCf5Yig6Zmk5YCZ6YCJJykpXG5cdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vliY3lvoDkuIvkuIDkuKrlv6vpgJ/liKDpmaTlgJnpgIknLCAn6bue5pOK5YmN5b6A5LiL5LiA5YCL5b+r6YCf5Yiq6Zmk5YCZ6YG4JykpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygn5bel5YW3JywgJGxpbmtbMF0pO1xuXHRcdFx0fSxcblx0XHRcdG9wZW5Vc2VyVGFsa1BhZ2U6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpLnVubGluaygpOyAvLyBkb24ndCBuZWVkIGl0IGFueW1vcmVcblx0XHRcdFx0Y29uc3QgdXNlciA9IHBhZ2VvYmouZ2V0Q3JlYXRvcigpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdlZGl0Jyxcblx0XHRcdFx0XHRwcmV2aWV3OiAneWVzJyxcblx0XHRcdFx0XHR2YW5hcnRpY2xlOiBNb3JlYml0cy5wYWdlTmFtZU5vcm0sXG5cdFx0XHRcdH07XG5cdFx0XHRcdGNvbnN0IHRpdGxlID0gYFVzZXIgdGFsazoke3VzZXJ9YDtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy5ub3JtYWxpemVkID09PSAnZGInIHx8XG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnknKS5pbmNsdWRlcyhwYXJhbXMubm9ybWFsaXplZClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Ly8gcHJvdmlkZSBhIGxpbmsgdG8gdGhlIHVzZXIgdGFsayBwYWdlXG5cdFx0XHRcdFx0Y29uc3QgJGxpbmsgPSAkKCc8YT4nKVxuXHRcdFx0XHRcdFx0LmF0dHIoe1xuXHRcdFx0XHRcdFx0XHRocmVmOiBtdy51dGlsLmdldFVybCh0aXRsZSwgcXVlcnkpLFxuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRyZWw6ICdub29wZW5lciBub3JlZmVycmVyJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn54K55q2k5omT5byAVXNlciB0YWxrOicsICfpu57mraTmiZPplotVc2VyIHRhbGs6JykgKyB1c2VyKTtcblx0XHRcdFx0XHRjb25zdCAkYmlndGV4dCA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICFJywgJ+mAmuefpemggemdouW7uueri+iAhScpKTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIG9wZW4gdGhlIGluaXRpYWwgY29udHJpYnV0b3IncyB0YWxrIHBhZ2Vcblx0XHRcdFx0XHRjb25zdCBzdGF0dXNJbmRpY2F0b3IgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmiZPlvIDnlKjmiLcnLCAn5omT6ZaL5L2/55So6ICFJykgK1xuXHRcdFx0XHRcdFx0XHR1c2VyICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnmoTorqjorrrpobXnvJbovpHnqpflj6MnLCAn55qE6KiO6KuW6aCB57eo6Lyv6KaW56qXJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aJk+W8gOS4reKApicsICfmiZPplovkuK3igKYnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c3dpdGNoIChUd2lua2xlLmdldFByZWYoJ3VzZXJUYWxrUGFnZU1vZGUnKSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAndGFiJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4obXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnYmxhbmsnOlxuXHRcdFx0XHRcdFx0XHR3aW5kb3cub3Blbihcblx0XHRcdFx0XHRcdFx0XHRtdy51dGlsLmdldFVybCh0aXRsZSwgcXVlcnkpLFxuXHRcdFx0XHRcdFx0XHRcdCdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRcdCdub29wZW5lcixub3JlZmVycmVyLGxvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHQvKiBjYXNlICd3aW5kb3cnOiAqL1xuXHRcdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93JyA/ICdfYmxhbmsnIDogJ3R3aW5rbGV3YXJud2luZG93Jyxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93J1xuXHRcdFx0XHRcdFx0XHRcdFx0PyAnbm9vcGVuZXIsbm9yZWZlcnJlciwnXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICcnICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbG9jYXRpb249bm8sdG9vbGJhcj1ubyxzdGF0dXM9bm8sZGlyZWN0b3JpZXM9bm8sc2Nyb2xsYmFycz15ZXMsd2lkdGg9MTIwMCxoZWlnaHQ9ODAwJ1xuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZXRlUmVkaXJlY3RzTWFpbjogKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxEb2MgPSBhcGlvYmouZ2V0WE1MKCk7XG5cdFx0XHRcdGNvbnN0ICRzbmFwc2hvdCA9ICQoeG1sRG9jKS5maW5kKCdyZWRpcmVjdHMgcmQnKTtcblx0XHRcdFx0Y29uc3QgdG90YWwgPSAkc25hcHNob3QubGVuZ3RoO1xuXHRcdFx0XHRjb25zdCBzdGF0dXNJbmRpY2F0b3IgPSBhcGlvYmouc3RhdGVsZW07XG5cdFx0XHRcdGlmICghdG90YWwpIHtcblx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IuaW5mbyh3aW5kb3cud2dVTFMoJ+acquWPkeeOsOmHjeWumuWQkScsICfmnKrnmbznj77ph43mlrDlsI7lkJEnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0YXR1c0luZGljYXRvci5zdGF0dXMoJzAlJyk7XG5cdFx0XHRcdGxldCBjdXJyZW50ID0gMDtcblx0XHRcdFx0Y29uc3Qgb25zdWNjZXNzID0gKGFwaW9iaklubmVyKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgbm93ID0gYCR7TnVtYmVyLnBhcnNlSW50KCgxMDAgKiArK2N1cnJlbnQpIC8gdG90YWwsIDEwKX0lYDtcblx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IudXBkYXRlKG5vdyk7XG5cdFx0XHRcdFx0YXBpb2JqSW5uZXIuc3RhdGVsZW0udW5saW5rKCk7XG5cdFx0XHRcdFx0aWYgKGN1cnJlbnQgPj0gdG90YWwpIHtcblx0XHRcdFx0XHRcdHN0YXR1c0luZGljYXRvci5pbmZvKGAke25vd33vvIjlrozmiJDvvIlgKTtcblx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0XHRcdCRzbmFwc2hvdC5lYWNoKChfa2V5LCB2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJCh2YWx1ZSkuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCBwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdHRpdGxlLFxuXHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEgXCInLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRIFwiJykgKyB0aXRsZX1cImBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkoYFtbTElCOkNTRCNHOXxHOV1dOiDlraTnq4vpobXpnaLvvJrph43lrprlkJHliLDlt7LliKDpmaTpobXpnaLigJwke01vcmViaXRzLnBhZ2VOYW1lTm9ybX3igJ1gKTtcblx0XHRcdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRwYWdlLmRlbGV0ZVBhZ2Uob25zdWNjZXNzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0dXNlcjoge1xuXHRcdFx0bWFpbjogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKDpmaQnLCAn6aCB6Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yiq6ZmkJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0c3RhdGVsZW0uc3RhdHVzKHdpbmRvdy53Z1VMUygn5qOA5p+l6aG16Z2i5bey5pyJ5qCH6K6w4oCmJywgJ+aqouafpemggemdouW3suacieaomeiomOKApicpKTtcblx0XHRcdFx0Ly8gY2hlY2sgZm9yIGV4aXN0aW5nIGRlbGV0aW9uIHRhZ3Ncblx0XHRcdFx0Y29uc3QgdGV4dE5vU2QgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZXxkZWxldGViZWNhdXNlfHNwZWVkeXxjc2R86YCf5YiqfOmAn+WIoHzlv6vliKB85b+r5YiqKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb1NkICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDlv6vpgJ/liKDpmaTmqKHmnb/vvIzopoHnp7vpmaTlubbliqDlhaXmlrDnmoTlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK5om+5Yiw5b+r6YCf5Yiq6Zmk5qih5p2/77yM6KaB56e76Zmk5Lim5Yqg5YWl5paw55qE5ZeO77yfJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmqKHmnb/lt7Looqvnva7kuo7pobXpnaLkuK3jgIInLCAn5b+r6YCf5Yiq6Zmk5qih5p2/5bey6KKr572u5pa86aCB6Z2i5Lit44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0ZXh0ID0gdGV4dE5vU2Q7XG5cdFx0XHRcdGNvbnN0IGNvcHl2aW8gPSAvKD86XFx7XFx7XFxzKihjb3B5dmlvfOS+teadg3zkvrXmrIopW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y29weXZpbyAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6JGX5L2c5p2D6aqM6K+B5qih5p2/5bey6KKr572u5LqO6aG16Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz5Yqg5YWl5LiA5Liq5b+r6YCf5Yig6Zmk5qih5p2/77yfJyxcblx0XHRcdFx0XHRcdFx0J+iRl+S9nOasiumpl+itieaooeadv+W3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5Lit5bey5pyJ6JGX5L2c5p2D6aqM6K+B5qih5p2/44CCJywgJ+mggemdouS4reW3suacieiRl+S9nOasiumpl+itieaooeadv+OAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7PliqDlhaXkuIDkuKrlv6vpgJ/liKDpmaTmqKHmnb/vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBnaXZlbiB0aGUgcGFyYW1zLCBidWlsZHMgdGhlIHRlbXBsYXRlIGFuZCBhbHNvIGFkZHMgdGhlIHVzZXIgdGFsayBwYWdlIHBhcmFtZXRlcnMgdG8gdGhlIHBhcmFtcyB0aGF0IHdlcmUgcGFzc2VkIGluXG5cdFx0XHRcdC8vIHJldHVybnMgPT4gWzxzdHJpbmc+IHdpa2l0ZXh0LCA8b2JqZWN0PiB1dHBhcmFtc11cblx0XHRcdFx0Y29uc3QgYnVpbGREYXRhID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLmdldFRlbXBsYXRlQ29kZUFuZFBhcmFtcyhwYXJhbXMpO1xuXHRcdFx0XHRsZXQgW2NvZGVdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRbLCBwYXJhbXMudXRwYXJhbXNdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpKTtcblx0XHRcdFx0Ly8gcGF0cm9sIHRoZSBwYWdlLCBpZiByZWFjaGVkIGZyb20gU3BlY2lhbDpOZXdQYWdlc1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZCcpKSB7XG5cdFx0XHRcdFx0dGhpc3BhZ2UucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gV3JhcCBTRCB0ZW1wbGF0ZSBpbiBub2luY2x1ZGUgdGFncyBpZiB3ZSBhcmUgaW4gdGVtcGxhdGUgc3BhY2UuXG5cdFx0XHRcdC8vIFdvbid0IHdvcmsgd2l0aCB1c2VyYm94ZXMgaW4gdXNlcnNwYWNlLCBvciBhbnkgb3RoZXIgdHJhbnNjbHVkZWQgcGFnZSBvdXRzaWRlIHRlbXBsYXRlIHNwYWNlXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCkge1xuXHRcdFx0XHRcdC8vIFRlbXBsYXRlOlxuXHRcdFx0XHRcdGNvZGUgPSBgPG5vaW5jbHVkZT4ke2NvZGV9PC9ub2luY2x1ZGU+YDtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBSZW1vdmUgdGFncyB0aGF0IGJlY29tZSBzdXBlcmZsdW91cyB3aXRoIHRoaXMgYWN0aW9uXG5cdFx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooW05uXWV3IHVucmV2aWV3ZWQgYXJ0aWNsZXxbVXVdbnJldmlld2VkfFtVdV1zZXJzcGFjZSBkcmFmdClcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2csXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgXCJtb3ZlIHRvIENvbW1vbnNcIiB0YWcgLSBkZWxldGlvbi10YWdnZWQgZmlsZXMgY2Fubm90IGJlIG1vdmVkIHRvIENvbW1vbnNcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyhtdGN8KGNvcHkgfG1vdmUgKT90byA/KHNoYXJlfGNvbW1vbnMpfG1vdmUgdG8gKHlzYXJjaGl2ZXMgc2hhcmV8d2lraW1lZGlhIGNvbW1vbnMpfGNvcHkgdG8gKHlzYXJjaGl2ZXMgc2hhcmV8d2lraW1lZGlhIGNvbW1vbnMpKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHRcdFx0Jydcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMucmVxdWVzdHNhbHQpIHtcblx0XHRcdFx0XHRjb2RlID0gYHt7c2FsdH19XFxuJHtjb2RlfWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gR2VuZXJhdGUgZWRpdCBzdW1tYXJ5IGZvciBlZGl0XG5cdFx0XHRcdGxldCBlZGl0c3VtbWFyeTtcblx0XHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpO+8iCcsICfoq4vmsYLlv6vpgJ/liKrpmaTvvIgnKTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IG5vcm0gb2YgcGFyYW1zLm5vcm1hbGl6ZWRzKSB7XG5cdFx0XHRcdFx0XHRpZiAobm9ybSAhPT0gJ2RiJykge1xuXHRcdFx0XHRcdFx0XHRlZGl0c3VtbWFyeSArPSBgW1tMSUI6Q1NEIyR7bm9ybS50b1VwcGVyQ2FzZSgpfXxDU0QgJHtub3JtLnRvVXBwZXJDYXNlKCl9XV3jgIFgO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlZGl0c3VtbWFyeSA9IGVkaXRzdW1tYXJ5LnNsaWNlKDAsIE1hdGgubWF4KDAsIGVkaXRzdW1tYXJ5Lmxlbmd0aCAtIDEpKTsgLy8gcmVtb3ZlIHRyYWlsaW5nIGNvbW1hXG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPVxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fmsYJbW0xJQjpDU0R85b+r6YCf5Yig6ZmkXV3vvJonLCAn6KuL5rGCW1tMSUI6Q1NEfOW/q+mAn+WIqumZpF1d77yaJykgK1xuXHRcdFx0XHRcdFx0cGFyYW1zLnRlbXBsYXRlUGFyYW1zWzBdWycxJ107XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPSBgJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6K+35rGC5b+r6YCf5Yig6ZmkJyxcblx0XHRcdFx0XHRcdCfoq4vmsYLlv6vpgJ/liKrpmaQnXG5cdFx0XHRcdFx0KX3vvIhbW0xJQjpDU0QjJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWRzWzBdLnRvVXBwZXJDYXNlKCl9XV3vvIlgO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEJsYW5rIGF0dGFjayBwYWdlc1xuXHRcdFx0XHRpZiAocGFyYW1zLmJsYW5rKSB7XG5cdFx0XHRcdFx0dGV4dCA9IGNvZGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZSh0ZXh0KTtcblx0XHRcdFx0XHR0ZXh0ID0geXNhcmNoaXZlc19wYWdlLmluc2VydEFmdGVyVGVtcGxhdGVzKGAke2NvZGV9XFxuYCwgVHdpbmtsZS5oYXRub3RlUmVnZXgpLmdldFRleHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGVkaXRzdW1tYXJ5KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KHBhcmFtcy53YXRjaCk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci50YWdDb21wbGV0ZSk7XG5cdFx0XHR9LFxuXHRcdFx0dGFnQ29tcGxldGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0XHRpZiAocGFyYW1zLnVzZXJ0YWxrKSB7XG5cdFx0XHRcdFx0Y29uc3QgY2FsbGJhY2sgPSAocGFnZU9iaikgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGluaXRpYWxDb250cmliID0gcGFnZU9iai5nZXRDcmVhdG9yKCk7XG5cdFx0XHRcdFx0XHQvLyBkaXNhbGxvdyB3YXJuaW5nIHlvdXJzZWxmXG5cdFx0XHRcdFx0XHRpZiAoaW5pdGlhbENvbnRyaWIgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSkge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHRg5oKo77yIJHtpbml0aWFsQ29udHJpYn0ke3dpbmRvdy53Z1VMUygn77yJ5Yib5bu65LqG6K+l6aG177yM6Lez6L+H6YCa55+lJywgJ++8ieW7uueri+S6huipsumgge+8jOi3s+mBjumAmuefpScpfWBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0aW5pdGlhbENvbnRyaWIgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHQvLyBkb24ndCBub3RpZnkgdXNlcnMgd2hlbiB0aGVpciB1c2VyIHRhbGsgcGFnZSBpcyBub21pbmF0ZWRcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID09PSBtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykgJiZcblx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gM1xuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpobXpnaLliJvlu7rogIXvvJrnlKjmiLfliJvlu7rkuoboh6rlt7HnmoTorqjorrrpobUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+mAmuefpemggemdouW7uueri+iAhe+8muS9v+eUqOiAheW7uueri+S6huiHquW3seeahOiojuirlumggSdcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Ly8gcXVpY2sgaGFjayB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSB1bndhbnRlZCBub3RpZmljYXRpb25zLiBTaG91bGQgYWN0dWFsbHkgYmUgY29uZmlndXJhYmxlIG9uIHJlY2lwaWVudCBwYWdlLi4uXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGluaXRpYWxDb250cmliID09PSAnQTIwOTMwNjQtYm90JyAmJiBwYXJhbXMubm9ybWFsaXplZHNbMF0gPT09ICdnMTUnKSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpobXpnaLliJvlu7rogIXvvJrnlLHmnLrlmajkurrliJvlu7rvvIzot7Pov4fpgJrnn6UnLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+mAmuefpemggemdouW7uueri+iAhe+8mueUseapn+WZqOS6uuW7uueri++8jOi3s+mBjumAmuefpSdcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID0gbnVsbDtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtpbml0aWFsQ29udHJpYn1gO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIGluaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0bGV0IG5vdGlmeXRleHQ7XG5cdFx0XHRcdFx0XHRcdG5vdGlmeXRleHQgPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYGRiLW5vdGljZXx0YXJnZXQ9JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19YCk7XG5cdFx0XHRcdFx0XHRcdG5vdGlmeXRleHQgKz0gXCJ8bm93ZWxjb21lPXllcyd9fS0tfn5cIi5jb25jYXQoJ35+Jyk7XG5cdFx0XHRcdFx0XHRcdGxldCBlZGl0c3VtbWFyeSA9ICfpgJrnn6XvvJonO1xuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm5vcm1hbGl6ZWRzLmluY2x1ZGVzKCdnMycpKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ+S4gOaUu+WHu+aAp+mhtemdoic7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gbm8gYXJ0aWNsZSBuYW1lIGluIHN1bW1hcnkgZm9yIEcxMCBkZWxldGlvbnNcblx0XHRcdFx0XHRcdFx0XHRlZGl0c3VtbWFyeSArPSBg6aG16Z2iW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ+W/q+mAn+WIoOmZpOaPkOWQjSc7XG5cdFx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KG5vdGlmeXRleHQpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoZWRpdHN1bW1hcnkpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5hZGRUb0xvZyhwYXJhbXMsIGluaXRpYWxDb250cmliKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGNvbnN0IHRoaXNwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShNb3JlYml0cy5wYWdlTmFtZU5vcm0pO1xuXHRcdFx0XHRcdHRoaXNwYWdlLmxvb2t1cENyZWF0aW9uKGNhbGxiYWNrKTtcblx0XHRcdFx0XHQvLyBvciwgaWYgbm90IG5vdGlmeWluZywgYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2cgd2l0aG91dCB0aGUgaW5pdGlhbCBjb250cmlidXRvcidzIG5hbWVcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy51c2VyLmFkZFRvTG9nKHBhcmFtcywgbnVsbCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQvLyBub3RlOiB0aGlzIGNvZGUgaXMgYWxzbyBpbnZva2VkIGZyb20gdHdpbmtsZWltYWdlXG5cdFx0XHQvLyB0aGUgcGFyYW1zIHVzZWQgYXJlOlxuXHRcdFx0Ly8gICBmb3IgQ1NEOiBwYXJhbXMudmFsdWVzLCBwYXJhbXMubm9ybWFsaXplZHMgIChub3RlOiBub3JtYWxpemVkcyBpcyBhbiBhcnJheSlcblx0XHRcdC8vICAgZm9yIERJOiBwYXJhbXMuZnJvbURJID0gdHJ1ZSwgcGFyYW1zLnRlbXBsYXRlbmFtZSwgcGFyYW1zLm5vcm1hbGl6ZWQgIChub3RlOiBub3JtYWxpemVkIGlzIGEgc3RyaW5nKVxuXHRcdFx0YWRkVG9Mb2c6IChwYXJhbXMsIGluaXRpYWxDb250cmliKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHVzbCA9IG5ldyBNb3JlYml0cy51c2Vyc3BhY2VMb2dnZXIoVHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlMb2dQYWdlTmFtZScpKTtcblx0XHRcdFx0dXNsLmluaXRpYWxUZXh0ID0gYOi/meaYr+ivpeeUqOaIt+S9v+eUqFtbSDpUV3xUd2lua2xlXV3nmoTpgJ/liKDmqKHlnZflgZrlh7rnmoRbW0xJQjpDU0R85b+r6YCf5Yig6ZmkXV3mj5DlkI3liJfooajjgIJcXG5cXG7oi6XmgqjkuI3lho3mg7Pkv53nlZnmraTml6Xlv5fvvIzor7flnKhbWyR7VHdpbmtsZS5nZXRQcmVmKFxuXHRcdFx0XHRcdCdjb25maWdQYWdlJ1xuXHRcdFx0XHQpfXzlj4LmlbDorr7nva5dXeS4reWFs+aOie+8jOW5tuS9v+eUqFtbTElCOkNTRCNPMXxDU0QgTzFdXeaPkOS6pOW/q+mAn+WIoOmZpOOAgiR7XG5cdFx0XHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgPyAnXFxuXFxu5q2k5pel5b+X5bm25LiN6K6w5b2V55SoVHdpbmtsZeebtOaOpeaJp+ihjOeahOWIoOmZpOOAgicgOiAnJ1xuXHRcdFx0XHR9YDtcblx0XHRcdFx0bGV0IGFwcGVuZFRleHQgPSBgIyBbWzoke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXe+8mmA7XG5cdFx0XHRcdGlmIChwYXJhbXMuZnJvbURJKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSBg5Zu+54mIW1tMSUI6Q1NEIyR7cGFyYW1zLm5vcm1hbGl6ZWQudG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWQudG9VcHBlckNhc2UoKX1dXe+8iHt7dGx8JHtcblx0XHRcdFx0XHRcdHBhcmFtcy50ZW1wbGF0ZW5hbWVcblx0XHRcdFx0XHR9fX3vvIlgO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSAn5aSa5Liq55CG55Sx77yIJztcblx0XHRcdFx0XHRmb3IgKGNvbnN0IG5vcm0gb2YgcGFyYW1zLm5vcm1hbGl6ZWRzKSB7XG5cdFx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGBbW0xJQjpDU0QjJHtub3JtLnRvVXBwZXJDYXNlKCl9fCR7bm9ybS50b1VwcGVyQ2FzZSgpfV1d44CBYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCA9IGFwcGVuZFRleHQuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYXBwZW5kVGV4dC5sZW5ndGggLSAxKSk7IC8vIHJlbW92ZSB0cmFpbGluZyBjb21tYVxuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSAn6Ieq5a6a5LmJ55CG55SxJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGBbW0xJQjpDU0QjJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWRzWzBdLnRvVXBwZXJDYXNlKCl9XV1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMucmVxdWVzdHNhbHQpIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IHdpbmRvdy53Z1VMUygn77yb6K+35rGC55m957q45L+d5oqkJywgJ++8m+iri+axgueZvee0meS/neittycpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChpbml0aWFsQ29udHJpYikge1xuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gYO+8m+mAmuefpXt7dXNlcnwke2luaXRpYWxDb250cmlifX19YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcHBlbmRUZXh0ICs9ICcgfn4nLmNvbmNhdCgnficsICd+flxcbicpO1xuXHRcdFx0XHR1c2wuY2hhbmdlVGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdFx0dXNsLmxvZyhcblx0XHRcdFx0XHRhcHBlbmRUZXh0LFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6K6w5b2V5a+5W1snLCAn6KiY6YyE5bCNW1snKSArXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeeahOW/q+mAn+WIoOmZpOaPkOWQjScsICddXeeahOW/q+mAn+WIqumZpOaPkOWQjScpXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdH07XG5cdC8vIHZhbGlkYXRlIHN1Ymdyb3VwcyBpbiB0aGUgZm9ybSBwYXNzZWQgaW50byB0aGUgc3BlZWR5IGRlbGV0aW9uIHRhZ1xuXHRUd2lua2xlLnNwZWVkeS5nZXRQYXJhbWV0ZXJzID0gKGZvcm0sIHZhbHVlcykgPT4ge1xuXHRcdGxldCBwYXJhbWV0ZXJzID0gW107XG5cdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRQYXJhbXMgPSBbXTtcblx0XHRcdGxldCByZWRpbWFnZTtcblx0XHRcdHN3aXRjaCAodmFsdWUpIHtcblx0XHRcdFx0Y2FzZSAncmVhc29uJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLnJlYXNvbl8xJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IGRicmF0aW9uYWxlID0gZm9ybVsnY3NkLnJlYXNvbl8xJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIWRicmF0aW9uYWxlIHx8ICFkYnJhdGlvbmFsZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfoh6rlrprkuYnnkIbnlLHvvJror7fmjIflrprnkIbnlLHjgIInLCAn6Ieq6KiC55CG55Sx77ya6KuL5oyH5a6a55CG55Sx44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zWycxJ10gPSBkYnJhdGlvbmFsZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2EyJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmEyX3BhZ2VuYW1lJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IG90aGVycGFnZSA9IGZvcm1bJ2NzZC5hMl9wYWdlbmFtZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFvdGhlcnBhZ2UgfHwgIW90aGVycGFnZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCdDU0QgQTLvvJror7fmj5DkvpvnjrDmnInmnaHnm67nmoTlkI3np7DjgIInLCAnQ1NEIEEy77ya6KuL5o+Q5L6b54++5pyJ5qKd55uu55qE5ZCN56ix44CCJyksXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zLnBhZ2VuYW1lID0gb3RoZXJwYWdlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZzQnOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QuZzRfcGFnZW5hbWUnXSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGFnZW5hbWUgPSBmb3JtWydjc2QuZzRfcGFnZW5hbWUnXS52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICghcGFnZW5hbWUgfHwgIXBhZ2VuYW1lLnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ0NTRCBHNO+8muivt+aPkOS+m+mhtemdouWQjeensOOAgicsICdDU0QgRzTvvJroq4vmj5DkvpvpoIHpnaLlkI3nqLHjgIInKSwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1cnJlbnRQYXJhbXMucGFnZW5hbWUgPSBwYWdlbmFtZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2YyJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmYyX2ZpbGVuYW1lJ10pIHtcblx0XHRcdFx0XHRcdHJlZGltYWdlID0gZm9ybVsnY3NkLmYyX2ZpbGVuYW1lJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIXJlZGltYWdlIHx8ICFyZWRpbWFnZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCdDU0QgRjLvvJror7fmj5Dkvpvlj6bkuIDmlofku7bnmoTlkI3np7DjgIInLCAnQ1NEIEYy77ya6KuL5o+Q5L6b5Y+m5LiA5qqU5qGI55qE5ZCN56ix44CCJyksXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zLmZpbGVuYW1lID0gcmVkaW1hZ2UucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OmAsICdpJyksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncjEnOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucjFfdHlwZSddKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZWRpcnR5cGUgPSBmb3JtWydjc2QucjFfdHlwZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFyZWRpcnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgUjHvvJror7fpgInmi6npgILnlKjnsbvlnovjgIInLCAnQ1NEIFIx77ya6KuL6YG45pOH6YGp55So6aGe5Yil44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zWycxJ10gPSByZWRpcnR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdyMic6XG5cdFx0XHRcdFx0aWYgKGZvcm1bJ2NzZC5yMl90eXBlJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlZGlydHlwZSA9IGZvcm1bJ2NzZC5yMl90eXBlJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIXJlZGlydHlwZSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ0NTRCBSMu+8muivt+mAieaLqemAgueUqOexu+Wei+OAgicsICdDU0QgUjLvvJroq4vpgbjmk4fpgannlKjpoZ7liKXjgIInKSwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1cnJlbnRQYXJhbXNbJzEnXSA9IHJlZGlydHlwZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVuZ3RoXSA9IGN1cnJlbnRQYXJhbXM7XG5cdFx0fVxuXHRcdHJldHVybiBwYXJhbWV0ZXJzO1xuXHR9O1xuXHQvLyBGdW5jdGlvbiBmb3IgcHJvY2Vzc2luZyB0YWxrIHBhZ2Ugbm90aWZpY2F0aW9uIHRlbXBsYXRlIHBhcmFtZXRlcnNcblx0VHdpbmtsZS5zcGVlZHkuZ2V0VXNlclRhbGtQYXJhbWV0ZXJzID0gKG5vcm1hbGl6ZWQpID0+IHtcblx0XHRjb25zdCB1dHBhcmFtcyA9IFtdO1xuXHRcdHN3aXRjaCAobm9ybWFsaXplZCkge1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiB1dHBhcmFtcztcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkucmVzb2x2ZUNzZFZhbHVlcyA9IChlKSA9PiB7XG5cdFx0Y29uc3QgdmFsdWVzID0gKGUudGFyZ2V0LmZvcm0gPz8gZS50YXJnZXQpLmdldENoZWNrZWQoJ2NzZCcpO1xuXHRcdGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+mAieaLqeS4gOS4queQhuaNru+8gScsICfoq4vpgbjmk4fkuIDlgIvnkIbmk5rvvIEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGVzcGVlZHknLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlcztcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZXZhbHVhdGVTeXNvcCA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0LmZvcm0gPz8gZS50YXJnZXQ7XG5cdFx0aWYgKGUudGFyZ2V0LnR5cGUgPT09ICdjaGVja2JveCcgfHwgZS50YXJnZXQudHlwZSA9PT0gJ3RleHQnIHx8IGUudGFyZ2V0LnR5cGUgPT09ICdzZWxlY3QnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHt0YWdfb25seX0gPSBmb3JtO1xuXHRcdGlmICh0YWdfb25seSAmJiB0YWdfb25seS5jaGVja2VkKSB7XG5cdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVVzZXIoZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlcyA9IFR3aW5rbGUuc3BlZWR5LnJlc29sdmVDc2RWYWx1ZXMoZSk7XG5cdFx0aWYgKCF2YWx1ZXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgbm9ybWFsaXplZHMgPSB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuXHRcdFx0cmV0dXJuIFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2hbdmFsdWVdO1xuXHRcdH0pO1xuXHRcdC8vIGFuYWx5c2UgZWFjaCBjcml0ZXJpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gd2F0Y2ggdGhlIHBhZ2UsIHByb21wdCBmb3Igc3VtbWFyeSwgb3Igb3BlbiB1c2VyIHRhbGsgcGFnZVxuXHRcdGxldCB3YXRjaFBhZ2U7XG5cdFx0bGV0IHByb21wdEZvclN1bW1hcnk7XG5cdFx0Zm9yIChjb25zdCBub3JtIG9mIG5vcm1hbGl6ZWRzKSB7XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFNwZWVkeVBhZ2VzJykuaW5jbHVkZXMobm9ybSkpIHtcblx0XHRcdFx0d2F0Y2hQYWdlID0gVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFNwZWVkeUV4cGlyeScpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZigncHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5JykuaW5jbHVkZXMobm9ybSkpIHtcblx0XHRcdFx0cHJvbXB0Rm9yU3VtbWFyeSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdHZhbHVlcyxcblx0XHRcdG5vcm1hbGl6ZWRzLFxuXHRcdFx0d2F0Y2g6IHdhdGNoUGFnZSxcblx0XHRcdGRlbGV0ZVRhbGtQYWdlOiBmb3JtLnRhbGtwYWdlICYmIGZvcm0udGFsa3BhZ2UuY2hlY2tlZCxcblx0XHRcdGRlbGV0ZVJlZGlyZWN0czogZm9ybS5yZWRpcmVjdHMuY2hlY2tlZCxcblx0XHRcdG9wZW5Vc2VyVGFsazogZm9ybS5vcGVudXNlcnRhbGsuY2hlY2tlZCxcblx0XHRcdHByb21wdEZvclN1bW1hcnksXG5cdFx0XHR0ZW1wbGF0ZVBhcmFtczogVHdpbmtsZS5zcGVlZHkuZ2V0UGFyYW1ldGVycyhmb3JtLCB2YWx1ZXMpLFxuXHRcdH07XG5cdFx0aWYgKCFwYXJhbXMudGVtcGxhdGVQYXJhbXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AubWFpbihwYXJhbXMpO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVVzZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IGZvcm0gPSBlLnRhcmdldC5mb3JtID8/IGUudGFyZ2V0O1xuXHRcdGlmIChlLnRhcmdldC50eXBlID09PSAnY2hlY2tib3gnIHx8IGUudGFyZ2V0LnR5cGUgPT09ICd0ZXh0JyB8fCBlLnRhcmdldC50eXBlID09PSAnc2VsZWN0Jykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB2YWx1ZXMgPSBUd2lua2xlLnNwZWVkeS5yZXNvbHZlQ3NkVmFsdWVzKGUpO1xuXHRcdGlmICghdmFsdWVzKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8vIGNvbnN0IG11bHRpcGxlID0gZm9ybS5tdWx0aXBsZS5jaGVja2VkO1xuXHRcdGNvbnN0IG5vcm1hbGl6ZWRzID0gW107XG5cdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcblx0XHRcdGNvbnN0IG5vcm0gPSBUd2lua2xlLnNwZWVkeS5ub3JtYWxpemVIYXNoW3ZhbHVlXTtcblx0XHRcdG5vcm1hbGl6ZWRzW25vcm1hbGl6ZWRzLmxlbmd0aF0gPSBub3JtO1xuXHRcdH1cblx0XHQvLyBhbmFseXNlIGVhY2ggY3JpdGVyaW9uIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHdhdGNoIHRoZSBwYWdlL25vdGlmeSB0aGUgY3JlYXRvclxuXHRcdGxldCB3YXRjaFBhZ2UgPSBmYWxzZTtcblx0XHRmb3IgKGNvbnN0IG5vcm0gb2Ygbm9ybWFsaXplZHMpIHtcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5UGFnZXMnKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHR3YXRjaFBhZ2UgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5RXhwaXJ5Jyk7XG5cdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBub3RpZnl1c2VyID0gZmFsc2U7XG5cdFx0aWYgKGZvcm0ubm90aWZ5LmNoZWNrZWQpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdG5vdGlmeXVzZXIgPSB0cnVlO1xuXHRcdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGNzZGxvZyA9IGZhbHNlO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2xvZ1NwZWVkeU5vbWluYXRpb25zJykpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdGNzZGxvZyA9IHRydWU7XG5cdFx0XHRcdFx0Y29udGludWU7IC8vIGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR2YWx1ZXMsXG5cdFx0XHRub3JtYWxpemVkcyxcblx0XHRcdHdhdGNoOiB3YXRjaFBhZ2UsXG5cdFx0XHR1c2VydGFsazogbm90aWZ5dXNlcixcblx0XHRcdGxvZ25vbWluYXRpb246IGNzZGxvZyxcblx0XHRcdGJsYW5rOiBmb3JtLmJsYW5rLmNoZWNrZWQsXG5cdFx0XHRyZXF1ZXN0c2FsdDogZm9ybS5zYWx0aW5nLmNoZWNrZWQsXG5cdFx0XHR0ZW1wbGF0ZVBhcmFtczogVHdpbmtsZS5zcGVlZHkuZ2V0UGFyYW1ldGVycyhmb3JtLCB2YWx1ZXMpLFxuXHRcdH07XG5cdFx0aWYgKCFwYXJhbXMudGVtcGxhdGVQYXJhbXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfmoIforrDpobXpnaInLCAn5qiZ6KiY6aCB6Z2iJylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5tYWluKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5zcGVlZHksICdzcGVlZHknKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlY29weXZpby5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjb3B5dmlvKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWNvcHl2aW8uanM6IENvcHl2aW8gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjpcdFRhYiAoXCJDb3B5dmlvXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcsIG5vbi1zcGVjaWFsIHBhZ2VzLCBleGNlcHQgZm9yIGZpbGUgcGFnZXNcblx0ICogd2l0aCBubyBsb2NhbCBmaWxlIHdoaWNoIGFyZSBub3QgcmVkaXJlY3RzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiAgVHdpbmtsZUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS5jb3B5dmlvID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHQvLyAqIG5vbi1sb2NhbCBmaWxlcywgd2hldGhlciB0aGVyZSBpcyBhIGxvY2FsIHBhZ2Ugb3Igbm90ICh1bm5lZWRlZCBsb2NhbCBwYWdlcyBvZiBub24tbG9jYWwgZmlsZXMgYXJlIGVsaWdpYmxlIGZvciBDU0QgRjIpXG5cdFx0Ly8gKiBmaWxlIHBhZ2VzIHdpdGhvdXQgYWN0dWFsIGZpbGVzICh0aGVzZSBhcmUgZWxpZ2libGUgZm9yIENTRCBHOClcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHRcdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgfHxcblx0XHRcdFx0XHQoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpICYmICFNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+S+teadgycsICfkvrXmrIonKSxcblx0XHRcdCd0dy1jb3B5dmlvJyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpLFxuXHRcdFx0Jydcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDM1MCk7XG5cdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5L615p2D6K6+572uJywgJ+S+teasiuioreWumicpLCAnSDpUVy9QUkVGI2NvcHl2aW8nKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjY29weXZpbycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuY29weXZpby5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S+teadg+adpea6kO+8micsICfkvrXmrIrkvobmupDvvJonKSxcblx0XHRcdG5hbWU6ICdzb3VyY2UnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J0NTRCBHNDog5pu+57uP5qC55o2u5L615p2D5a6h5qC45Yig6Zmk5ZCO5Y+I6YeN5paw5Yib5bu655qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdCdDU0QgRzQ6IOabvue2k+agueaTmuS+teasiuWvqeaguOWIqumZpOW+jOWPiOmHjeaWsOW7uueri+eahOWFp+WuuSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZzQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnNCcsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflkIzml7bku6VHNOWHhuWImeaPkOaKpeW/q+mAn+WIoOmZpCcsICflkIzmmYLku6VHNOa6luWJh+aPkOWgseW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdnNF9wYWdlbmFtZScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJjeasoeWIoOmZpOeahOmhtemdouWQjeensCcsICfliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpgInloavvvIzoi6XliY3mrKHliKDpmaTnmoTpobXpnaLlkI3np7DkuI3lkIzvvIzor7fmj5DkvpsnLFxuXHRcdFx0XHRcdFx0XHRcdCfpgbjloavvvIzoi6XliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLHkuI3lkIzvvIzoq4vmj5DkvpsnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIUnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLliJvlu7rogIXorqjorrrpobXkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouW7uueri+iAheiojuirlumggeS4iuaUvue9ruS4gOmAmuefpeaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzID0ge1xuXHRcdHRyeVRhZ2dpbmc6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyDlhYjlsJ3or5XmoIforrDpobXpnaLvvIzoi6Xlj5HnjrDlt7Lnu4/moIforrDliJnlgZzmraLmj5DmiqVcblx0XHRcdGNvbnN0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRpZiAodGV4dC5pbmNsdWRlcygne3tDb3B5dmlvfCcpKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6aG16Z2i5bey57uP5qCH6K6w5L615p2D77yM6K+35Lq65bel56Gu6K6k5piv5ZCm5bey57uP5o+Q5oql44CCJyxcblx0XHRcdFx0XHRcdCfpoIHpnaLlt7LntpPmqJnoqJjkvrXmrIrvvIzoq4vkurrlt6Xnorroqo3mmK/lkKblt7LntpPmj5DloLHjgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy50YWdnaW5nQXJ0aWNsZShwYWdlb2JqKTtcblx0XHRcdFx0Ly8gQ29udHJpYnV0b3Igc3BlY2lmaWMgZWRpdHNcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCkpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9va3VwQ3JlYXRpb24oVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy5tYWluKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG1haW46IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyB0aGlzIGlzIGNvbWluZyBpbiBmcm9tIGxvb2t1cENyZWF0aW9uLi4uIVxuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cmliID0gcGFnZW9iai5nZXRDcmVhdG9yKCk7XG5cdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5L615p2D6K6w5b2V6aG5JywgJ+WKoOWFpeS+teasiuiomOmMhOmghScpXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvYWQoVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy5jb3B5dmlvTGlzdCk7XG5cdFx0XHQvLyBOb3RpZmljYXRpb24gdG8gZmlyc3QgY29udHJpYnV0b3Jcblx0XHRcdGlmIChwYXJhbXMubm90aWZ5KSB7XG5cdFx0XHRcdGNvbnN0IHVzZXJ0YWxrcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0YFVzZXIgdGFsazoke2luaXRpYWxDb250cmlifWAsXG5cdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBpbml0aWFsQ29udHJpYn3vvIlgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IG5vdGlmeXRleHQgPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYENvcHl2aW9Ob3RpY2V8JHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9fX1gKTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEFwcGVuZFRleHQobm90aWZ5dGV4dCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mAmuefpe+8mumhtemdoltbJywgJ+mAmuefpe+8mumggemdoltbJykgK1xuXHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnXV3nlpHkvLzkvrXniq/okZfkvZzmnYMnLCAnXV3nlpHkvLzkvrXniq/niYjmrIonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignY29weXZpb1dhdGNoVXNlcicpKTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLmFwcGVuZCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dGFnZ2luZ0FydGljbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgcmV2aXNpb25JZCA9XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmV2aXNpb25JZCcpIHx8IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykgfHwgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJyk7XG5cdFx0XHRsZXQgdGFnID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRgQ29weXZpby9hdXRvfHVybD0ke3BhcmFtcy5zb3VyY2Vcblx0XHRcdFx0XHQucmVwbGFjZSgvaHR0cC9nLCAnJiMxMDQ7dHRwJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXFxuKy9nLCAnXFxuJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXlxccyooW14qXSkvZ20sICcqICQxJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXlxcKiAkL20sICcnKX18T2xkUmV2aXNpb249JHtyZXZpc2lvbklkfX19YFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBvbGRjc2QgPSB0ZXh0Lm1hdGNoKC9cXHtcXHtcXHMqKGRiKC1cXHcqKT98ZHxkZWxldGUpXFxzKihcXHwoPzpcXHtcXHtbXnt9XSpcXH1cXH18W157fV0pKik/XFx9XFx9L2kpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvbGRjc2QgJiZcblx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB5L+d55WZ5ZCX77yfXFxuXFxu5b2T6aG16Z2i5ZCM5pe25L6154qv6JGX5L2c5p2D5Y+I56ym5ZCI5b+r6YCf5Yig6Zmk5qCH5YeG5pe277yM5bqU6K+l5LyY5YWI6LWw5b+r6YCf5Yig6Zmk56iL5bqP44CCXFxu5Y2V5Ye74oCc56Gu6K6k4oCd5Lul5L+d55WZ5b+r6YCf5Yig6Zmk5qih5p2/77yM6Iul5oKo6K6k5Li65b+r6YCf5Yig6Zmk55CG55Sx5LiN5ZCI77yM5Y2V5Ye74oCc5Y+W5raI4oCd5Lul56e76Zmk5b+r6YCf5Yig6Zmk5qih5p2/44CCJyxcblx0XHRcdFx0XHRcdCflnKjpoIHpnaLkuIrmib7liLDlv6vpgJ/liKrpmaTmqKHmnb/vvIzopoHkv53nlZnll47vvJ9cXG5cXG7nlbbpoIHpnaLlkIzmmYLkvrXniq/niYjmrIrlj4jnrKblkIjlv6vpgJ/liKrpmaTmqJnmupbmmYLvvIzmh4noqbLlhKrlhYjotbDlv6vpgJ/liKrpmaTnqIvluo/jgIJcXG7pu57mk4rjgIznorroqo3jgI3ku6Xkv53nlZnlv6vpgJ/liKrpmaTmqKHmnb/vvIzoi6Xmgqjoqo3ngrrlv6vpgJ/liKrpmaTnkIbnlLHkuI3lkIjvvIzpu57mk4rjgIzlj5bmtojjgI3ku6Xnp7vpmaTlv6vpgJ/liKrpmaTmqKHmnb/jgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGFnID0gYCR7b2xkY3NkWzBdfVxcbiR7dGFnfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLmc0KSB7XG5cdFx0XHRcdGxldCBzcGVlZHlUYWcgPSAne3tkZWxldGUnO1xuXHRcdFx0XHRzcGVlZHlUYWcgKz0gJ3xnNCc7XG5cdFx0XHRcdGlmIChwYXJhbXMuZzRfcGFnZW5hbWUpIHtcblx0XHRcdFx0XHRzcGVlZHlUYWcgKz0gYHwke3BhcmFtcy5nNF9wYWdlbmFtZX18YzE9W1tTcGVjaWFsOlVuZGVsZXRlLyR7cGFyYW1zLmc0X3BhZ2VuYW1lfV1dYDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzcGVlZHlUYWcgKz0gYHxjMT1bW1NwZWNpYWw6VW5kZWxldGUvJHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9XV1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNwZWVkeVRhZyArPSAnfX0nO1xuXHRcdFx0XHR0YWcgPSBgJHtzcGVlZHlUYWd9XFxuJHt0YWd9YDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGFnKTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfmraTpobXpnaLnlpHkvLzkvrXniq/okZfkvZzmnYMnLCAn5q2k6aCB6Z2i55aR5Ly85L6154qv54mI5qyKJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ2NvcHl2aW9XYXRjaFBhZ2UnKSk7XG5cdFx0XHQvLyBwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignbWFya0NvcHl2aW9QYWdlc0FzUGF0cm9sbGVkJykpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNvcHl2aW9MaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGxldCBvdXRwdXQgPSAnJztcblx0XHRcdGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0Y29uc3QgZGF0ZUhlYWRlclJlZ2V4ID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0YF49PStcXFxccyoke2RhdGUuZ2V0VVRDTW9udGgoKSArIDF95pyIJHtkYXRlLmdldFVUQ0RhdGUoKX3ml6VcXFxccyo9PStgLFxuXHRcdFx0XHQnbWcnXG5cdFx0XHQpO1xuXHRcdFx0aWYgKCFkYXRlSGVhZGVyUmVnZXguZXhlYyh0ZXh0KSkge1xuXHRcdFx0XHRvdXRwdXQgPSBgXFxuXFxuPT0ke2RhdGUuZ2V0VVRDTW9udGgoKSArIDF95pyIJHtkYXRlLmdldFVUQ0RhdGUoKX3ml6U9PWA7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQgKz0gJ1xcbnt7Jy5jb25jYXQoJ3N1YnN0OicsIGBDb3B5dmlvVkZEUmVjb3JkfCR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfX19YCk7XG5cdFx0XHRwYWdlb2JqLnNldEFwcGVuZFRleHQob3V0cHV0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9XV1gKTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLmFwcGVuZCgpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuY29weXZpby5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShlLnRhcmdldCk7XG5cdFx0aWYgKCFwYXJhbXMuc291cmNlLnRyaW0oKSkge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+35oyH5a6a5L615p2D5p2l5rqQJywgJ+iri+aMh+WumuS+teasiuS+hua6kCcpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWNvcHl2aW8nLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdHBhcmFtcy5sb2dwYWdlID0gJ0xJQl90YWxrOuS+teadg+aPkOaKpSc7XG5cdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0Ly8gVXBkYXRpbmcgZGF0YSBmb3IgdGhlIGFjdGlvbiBjb21wbGV0ZWQgZXZlbnRcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHQn5o+Q5oql5a6M5oiQ77yM5bCG5Zyo5Yeg56eS5YaF5Yi35paw6aG16Z2iJyxcblx0XHRcdCfmj5DloLHlrozmiJDvvIzlsIflnKjlub7np5Llhafph43mlrDmlbTnkIbpoIHpnaInXG5cdFx0KTtcblx0XHQvLyBUYWdnaW5nIGZpbGVcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXkvrXmnYPmqKHmnb/liLDpobXpnaInLCAn5Yqg5YWl5L615qyK5qih5p2/5Yiw6aCB6Z2iJylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzLnRyeVRhZ2dpbmcpO1xuXHRcdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCgpO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmNvcHl2aW8sICdjb3B5dmlvJyk7XG59KSgpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXhmZC5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGV4ZmQoKSB7XG5cdC8qKlxuXHQgKiB0d2lua2xleGZkLmpzOiBYRkQgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIlhGRFwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nLCBub24tc3BlY2lhbCBwYWdlcyxcblx0ICogZXhjZXB0IGZvciBmaWxlIHBhZ2VzIHdpdGggbm8gbG9jYWwgZmlsZVxuXHQgKiB3aGljaCBhcmUgbm90IHJlZGlyZWN0c1xuXHQgKi9cblx0VHdpbmtsZS54ZmQgPSAoKSA9PiB7XG5cdFx0Ly8gRGlzYWJsZSBvbjpcblx0XHQvLyAqIHNwZWNpYWwgcGFnZXNcblx0XHQvLyAqIG5vbi1leGlzdGVudCBwYWdlc1xuXHRcdC8vICogbm9uLWxvY2FsIGZpbGVzLCB3aGV0aGVyIHRoZXJlIGlzIGEgbG9jYWwgcGFnZSBvciBub3QgKHVubmVlZGVkIGxvY2FsIHBhZ2VzIG9mIGZpbGVzIG9uIFNoYXJlIGFyZSBlbGlnaWJsZSBmb3IgQ1NEIEYyKVxuXHRcdC8vICogZmlsZSBwYWdlcyB3aXRob3V0IGFjdHVhbCBmaWxlc1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPCAwIHx8XG5cdFx0XHQhbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSB8fFxuXHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYgJiZcblx0XHRcdFx0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1zaGFyZWR1cGxvYWQnKSB8fFxuXHRcdFx0XHRcdCghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWltYWdlcGFnZS1zZWN0aW9uLWZpbGVoaXN0b3J5JykgJiYgIU1vcmViaXRzLmlzUGFnZVJlZGlyZWN0KCkpKSlcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfmj5DliKAnLCAn5o+Q5YiqJyksXG5cdFx0XHQndHcteGZkJyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5Lqk5Yig6Zmk6K6o6K66JywgJ+aPkOS6pOWIqumZpOiojuirlicpXG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IG51bGw7XG5cdC8vIGVycm9yIGNhbGxiYWNrIG9uIE1vcmViaXRzLnN0YXR1cy5vYmplY3Rcblx0VHdpbmtsZS54ZmQucHJpbnRSYXRpb25hbGUgPSAoKSA9PiB7XG5cdFx0aWYgKFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUpIHtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0KFxuXHRcdFx0XHRUd2lua2xlLnhmZC5jdXJyZW50UmF0aW9uYWxlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aCqOeahOeQhueUseW3suWcqOS4i+aWueaPkOS+m++8jOiLpeaCqOaDs+mHjeaWsOaPkOS6pO+8jOivt+WwhuWFtuWkjeWItuWIsOS4gOaWsOeql+WPo+S4re+8micsXG5cdFx0XHRcdFx0J+aCqOeahOeQhueUseW3suWcqOS4i+aWueaPkOS+m++8jOiLpeaCqOaDs+mHjeaWsOaPkOS6pO+8jOiri+Wwh+WFtuikh+ijveWIsOS4gOaWsOimlueql+S4re+8midcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHRcdC8vIG9ubHkgbmVlZCB0byBwcmludCB0aGUgcmF0aW9uYWxlIG9uY2Vcblx0XHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS54ZmQuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDM1MCk7XG5cdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5o+Q5Lqk5a2Y5bqf6K6o6K66JywgJ+aPkOS6pOWtmOW7ouiojuirlicpKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5o+Q5Yig6K6+572uJywgJ+aPkOWIquioreWumicpLCAnSDpUVy9QUkVGI3hmZCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyN4ZmQnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnhmZC5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgY2F0ZWdvcmllcyA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aPkOS6pOexu+Wei++8micsICfmj5DkuqTpoZ7liKXvvJonKSxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnhmZC5jYWxsYmFjay5jaGFuZ2VfY2F0ZWdvcnksXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLlrZjlup/orqjorronLCAn6aCB6Z2i5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRzZWxlY3RlZDogbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCxcblx0XHRcdHZhbHVlOiAnYWZkJyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7tuWtmOW6n+iuqOiuuicsICfmqpTmoYjlrZjlu6LoqI7oq5YnKSxcblx0XHRcdHNlbGVjdGVkOiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2LFxuXHRcdFx0dmFsdWU6ICdmZmQnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpoLlj6/og73vvIzpgJrnn6XpobXpnaLliJvlu7rogIUnLCAn5aaC5Y+v6IO977yM6YCa55+l6aCB6Z2i5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLliJvlu7rogIXorqjorrrpobXkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouW7uueri+iAheiojuirlumggeS4iuaUvue9ruS4gOmAmuefpeaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJ+W3peS9nOWMuicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBXZSBtdXN0IGluaXQgdGhlIGNvbnRyb2xzXG5cdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0ZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSk7XG5cdFx0cmVzdWx0LmNhdGVnb3J5LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0fTtcblx0VHdpbmtsZS54ZmQuY2FsbGJhY2suY2hhbmdlX2NhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCB7dmFsdWV9ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnd29ya19hcmVhJyk7XG5cdFx0bGV0IHdvcmtfYXJlYSA9IG51bGw7XG5cdFx0Y29uc3Qgb2xkcmVhc29udGV4dGJveCA9IGZvcm0ucXVlcnlTZWxlY3RvcigndGV4dGFyZWEnKTtcblx0XHRsZXQgb2xkcmVhc29uID0gb2xkcmVhc29udGV4dGJveCA/IG9sZHJlYXNvbnRleHRib3gudmFsdWUgOiAnJztcblx0XHRjb25zdCBhcHBlbmRSZWFzb25Cb3ggPSAoeGZkX2NhdCkgPT4ge1xuXHRcdFx0c3dpdGNoICh4ZmRfY2F0KSB7XG5cdFx0XHRcdGNhc2UgJ2Z3ZGNzZCc6XG5cdFx0XHRcdFx0b2xkcmVhc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkZWxldGUtcmVhc29uJykudGV4dENvbnRlbnQpLnJlcGxhY2UoXG5cdFx0XHRcdFx0XHQvXFwrL2csXG5cdFx0XHRcdFx0XHQnICdcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdmYW1lJzpcblx0XHRcdFx0XHRvbGRyZWFzb24gPSBUd2lua2xlLmdldFByZWYoJ2FmZEZhbWVEZWZhdWx0UmVhc29uJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3N1YnN0dWInOlxuXHRcdFx0XHRcdG9sZHJlYXNvbiA9IFR3aW5rbGUuZ2V0UHJlZignYWZkU3Vic3R1YkRlZmF1bHRSZWFzb24nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRuYW1lOiAneGZkcmVhc29uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5o+Q5Yig55CG55Sx77yaJywgJ+aPkOWIqueQhueUse+8micpLFxuXHRcdFx0XHR2YWx1ZTogb2xkcmVhc29uLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwhuiHquWKqOS4uuaCqOWKoOWFpeetvuWQjeOAguiLpeaCqOS9v+eUqOaJuemHj+aPkOWIoOWKn+iDve+8jOWtmOW6n+iuqOiuuumhteWPquS8muS9v+eUqOesrOS4gOasoeaPkOS6pOeahOeQhueUse+8jOS9huS5i+WQjuaCqOS7jemcgOaPkOS+m+S7peeUqOS6juWIoOmZpOmAmuWRiuaooeadv+eahOWPguaVsOOAgicsXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwh+iHquWLleeCuuaCqOWKoOWFpeewveWQjeOAguiLpeaCqOS9v+eUqOaJueasoeaPkOWIquWKn+iDve+8jOWtmOW7ouiojuirlumggeWPquacg+S9v+eUqOesrOS4gOasoeaPkOS6pOeahOeQhueUse+8jOS9huS5i+W+jOaCqOS7jemcgOaPkOS+m+S7peeUqOaWvOWIqumZpOmAmuWRiuaooeadv+eahOWPg+aVuOOAgidcblx0XHRcdFx0KSxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5q2k5YC85Lqm5pi+56S65LqO6aG16Z2i55qE5Yig6Zmk6YCa5ZGK5qih5p2/5YaF77yM5pWF5Yqh5b+F5o+Q5L6b5q2k5YC877yM6YG/5YWN5L2/55So4oCc5ZCM5LiK4oCd562J55So6K+t44CCJyxcblx0XHRcdFx0XHQn5q2k5YC85Lqm6aGv56S65pa86aCB6Z2i55qE5Yiq6Zmk6YCa5ZGK5qih5p2/5YWn77yM5pWF5YuZ5b+F5o+Q5L6b5q2k5YC877yM6YG/5YWN5L2/55So44CM5ZCM5LiK44CN562J55So6Kqe44CCJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0XHQvLyBUT0RPIHBvc3NpYmxlIGZ1dHVyZSBcInByZXZpZXdcIiBsaW5rIGhlcmVcblx0XHR9O1xuXG5cdFx0c3dpdGNoICh2YWx1ZSkge1xuXHRcdFx0Y2FzZSAnYWZkJzoge1xuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5a2Y5bqf6K6o6K66JywgJ+mggemdouWtmOW7ouiojuirlicpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L2/55SoJmx0O25vaW5jbHVkZSZndDvljIXoo7nmqKHmnb8nLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ25vaW5jbHVkZScsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2luY2x1ZGUnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOlxuXHRcdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDEwICYmXG5cdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgIT09ICdTY3JpYnVudG8nLFxuXHRcdFx0XHRcdFx0XHQvLyBUZW1wbGF0ZSBuYW1lc3BhY2Vcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfkvb/lhbbkuI3kvJrlnKjooqvljIXlkKvml7blh7rnjrDjgIInLCAn5L2/5YW25LiN5pyD5Zyo6KKr5YyF5ZCr5pmC5Ye654++44CCJyksXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSA9PT0gJ1NjcmlidW50bycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBhZmRfY2F0ZWdvcnkgPSB3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAneGZkY2F0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nmj5DliKDnsbvlnovvvJonLCAn6YG45pOH5o+Q5Yiq6aGe5Yil77yaJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUueGZkLmNhbGxiYWNrLmNoYW5nZV9hZmRfY2F0ZWdvcnksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRsZXQgYWZkX2NhdCA9ICdkZWxldGUnO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdhZmREZWZhdWx0Q2F0ZWdvcnknKSA9PT0gJ3NhbWUnKSB7XG5cdFx0XHRcdFx0aWYgKGxvY2FsU3RvcmFnZS5Ud2lua2xlX2FmZENhdGVnb3J5ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGxvY2FsU3RvcmFnZS5Ud2lua2xlX2FmZENhdGVnb3J5ID0gJ2RlbGV0ZSc7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFmZF9jYXQgPSBsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2RlbGV0ZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhZmRfY2F0ZWdvcnkuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflkIjlubYnLCAn5ZCI5L21JyksXG5cdFx0XHRcdFx0dmFsdWU6ICdtZXJnZScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdtZXJnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdGd2RDc2RUb1hmZCcpKSB7XG5cdFx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnZndkY3NkJyxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiBhZmRfY2F0ID09PSAnZndkY3NkJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhZmRfY2F0ZWdvcnkuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmibnph4/lhbPms6jluqbmj5DliKAnLCAn5om55qyh6Zec5rOo5bqm5o+Q5YiqJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdmYW1lJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2ZhbWUnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5om56YeP5bCP5bCP5L2c5ZOB5o+Q5YigJywgJ+aJueasoeWwj+Wwj+S9nOWTgeaPkOWIqicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnc3Vic3R1YicsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdzdWJzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJuemHj+WFtuS7luaPkOWIoCcsICfmibnmrKHlhbbku5bmj5DliKonKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2JhdGNoJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2JhdGNoJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ21lcmdlaW50bycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZCI5bm25Yiw77yaJywgJ+WQiOS9teWIsO+8micpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFwcGVuZFJlYXNvbkJveChhZmRfY2F0KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRuYW1lOiAnZndkY3NkcmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazkuqTnkIbnlLHvvJonLCAn6L2J5Lqk55CG55Sx77yaJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwhuiHquWKqOS4uuaCqOWKoOWFpeetvuWQjeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5L2/55Sod2lraXRleHTvvIxUd2lua2xl5bCH6Ieq5YuV54K65oKo5Yqg5YWl57C95ZCN44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhID0gd29ya19hcmVhLnJlbmRlcigpO1xuXHRcdFx0XHRvbGRfYXJlYS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3b3JrX2FyZWEsIG9sZF9hcmVhKTtcblx0XHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRmb3JtLnhmZGNhdC5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnZmZkJzpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7tuWtmOW6n+iuqOiuuicsICfmqpTmoYjlrZjlu6LoqI7oq5YnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFwcGVuZFJlYXNvbkJveCgnZmZkJyk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+acquWumuS5iScsICfmnKrlrprnvqknKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBSZXR1cm4gdG8gY2hlY2tlZCBzdGF0ZSB3aGVuIHN3aXRjaGluZ1xuXHRcdGZvcm0ubm90aWZ5LmNoZWNrZWQgPSB0cnVlO1xuXHRcdGZvcm0ubm90aWZ5LmRpc2FibGVkID0gZmFsc2U7XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmNoYW5nZV9hZmRfY2F0ZWdvcnkgPSAoZSkgPT4ge1xuXHRcdHN3aXRjaCAoZS50YXJnZXQudmFsdWUpIHtcblx0XHRcdGNhc2UgJ21lcmdlJzpcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucGFyZW50RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmlubmVySFRNTCA9IHdpbmRvdy53Z1VMUygn5ZCI5bm25Yiw77yaJywgJ+WQiOS9teWIsO+8micpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2Z3ZGNzZCc6XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubWVyZ2VpbnRvLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmlubmVySFRNTCA9ICfmj5DkuqTkurrvvJonO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnhmZHJlYXNvbi52YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChcblx0XHRcdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZGVsZXRlLXJlYXNvbicpLnRleHRDb250ZW50XG5cdFx0XHRcdCkucmVwbGFjZSgvXFwrL2csICcgJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubWVyZ2VpbnRvLnBhcmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uZndkY3NkcmVhc29uLnBhcmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ueGZkcmVhc29uLnZhbHVlID0gVHdpbmtsZS5nZXRQcmVmKCdhZmRGYW1lRGVmYXVsdFJlYXNvbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3N1YnN0dWInOlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnhmZHJlYXNvbi52YWx1ZSA9IFR3aW5rbGUuZ2V0UHJlZignYWZkU3Vic3R1YkRlZmF1bHRSZWFzb24nKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdH1cblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdhZmREZWZhdWx0Q2F0ZWdvcnknKSA9PT0gJ3NhbWUnKSB7XG5cdFx0XHRsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeSA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzID0ge1xuXHRcdGFmZDoge1xuXHRcdFx0bWFpbjogKHRhZ2dpbmdfcGFnZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSB0YWdnaW5nX3BhZ2UuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQudGFnZ2luZ0FydGljbGUodGFnZ2luZ19wYWdlKTtcblx0XHRcdFx0Ly8gQWRkaW5nIGRpc2N1c3Npb25cblx0XHRcdFx0Y29uc3QgZGlzY3Vzc2lvbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYXJhbXMubG9ncGFnZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeiuqOiuuuWIsOW9k+aXpeWIl+ihqCcsICfliqDlhaXoqI7oq5bliLDnlbbml6XliJfooagnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRkaXNjdXNzaW9uX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdGRpc2N1c3Npb25fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0ZGlzY3Vzc2lvbl9wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFmZC50b2RheXNMaXN0KTtcblx0XHRcdFx0Ly8gTm90aWZpY2F0aW9uIHRvIGZpcnN0IGNvbnRyaWJ1dG9yXG5cdFx0XHRcdGlmIChwYXJhbXMubm90aWZ5KSB7XG5cdFx0XHRcdFx0Ly8gRGlzYWxsb3cgd2FybmluZyB5b3Vyc2VsZlxuXHRcdFx0XHRcdGlmIChwYXJhbXMuY3JlYXRvciA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBwYXJhbXMuY3JlYXRvcn3vvIlgLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOWIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICfmgqjlu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHBhcmFtcy5jcmVhdG9yID0gbnVsbDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGFsa1BhZ2VOYW1lID0gYFVzZXIgdGFsazoke3BhcmFtcy5jcmVhdG9yfWA7XG5cdFx0XHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHR0YWxrUGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IG5vdGlmeXRleHQgPSAnXFxue3snXG5cdFx0XHRcdFx0XHRcdC5jb25jYXQoJ3N1YnN0OicpXG5cdFx0XHRcdFx0XHRcdC5jb25jYXQoYEFGRE5vdGV8JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX0tLX5+YCwgJ35+Jyk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShg6YCa55+l77ya6aG16Z2iW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXeWtmOW6n+iuqOiuuuaPkOWQjWApO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2csIGlmIHRoZSB1c2VyIGhhcyBlbmFibGVkIGl0XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5sb2dub21pbmF0aW9uKSB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWRkVG9Mb2cocGFyYW1zLCBwYXJhbXMuY3JlYXRvcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIG9yLCBpZiBub3Qgbm90aWZ5aW5nLCBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZyB3aXRob3V0IHRoZSBpbml0aWFsIGNvbnRyaWJ1dG9yJ3MgbmFtZVxuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5sb2dub21pbmF0aW9uKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFkZFRvTG9nKHBhcmFtcywgbnVsbCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR0YWdnaW5nQXJ0aWNsZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0bGV0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdGxldCB0YWcgPSBge3t2ZmR8JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0UmVhc29uVGV4dChwYXJhbXMueGZkcmVhc29uKX1gO1xuXHRcdFx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0XHRcdHRhZyArPSAnfHInO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRhZyArPSAnfGRhdGU9e3snLmNvbmNhdCgnc3Vic3Q6JywgJyN0aW1lOlkvbS9kfX19fScpO1xuXHRcdFx0XHRpZiAocGFyYW1zLm5vaW5jbHVkZSkge1xuXHRcdFx0XHRcdHRhZyA9IGA8bm9pbmNsdWRlPiR7dGFnfTwvbm9pbmNsdWRlPmA7XG5cdFx0XHRcdFx0Ly8g5Y+q5pyJ6KGo5qC86ZyA6KaB5Y2V54us5Yqg5Zue6L2m77yM5YW25LuW5oOF5Ya15Yqg5Zue6L2m5Lya56C05Z2P5qih5p2/44CCXG5cdFx0XHRcdFx0aWYgKHRleHQuaW5kZXhPZigne3wnKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0dGFnICs9ICdcXG4nO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YWcgKz0gJ1xcbic7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gVGhlbiwgdGVzdCBpZiB0aGVyZSBhcmUgc3BlZWR5IGRlbGV0aW9uLXJlbGF0ZWQgdGVtcGxhdGVzIG9uIHRoZSBhcnRpY2xlLlxuXHRcdFx0XHRjb25zdCB0ZXh0Tm9TZCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHQvXFx7XFx7XFxzKihkYigtXFx3Kik/fGR8ZGVsZXRlfCg/Omhhbmd8aG9sZClbLSBdP29uKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb1NkICYmXG5cdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeenu+mZpOWXju+8nycpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dE5vU2Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGV4dE5vTm90TWFuZGFyaW4gPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooTm90TWFuZGFyaW58Tm90Y2hpbmVzZXzpnZ7kuK3mlod86Z2e54++5Luj5ryi6KqefOmdnueOsOS7o+axieivrXzpnZ7nj77ku6PmqJnmupbmvKLoqp586Z2e546w5Luj5qCH5YeG5rGJ6K+tKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb05vdE1hbmRhcmluICYmXG5cdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+WcqOmhtemdouS4iuaJvuWIsOmdnueOsOS7o+agh+WHhuaxieivreaooeadv++8jOimgeenu+mZpOWQl++8nycsXG5cdFx0XHRcdFx0XHRcdCflnKjpoIHpnaLkuIrmib7liLDpnZ7nj77ku6PmqJnmupbmvKLoqp7mqKHmnb/vvIzopoHnp7vpmaTll47vvJ8nXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dE5vTm90TWFuZGFyaW47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGV4dE5vQWZjID0gdGV4dC5yZXBsYWNlKC97e1xccypBRkMgc3VibWlzc2lvblxccypcXHxcXHMqXFx8W159XSo/fX1cXHMqL2dpLCAnJyk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9BZmMgJiZcblx0XHRcdFx0XHRjb25maXJtKHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5YiwQUZD5o+Q5Lqk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsEFGQ+aPkOS6pOaooeadv++8jOimgeenu+mZpOWXju+8nycpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dE5vQWZjO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE1hcmsgdGhlIHBhZ2UgYXMgcGF0cm9sbGVkLCBpZiB3YW50ZWRcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignbWFya1hmZFBhZ2VzQXNQYXRyb2xsZWQnKSkge1xuXHRcdFx0XHRcdHBhZ2VvYmoucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UodGV4dCk7XG5cdFx0XHRcdHRleHQgPSB5c2FyY2hpdmVzX3BhZ2UuaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXModGFnLCBUd2lua2xlLmhhdG5vdGVSZWdleCkuZ2V0VGV4dCgpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6aG16Z2i5a2Y5bqf6K6o6K6677yaW1snLCAn6aCB6Z2i5a2Y5bui6KiO6KuW77yaW1snKSArIHBhcmFtcy5sb2dwYWdlfSMke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWBcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hQYWdlJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHRcdH0sXG5cdFx0XHR0b2RheXNMaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0bGV0IHR5cGUgPSAnJztcblx0XHRcdFx0bGV0IHRvID0gJyc7XG5cdFx0XHRcdHN3aXRjaCAocGFyYW1zLnhmZGNhdCkge1xuXHRcdFx0XHRcdGNhc2UgJ2Z3ZGNzZCc6XG5cdFx0XHRcdFx0Y2FzZSAnbWVyZ2UnOlxuXHRcdFx0XHRcdFx0dG8gPSBwYXJhbXMubWVyZ2VpbnRvO1xuXHRcdFx0XHRcdC8qIEZhbGwgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0eXBlID0gcGFyYW1zLnhmZGNhdDtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCBhcHBlbmQgPSB0cnVlO1xuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICdmYW1lJzpcblx0XHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHRjYXNlICdiYXRjaCc6IHtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbW1lbnRUZXh0ID0gYDwhLS0gVHdpbmtsZTogVXNlcjoke213LmNvbmZpZy5nZXQoXG5cdFx0XHRcdFx0XHRcdCd3Z1VzZXJOYW1lJ1xuXHRcdFx0XHRcdFx0KX0g55qEICR7dHlwZX0g5o+Q5Yig5o+S5YWl54K577yM6K+35Yu/5pu05pS55oiW56e76Zmk5q2k6KGM77yM6Zmk6Z2e5LiN5YaN5LqO5q2k6aG16Z2i5o+Q5YigIC0tPmA7XG5cdFx0XHRcdFx0XHRsZXQgbmV3VGV4dCA9IGA9PT1bWzoke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXT09PWA7XG5cdFx0XHRcdFx0XHRpZiAodHlwZSA9PT0gJ2ZhbWUnKSB7XG5cdFx0XHRcdFx0XHRcdG5ld1RleHQgKz0gYFxcbnt7RmluZHNvdXJjZXN8JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHRleHQuaW5jbHVkZXMoY29tbWVudFRleHQpKSB7XG5cdFx0XHRcdFx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoY29tbWVudFRleHQsIGAke25ld1RleHR9XFxuXFxuJHtjb21tZW50VGV4dH1gKTtcblx0XHRcdFx0XHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdFx0XHRcdFx0YXBwZW5kID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzYWZlc3Vic3QgPSAnc2FmZXN1YnN0Jztcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXBwZW5kVGV4dCA9IGBcXG57eyR7c2FmZXN1YnN0fSR7YDpTYWZlQWZkSGVhZH19XFxuJHtcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRmYW1lOiAnPT0gMzDlpKnlkI7ku43mjILmnIl7e3RsfG5vdGFiaWxpdHl9feaooeadv+eahOadoeebriA9PVxcbjxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbGVyO1wiPu+8iOW3suaMgltbVGVtcGxhdGU6bm90YWJpbGl0eXzkuI3nrKbmlLblvZXmoIflh4bmqKHmnb9dXTMw5aSp77yJPC9zcGFuPicsXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJzdHViOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPT0gMzDlpKnlkI7ku43mjILmnIl7e3RsfHN1YnN0dWJ9feaooeadv+eahOadoeebriA9PVxcbjxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbGVyO1wiPu+8iOW3suaMgltbVGVtcGxhdGU6c3Vic3R1YnzlsI/lsI/mnaHnm67mqKHmnb9dXTMw5aSp77yJPC9zcGFuPicsXG5cdFx0XHRcdFx0XHRcdFx0XHRiYXRjaDogJz09IOaJuemHj+aPkOWIoCA9PScsXG5cdFx0XHRcdFx0XHRcdFx0fVt0eXBlXVxuXHRcdFx0XHRcdFx0XHR9XFxuJHtuZXdUZXh0fVxcblxcbiR7Y29tbWVudFRleHR9XFxuLS0tLVxcbjrlu7rorq7vvJrliKDpmaTliY3ov7DpobXpnaLvvJvnkIbnlLHvvJoke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KFxuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy54ZmRyZWFzb25cblx0XHRcdFx0XHRcdFx0KX1cXG7mj5DmiqXku6XkuIoke1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGZhbWU6ICc8dT7kuI3nrKblkIjmlLblvZXmoIflh4Y8L3U+5p2h55uuJyxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YnN0dWI6ICc8dT7plb/luqbov4fnn608L3U+5p2h55uuJyxcblx0XHRcdFx0XHRcdFx0XHRcdGJhdGNoOiAn6aG16Z2iJyxcblx0XHRcdFx0XHRcdFx0XHR9W3R5cGVdXG5cdFx0XHRcdFx0XHRcdH3nmoTmsYLpl7vnvJbogIXlj4rml7bpl7TvvJo8YnIgaWQ9XCJuby1uZXctdGl0bGVcIj5+fmAuY29uY2F0KCd+ficpfWA7XG5cdFx0XHRcdFx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dChhcHBlbmRUZXh0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KFxuXHRcdFx0XHRcdFx0XHQnXFxue3snLmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdFx0XHRgRFJJdGVtfFR5cGU9JHt0eXBlfXxEUmFydGljbGVzPSR7XG5cdFx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm1cblx0XHRcdFx0XHRcdFx0XHR9fFJlYXNvbj0ke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KHBhcmFtcy54ZmRyZWFzb24pfSR7XG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMuZndkY3NkcmVhc29uLnRyaW0oKSA9PT0gJycgPyAnJyA6IGA8YnI+XFxu6L2s5Lqk55CG55Sx77yaJHtwYXJhbXMuZndkY3NkcmVhc29ufWBcblx0XHRcdFx0XHRcdFx0XHR9fFRvPSR7dG99fX1+fmAuY29uY2F0KCd+ficpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGDliqDlhaVbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoRGlzY3Vzc2lvbicpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdGlmIChhcHBlbmQpIHtcblx0XHRcdFx0XHRwYWdlb2JqLmFwcGVuZCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsO1xuXHRcdFx0fSxcblx0XHRcdGxvb2t1cENyZWF0aW9uOiAodGFyZ2V0X3BhZ2UpID0+IHtcblx0XHRcdFx0dGFyZ2V0X3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSB0YXJnZXRfcGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0cGFyYW1zLmNyZWF0b3IgPSB0YXJnZXRfcGFnZS5nZXRDcmVhdG9yKCk7XG5cdFx0XHRcdC8vIFRhZ2dpbmcgcGFnZVxuXHRcdFx0XHRjb25zdCB0YWdnaW5nX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeWtmOW6n+iuqOiuuuaooeadv+WIsOmhtemdoicsICfliqDlhaXlrZjlu6LoqI7oq5bmqKHmnb/liLDpoIHpnaInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0YWdnaW5nX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QoZmFsc2UpO1xuXHRcdFx0XHR0YWdnaW5nX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5sb2FkKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQudHJ5VGFnZ2luZyk7XG5cdFx0XHR9LFxuXHRcdFx0dHJ5VGFnZ2luZzogKHRhZ2dpbmdfcGFnZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzdGF0ZWxlbSA9IHRhZ2dpbmdfcGFnZS5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRcdC8vIGRlZmF1bHRzIHRvIC9kb2MgZm9yIGx1YSBtb2R1bGVzLCB3aGljaCBtYXkgbm90IGV4aXN0XG5cdFx0XHRcdGlmICghdGFnZ2luZ19wYWdlLmV4aXN0cygpKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKDpmaQnLCAn6aCB6Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yiq6ZmkJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCB0ZXh0ID0gdGFnZ2luZ19wYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdGNvbnN0IHhmZCA9IC8oPzpcXHtcXHsoW3JzYWlmdGNtdl1mZHxtZDF8cHJvcG9zZWQgZGVsZXRpb24pW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0eGZkICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOebuOWFs+aooeadv3t7JywgJ+WIqumZpOebuOmXnOaooeadv3t7JykgK1xuXHRcdFx0XHRcdFx0XHR4ZmRbMV0gK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J3195bey6KKr572u5LqO6aG16Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz57un57ut5o+Q5oql77yfJyxcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7mlrzpoIHpnaLkuK3vvIzmgqjmmK/lkKbku43mg7Pnubznuozmj5DloLHvvJ8nXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bqf6K6o6K6644CCJywgJ+mggemdouW3suiiq+aPkOS6pOiHs+WtmOW7ouiojuirluOAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgY29weXZpbyA9IC8oPzpcXHtcXHtcXHMqKGNvcHl2aW8pW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoY29weXZpbykge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5Lit5bey5pyJ6JGX5L2c5p2D6aqM6K+B5qih5p2/44CCJywgJ+mggemdouS4reW3suacieiRl+S9nOasiumpl+itieaooeadv+OAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFmZC5tYWluKHRhZ2dpbmdfcGFnZSk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0ZmZkOiB7XG5cdFx0XHRtYWluOiAodGFnZ2luZ19wYWdlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHRhZ2dpbmdfcGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC50YWdnaW5nSW1hZ2UodGFnZ2luZ19wYWdlKTtcblx0XHRcdFx0Ly8gQWRkaW5nIGRpc2N1c3Npb25cblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYXJhbXMubG9ncGFnZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeiuqOiuuuWIsOW9k+aXpeWIl+ihqCcsICfliqDlhaXoqI7oq5bliLDnlbbml6XliJfooagnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC50b2RheXNMaXN0KTtcblx0XHRcdFx0Ly8gTm90aWZpY2F0aW9uIHRvIGZpcnN0IGNvbnRyaWJ1dG9yXG5cdFx0XHRcdGlmIChwYXJhbXMubm90aWZ5KSB7XG5cdFx0XHRcdFx0Ly8gRGlzYWxsb3cgd2FybmluZyB5b3Vyc2VsZlxuXHRcdFx0XHRcdGlmIChwYXJhbXMuY3JlYXRvciA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBwYXJhbXMuY3JlYXRvcn3vvIlgLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOWIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICfmgqjlu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgdGFsa1BhZ2VOYW1lID0gYFVzZXIgdGFsazoke3BhcmFtcy5jcmVhdG9yfWA7XG5cdFx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KCdzdWJzdDonLCBgaWR3fEZpbGU6JHttdy5jb25maWcuZ2V0KCd3Z1RpdGxlJyl9fX1gLCAnLS1+ficsICd+ficpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KG5vdGlmeXRleHQpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShg6YCa55+l77ya5paH5Lu2W1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXeWtmOW6n+iuqOiuuuaPkOWQjWApO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0dXNlcnRhbGtwYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHRcdC8vIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nLCBpZiB0aGUgdXNlciBoYXMgZW5hYmxlZCBpdFxuXHRcdFx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFkZFRvTG9nKHBhcmFtcywgcGFyYW1zLmNyZWF0b3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBvciwgaWYgbm90IG5vdGlmeWluZywgYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2cgd2l0aG91dCB0aGUgaW5pdGlhbCBjb250cmlidXRvcidzIG5hbWVcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZGRUb0xvZyhwYXJhbXMsIG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0dGFnZ2luZ0ltYWdlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KFxuXHRcdFx0XHRcdGB7e2lmZHwke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KHBhcmFtcy54ZmRyZWFzb24pfXxkYXRlPXt7YC5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGAjdGltZTpjfX19fVxcbiR7dGV4dH1gXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn5paH5Lu25a2Y5bqf6K6o6K6677yaW1snLCAn5qqU5qGI5a2Y5bui6KiO6KuW77yaW1snKSArIHBhcmFtcy5sb2dwYWdlfSMke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWBcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hQYWdlJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTsgLy8gaXQgbWlnaHQgYmUgcG9zc2libGUgZm9yIGEgZmlsZSB0byBleGlzdCB3aXRob3V0IGEgZGVzY3JpcHRpb24gcGFnZVxuXHRcdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHRcdH0sXG5cdFx0XHR0b2RheXNMaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHQvLyBjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEFwcGVuZFRleHQoXG5cdFx0XHRcdFx0J1xcbnt7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGBJZmRJdGVtfEZpbGVuYW1lPSR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfXxVcGxvYWRlcj0ke1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMuY3JlYXRvclxuXHRcdFx0XHRcdFx0fXxSZWFzb249JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0UmVhc29uVGV4dChwYXJhbXMueGZkcmVhc29uKX19fS0tfn5gLmNvbmNhdCgnfn4nKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShg5Yqg5YWlW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWApO1xuXHRcdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd4ZmRXYXRjaERpc2N1c3Npb24nKSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRwYWdlb2JqLmFwcGVuZCgoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IG51bGw7IC8vIGFueSBlcnJvcnMgZnJvbSBub3cgb24gZG8gbm90IG5lZWQgdG8gcHJpbnQgdGhlIHJhdGlvbmFsZSwgYXMgaXQgaXMgc2FmZWx5IHNhdmVkIG9uLXdpa2lcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHRsb29rdXBDcmVhdGlvbjogKHRhcmdldF9wYWdlKSA9PiB7XG5cdFx0XHRcdHRhcmdldF9wYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gdGFyZ2V0X3BhZ2UuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdHBhcmFtcy5jcmVhdG9yID0gdGFyZ2V0X3BhZ2UuZ2V0Q3JlYXRvcigpO1xuXHRcdFx0XHQvLyBUYWdnaW5nIGZpbGVcblx0XHRcdFx0Y29uc3QgdGFnZ2luZ19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXlrZjlup/orqjorrrmqKHmnb/liLDmlofku7bmj4/ov7DpobUnLCAn5Yqg5YWl5a2Y5bui6KiO6KuW5qih5p2/5Yiw5qqU5qGI5o+P6L+w6aCBJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KGZhbHNlKTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHR0YWdnaW5nX3BhZ2UubG9hZChUd2lua2xlLnhmZC5jYWxsYmFja3MuZmZkLnRyeVRhZ2dpbmcpO1xuXHRcdFx0fSxcblx0XHRcdHRyeVRhZ2dpbmc6ICh0YWdnaW5nX3BhZ2UpID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSB0YWdnaW5nX3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0XHRpZiAoIXRhZ2dpbmdfcGFnZS5leGlzdHMoKSkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yig6ZmkJywgJ+mggemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIqumZpCcpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGV4dCA9IHRhZ2dpbmdfcGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCB4ZmQgPSAvKD86XFx7XFx7KFtyc2FpZnRjbXZdZmR8bWQxfHByb3Bvc2VkIGRlbGV0aW9uKVtee31dKj9cXH1cXH0pL2kuZXhlYyh0ZXh0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHhmZCAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfliKDpmaTnm7jlhbPmqKHmnb97eycsICfliKrpmaTnm7jpl5zmqKHmnb97eycpICtcblx0XHRcdFx0XHRcdFx0eGZkWzFdICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruS6jumhtemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+e7p+e7reaPkOaKpe+8nycsXG5cdFx0XHRcdFx0XHRcdFx0J3195bey6KKr572u5pa86aCB6Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz57m857qM5o+Q5aCx77yfJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+mhtemdouW3suiiq+aPkOS6pOiHs+WtmOW6n+iuqOiuuuOAgicsICfpoIHpnaLlt7Looqvmj5DkuqToh7PlrZjlu6LoqI7oq5bjgIInKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5mZmQubWFpbih0YWdnaW5nX3BhZ2UpO1xuXHRcdFx0fSxcblx0XHR9LFxuXHRcdGFkZFRvTG9nOiAocGFyYW1zLCBpbml0aWFsQ29udHJpYikgPT4ge1xuXHRcdFx0Y29uc3QgZWRpdHN1bW1hcnkgPVxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iusOW9leWvuVtbJywgJ+iomOmMhOWwjVtbJykgK1xuXHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ11d55qE5a2Y5bqf6K6o6K665o+Q5ZCNJywgJ11d55qE5a2Y5bui6KiO6KuW5o+Q5ZCNJyk7XG5cdFx0XHRjb25zdCB1c2wgPSBuZXcgTW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyKFR3aW5rbGUuZ2V0UHJlZigneGZkTG9nUGFnZU5hbWUnKSk7XG5cdFx0XHR1c2wuaW5pdGlhbFRleHQgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdGDov5nmmK/or6XnlKjmiLfkvb/nlKhbW0g6VFd8VHdpbmtsZV1d55qE5o+Q5Yig5qih5Z2X5YGa5Ye655qEW1tMSUI6WEZEfOWtmOW6n+iuqOiuul1d5o+Q5ZCN5YiX6KGo44CCXFxuXFxu6Iul5oKo5LiN5YaN5oOz5L+d55WZ5q2k5pel5b+X77yM6K+35ZyoW1ske1R3aW5rbGUuZ2V0UHJlZihcblx0XHRcdFx0XHQnY29uZmlnUGFnZSdcblx0XHRcdFx0KX185Y+C5pWw6K6+572uXV3kuK3lhbPmjonvvIzlubbkvb/nlKhbW0xJQjpDU0QjTzF8Q1NEIE8xXV3mj5DkuqTlv6vpgJ/liKDpmaTjgIJgLFxuXHRcdFx0XHRg6YCZ5piv6Kmy5L2/55So6ICF5L2/55SoW1tIOlRXfFR3aW5rbGVdXeeahOaPkOWIquaooeWhiuWBmuWHuueahFtbTElCOlhGRHzlrZjlu6LoqI7oq5ZdXeaPkOWQjeWIl+ihqOOAglxcblxcbuiLpeaCqOS4jeWGjeaDs+S/neeVmeatpOaXpeiqjO+8jOiri+WcqFtbJHtUd2lua2xlLmdldFByZWYoXG5cdFx0XHRcdFx0J2NvbmZpZ1BhZ2UnXG5cdFx0XHRcdCl9fOWBj+WlveioreWuml1d5Lit6Zec5o6J77yM5Lim5L2/55SoW1tMSUI6Q1NEI08xfENTRCBPMV1d5o+Q5Lqk5b+r6YCf5Yiq6Zmk44CCYFxuXHRcdFx0KTtcblx0XHRcdGxldCB4ZmRDYXROYW1lO1xuXHRcdFx0c3dpdGNoIChwYXJhbXMueGZkY2F0KSB7XG5cdFx0XHRcdGNhc2UgJ2RlbGV0ZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5ZCI5bm25YiwJywgJ+WQiOS9teWIsCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRcdHhmZENhdE5hbWUgPSB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lsI/lsI/kvZzlk4Hmj5DliKAnLCAn5om55qyh5bCP5bCP5L2c5ZOB5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2JhdGNoJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5paH5Lu25a2Y5bqf6K6o6K66JywgJ+aqlOahiOWtmOW7ouiojuirlicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgYSBsb2dnZWQgZmlsZSBpcyBkZWxldGVkIGJ1dCBleGlzdHMgb24gcmVtb3RlIHJlcG8sIHRoZSB3aWtpbGluayB3aWxsIGJlIGJsdWUsIHNvIHByb3ZpZGUgYSBsaW5rIHRvIHRoZSBsb2dcblx0XHRcdGxldCBhcHBlbmRUZXh0ID0gYCMgW1s6JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBg77yIW3t7ZnVsbHVybDpTcGVjaWFsOkxvZ3xwYWdlPSR7bXcudXRpbC53aWtpVXJsZW5jb2RlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKVxuXHRcdFx0XHQpfX19ICR7d2luZG93LndnVUxTKCfml6Xlv5cnLCAn5pel6KqMJyl9Xe+8iWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9IGDvvJoke3hmZENhdE5hbWV9YDtcblx0XHRcdGlmIChwYXJhbXMueGZkY2F0ID09PSAnbWVyZ2UnKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYFtbOiR7cGFyYW1zLm1lcmdlaW50b31dXWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9ICfjgIInO1xuXHRcdFx0aWYgKHBhcmFtcy54ZmRyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn5Y6f5Yig6Zmk55CG5o2uJywgJ+WOn+WIqumZpOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMueGZkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5md2Rjc2RyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn6L2s5Lqk55CG5o2uJywgJ+i9ieS6pOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMuZndkY3NkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGluaXRpYWxDb250cmliKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYO+8m+mAmuefpXt7dXNlcnwke2luaXRpYWxDb250cmlifX19YDtcblx0XHRcdH1cblx0XHRcdGFwcGVuZFRleHQgKz0gJyB+ficuY29uY2F0KCd+ficsICd+XFxuJyk7XG5cdFx0XHR1c2wuY2hhbmdlVGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdHVzbC5sb2coYXBwZW5kVGV4dCwgZWRpdHN1bW1hcnkpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAocGFyYW1zLnhmZGNhdCA9PT0gJ21lcmdlJyAmJiBwYXJhbXMubWVyZ2VpbnRvLnRyaW0oKSA9PT0gJycpIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aPkOS+m+WQiOW5tuebruagh++8gScsICfoq4vmj5DkvpvlkIjkvbXnm67mqJnvvIEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGV4ZmQnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBwYXJhbXMueGZkcmVhc29uO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5vbkVycm9yKFR3aW5rbGUueGZkLnByaW50UmF0aW9uYWxlKTtcblx0XHRpZiAoIXBhcmFtcy5jYXRlZ29yeSkge1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKCfplJnor68nLCAn5pyq5a6a5LmJ55qE5Yqo5L2cJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCB0YXJnZXRfcGFnZTtcblx0XHRjb25zdCBkYXRlID0gbmV3IE1vcmViaXRzLmRhdGUoKTsgLy8gWFhYOiBhdm9pZCB1c2Ugb2YgY2xpZW50IGNsb2NrLCBzdGlsbCB1c2VkIGJ5IFRmRCwgRmZEIGFuZCBDZkRcblx0XHRzd2l0Y2ggKHBhcmFtcy5jYXRlZ29yeSkge1xuXHRcdFx0Y2FzZSAnYWZkJzpcblx0XHRcdFx0Ly8gQUZEXG5cdFx0XHRcdHBhcmFtcy5sb2dwYWdlID0gYExJQl90YWxrOuWtmOW6n+iuqOiuui/orrDlvZUvJHtkYXRlLmZvcm1hdCgnWVlZWS9NTS9ERCcsICd1dGMnKX1gO1xuXHRcdFx0XHRwYXJhbXMubG9nbm9taW5hdGlvbiA9XG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdsb2dYZmROb21pbmF0aW9ucycpICYmXG5cdFx0XHRcdFx0IVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblhmZE5vbWluYXRpb24nKS5pbmNsdWRlcyhwYXJhbXMueGZkY2F0KTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0XHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcGFyYW1zLmxvZ3BhZ2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5a6a5ZCR5Yiw6K6o6K666aG1Jyxcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5paw5bCO5ZCR5Yiw6KiO6KuW6aCBJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHQvLyBMb29rdXAgY3JlYXRpb25cblx0XHRcdFx0dGFyZ2V0X3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPlumhtemdouWIm+W7uuS/oeaBrycsICflj5blvpfpoIHpnaLlu7rnq4vos4foqIonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0YXJnZXRfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpID09PSAnd2lraXRleHQnKSB7XG5cdFx0XHRcdFx0dGFyZ2V0X3BhZ2Uuc2V0TG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yKHRydWUpOyAvLyBMb29rIGZvciBhdXRob3Igb2YgZmlyc3Qgbm9uLXJlZGlyZWN0IHJldmlzaW9uXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0YXJnZXRfcGFnZS5sb29rdXBDcmVhdGlvbihUd2lua2xlLnhmZC5jYWxsYmFja3MuYWZkLmxvb2t1cENyZWF0aW9uKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5yZW1vdmVDaGVja3BvaW50KCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmZkJzoge1xuXHRcdFx0XHQvLyBGRkRcblx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UgPSBgTElCX3RhbGs65a2Y5bqf6K6o6K66L+iusOW9lS8ke2RhdGUuZm9ybWF0KCdZWVlZL01NL0REJywgJ3V0YycpfWA7XG5cdFx0XHRcdHBhcmFtcy5sb2dub21pbmF0aW9uID1cblx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ2xvZ1hmZE5vbWluYXRpb25zJykgJiYgIVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblhmZE5vbWluYXRpb24nKS5pbmNsdWRlcygnZmZkJyk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdFx0XHQvLyBVcGRhdGluZyBkYXRhIGZvciB0aGUgYWN0aW9uIGNvbXBsZXRlZCBldmVudFxuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHBhcmFtcy5sb2dwYWdlO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aPkOWQjeWujOaIkO+8jOmHjeWumuWQkeWIsOiuqOiuuumhtScsXG5cdFx0XHRcdFx0J+aPkOWQjeWujOaIkO+8jOmHjeaWsOWwjuWQkeWIsOiojuirlumggSdcblx0XHRcdFx0KTtcblx0XHRcdFx0Ly8gTG9va3VwIGNyZWF0aW9uXG5cdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6aG16Z2i5Yib5bu65L+h5oGvJywgJ+WPluW+l+mggemdouW7uueri+izh+ioiicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldExvb2t1cE5vblJlZGlyZWN0Q3JlYXRvcih0cnVlKTsgLy8gTG9vayBmb3IgYXV0aG9yIG9mIGZpcnN0IG5vbi1yZWRpcmVjdCByZXZpc2lvblxuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9va3VwQ3JlYXRpb24oVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC5sb29rdXBDcmVhdGlvbik7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdG13Lm5vdGlmeSgndHdpbmtsZXhmZO+8muacquWumuS5ieeahOexu+WIqycsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXhmZCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUueGZkLCAneGZkJyk7XG59KSgpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWltYWdlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWltYWdlKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWltYWdlLmpzOiBJbWFnZSBDU0QgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkRJXCIpXG5cdCAqIEFjdGl2ZSBvbjogTG9jYWwgbm9ucmVkaXJlY3QgZmlsZSBwYWdlcyAobm90IG9uIFNoYXJlKVxuXHQgKi9cblx0VHdpbmtsZS5pbWFnZSA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LXNoYXJlZHVwbG9hZCcpICYmXG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctaW1hZ2VwYWdlLXNlY3Rpb24tZmlsZWhpc3RvcnknKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCflm77mnYMnLCAn5ZyW5qyKJyksXG5cdFx0XHRcdCd0dy1kaScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5Lqk5paH5Lu25b+r6YCf5Yig6ZmkJywgJ+aPkOS6pOaqlOahiOW/q+mAn+WIqumZpCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzMwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmlofku7blv6vpgJ/liKDpmaTlgJnpgIknLCAn5qqU5qGI5b+r6YCf5Yiq6Zmk5YCZ6YG4JykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmnaHkvosnLCAn5b+r6YCf5Yiq6Zmk5qKd5L6LJyksICdMSUI6Q1NEJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflm77mnYPorr7nva4nLCAn5ZyW5qyK6Kit5a6aJyksICdIOlRXL1BSRUYjaW1hZ2UnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjaW1hZ2UnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmltYWdlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCa55+l5LiK5Lyg6ICFJywgJ+mAmuefpeS4iuWCs+iAhScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5oKo5Zyo5qCH6K6w5ZCM5LiA55So5oi355qE5b6I5aSa5paH5Lu277yM6K+35Y+W5raI5q2k5aSN6YCJ5qGG5Lul6YG/5YWN5Y+R6YCB6L+H5aSa5raI5oGv44CCQ1NEIEY15rC46L+c5LiN5Lya6YCa55+l44CCJyxcblx0XHRcdFx0XHRcdCfoi6XmgqjlnKjmqJnoqJjlkIzkuIDkvb/nlKjogIXnmoTlvojlpJrmqpTmoYjvvIzoq4vlj5bmtojmraTmoLjlj5bmlrnloYrku6Xpgb/lhY3nmbzpgIHpgY7lpJroqIrmga/jgIJDU0QgRjXmsLjpgaDkuI3mnIPpgJrnn6XjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmdldFByZWYoJ25vdGlmeVVzZXJPbkRlbGknKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Y29uc3QgZmllbGQgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6ZyA6KaB55qE5Yqo5L2cJywgJ+mcgOimgeeahOWLleS9nCcpLFxuXHRcdH0pO1xuXHRcdGZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAncmFkaW8nLFxuXHRcdFx0bmFtZTogJ3R5cGUnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5piO5pi+5L615p2D5LmL5paH5Lu277yIQ1NEIEYx77yJJywgJ+aYjumhr+S+teasiuS5i+aqlOahiO+8iENTRCBGMe+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm8gcGVybWlzc2lvbicsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S4iuS8oOiAheWuo+ensOaLpeacie+8jOiAjOWcqOWFtuS7luadpea6kOaJvuWIsOeahOaWh+S7tu+8jOaIluS7juS+teadg+eahOadpea6kOiOt+WPlueahOaWh+S7tuOAgicsXG5cdFx0XHRcdFx0XHQn5LiK5YKz6ICF5a6j56ix5pOB5pyJ77yM6ICM5Zyo5YW25LuW5L6G5rqQ5om+5Yiw55qE5qqU5qGI77yM5oiW5b6e5L615qyK55qE5L6G5rqQ5Y+W5b6X55qE5qqU5qGI44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0XHRcdG5hbWU6ICdmMV9zb3VyY2UnLFxuXHRcdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S+teadg+adpea6kO+8micsICfkvrXmrIrkvobmupDvvJonKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2l5rqQ5LiN5piO77yIQ1NEIEYz77yJJywgJ+S+hua6kOS4jeaYju+8iENTRCBGM++8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm8gc291cmNlJyxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5pys5paH5Lu25bm25pyq5rOo5piO5Y6f5aeL5Ye65aSEJywgJ+acrOaqlOahiOS4puacquiou+aYjuWOn+Wni+WHuuiZlScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq55+l6JGX5L2c5p2D5L+h5oGv77yIQ1NEIEYz77yJJywgJ+acquefpeiRl+S9nOasiuizh+ioiu+8iENTRCBGM++8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm8gbGljZW5zZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmnKzmlofku7bnvLrlsJHokZfkvZzmnYPkv6Hmga8nLCAn5pys5qqU5qGI57y65bCR6JGX5L2c5qyK6LOH6KiKJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfokZfkvZzmnYPml6Dms5Xooqvmn6Xor4HvvIhDU0QgRjPvvIknLCAn6JGX5L2c5qyK54Sh5rOV6KKr5p+l6K2J77yIQ1NEIEYz77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBsaWNlbnNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+acrOaWh+S7tuWjsOensOeahOiRl+S9nOadg+S/oeaBr+aXoOazleiiq+afpeivgScsICfmnKzmqpTmoYjogbLnqLHnmoTokZfkvZzmrIros4foqIrnhKHms5Xooqvmn6XorYknKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WPr+iiq+abv+S7o+eahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tu+8iENTRCBGNO+8iScsICflj6/ooqvmm7/ku6PnmoTpnZ7oh6rnlLHokZfkvZzmrIrmqpTmoYjvvIhDU0QgRjTvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3JlcGxhY2VhYmxlIGZhaXIgdXNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5paH5Lu25LuF55So5LqO5o+P6L+w44CB6K+G5Yir5oiW6K+E6K665paH5Lu25Lit5bGV56S655qE5LqL54mp77yM5oiW5LuF55So5L2c5o+S5Zu+77yM5LiU5ruh6Laz5Lul5LiL5Zub5Liq5p2h5Lu25LmL5LiA44CC6Iul57uZ5Ye65LqG5YW25LuW5ZCI55CG5L2/55So5L6d5o2u77yM5LiN6YCC55So5pys5p2h44CC5aaC5a+55paH5Lu255qE5Y+v5pu/5Luj5oCn5a2Y5Zyo5LqJ6K6u77yM5bqU5Lqk5paH5Lu25a2Y5bqf6K6o6K665aSE55CG44CC5pys5p2h5Lmf5LiN6YCC55So5LqO5q2j5Zyo5oiW5pu+57uP55Sx5paH5Lu25a2Y5bqf6K6o6K665aSE55CG6L+H55qE5paH5Lu244CCJyxcblx0XHRcdFx0XHRcdCfmqpTmoYjlg4XnlKjmlrzmj4/ov7DjgIHovqjorZjmiJboqZXoq5bmqpTmoYjkuK3lsZXnpLrnmoTkuovnianvvIzmiJblg4XnlKjkvZzmj5LlnJbvvIzkuJTmu7/otrPku6XkuIvlm5vlgIvmop3ku7bkuYvkuIDjgILoi6Xntablh7rkuoblhbbku5blkIjnkIbkvb/nlKjkvp3mk5rvvIzkuI3pgannlKjmnKzmop3jgILlpoLlsI3mqpTmoYjnmoTlj6/mm7/ku6PmgKflrZjlnKjniK3orbDvvIzmh4nkuqTmqpTmoYjlrZjlu6LoqI7oq5bomZXnkIbjgILmnKzmop3kuZ/kuI3pgannlKjmlrzmraPlnKjmiJbmm77ntpPnlLHmqpTmoYjlrZjlu6LoqI7oq5bomZXnkIbpgY7nmoTmqpTmoYjjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRcdFx0bmFtZTogJ2Y0X3R5cGUnLFxuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgILnlKjnsbvlnovvvJonLCAn6YGp55So6aGe5Yil77yaJyksXG5cdFx0XHRcdFx0XHRzdHlsZTogJ3dpZHRoOiA4NSU7Jyxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+acieWFtuS7luiHqueUseiRl+S9nOadg+aWh+S7tuWxleekuuebuOWQjOeahOS6i+eJqScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn5pyJ5YW25LuW6Ieq55Sx6JGX5L2c5qyK5qqU5qGI5bGV56S655u45ZCM55qE5LqL54mpJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn5paH5Lu25o+P6L+w55qE5piv5Zyo5LiW5oiW5YGH5a6a5Zyo5LiW5Lq654mp44CB5LuN54S25a2Y5Zyo55qE5bu6562R44CB5a6k5aSW6ZuV5aGR5oiW5LuN54S25Zyo5ZSu55qE5ZWG5ZOB77yM5LiU6aKE6K6h6Ieq6KGM5ouN5pGE55qE54Wn54mH5LiN5Y+X5LuW5Lq66JGX5L2c5p2D5L+d5oqkJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfmqpTmoYjmj4/ov7DnmoTmmK/lnKjkuJbmiJblgYflrprlnKjkuJbkurrnianjgIHku43nhLblrZjlnKjnmoTlu7rnr4njgIHlrqTlpJbpm5XloZHmiJbku43nhLblnKjllK7nmoTllYblk4HvvIzkuJTpoJDoqIjoh6rooYzmi43mlJ3nmoTnm7jniYfkuI3lj5fku5bkurrokZfkvZzmrIrkv53orbcnXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJzInLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5paH5Lu25Li65Y+v6Ieq6KGM57uY5Yi255qE5Zyw5Zu+5oiW5Zu+6KGoJywgJ+aqlOahiOeCuuWPr+iHquihjOe5quijveeahOWcsOWcluaIluWcluihqCcpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnMycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+aWh+S7tuadpeiHquWVhuS4muWbvueJh+acuuaehO+8iOWmgkdldHR577yJJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfmqpTmoYjkvoboh6rllYbmpa3lnJbniYfmqZ/mp4vvvIjlpoJHZXR0ee+8iSdcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnNCcsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tu+8iENTRCBGNe+8iScsXG5cdFx0XHRcdFx0XHQn5rKS5pyJ6KKr5qKd55uu5L2/55So55qE6Z2e6Ieq55Sx6JGX5L2c5qyK5qqU5qGI77yIQ1NEIEY177yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6ICdvcnBoYW5lZCBmYWlyIHVzZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+acrOaWh+S7tuS4uumdnuiHqueUseiRl+S9nOadg+S4lOayoeacieiiq+adoeebruS9v+eUqCcsXG5cdFx0XHRcdFx0XHQn5pys5qqU5qGI54K66Z2e6Ieq55Sx6JGX5L2c5qyK5LiU5rKS5pyJ6KKr5qKd55uu5L2/55SoJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tu+8iENTRCBGNe+8iScsXG5cdFx0XHRcdFx0XHQn5rKS5pyJ5aGr5a+r5Lu75L2V5ZCI55CG5L2/55So5L6d5pOa55qE6Z2e6Ieq55Sx6JGX5L2c5qyK5qqU5qGI77yIQ1NEIEY177yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBmYWlyIHVzZSByYXRpb25hbGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkuI3pgILnlKjkuo7mnInkuonorq7kvYblrozmlbTnmoTlkIjnkIbkvb/nlKjkvp3mja7jgILoi6XpnZ7oh6rnlLHokZfkvZzmnYPmlofku7blj6rmnInpg6jliIbmnaHnm67nmoTkvb/nlKjkvp3mja7vvIzkvYblkIzml7booqvkvb/nlKjkuo7mnKrmj5DkvpvlkIjnkIbkvb/nlKjkvp3mja7nmoTmnaHnm67vvIzliJnmnKzmlrnpkojkuZ/kuI3pgILnlKjjgIInLFxuXHRcdFx0XHRcdFx0J+S4jemBqeeUqOaWvOacieeIreitsOS9huWujOaVtOeahOWQiOeQhuS9v+eUqOS+neaTmuOAguiLpemdnuiHqueUseiRl+S9nOasiuaqlOahiOWPquaciemDqOWIhuaineebrueahOS9v+eUqOS+neaTmu+8jOS9huWQjOaZguiiq+S9v+eUqOaWvOacquaPkOS+m+WQiOeQhuS9v+eUqOS+neaTmueahOaineebru+8jOWJh+acrOaWuemHneS5n+S4jemBqeeUqOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBXZSBtdXN0IGluaXQgdGhlIHBhcmFtZXRlcnNcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQudHlwZVswXS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRsZXQgdHlwZTtcblx0XHRsZXQgbm90aWZ5ID0gZXZlbnQudGFyZ2V0Lm5vdGlmeS5jaGVja2VkO1xuXHRcdGNvbnN0IHR5cGVzID0gZXZlbnQudGFyZ2V0LnR5cGU7XG5cdFx0Zm9yIChjb25zdCB0eXBlXyBvZiB0eXBlcykge1xuXHRcdFx0aWYgKHR5cGVfLmNoZWNrZWQpIHtcblx0XHRcdFx0dHlwZSA9IHR5cGVfLnZhbHVlcztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCBjc2Rjcml0O1xuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSAnbm8gc291cmNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmMyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbm8gbGljZW5zZSc6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjMnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29ycGhhbmVkIGZhaXIgdXNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmNSc7XG5cdFx0XHRcdG5vdGlmeSA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ25vIHBlcm1pc3Npb24nOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2YxJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdubyBmYWlyIHVzZSByYXRpb25hbGUnOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2Y1Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdyZXBsYWNlYWJsZSBmYWlyIHVzZSc6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjQnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignVHdpbmtsZS5pbWFnZS5jYWxsYmFjay5ldmFsdWF0Ze+8muacquefpeadoeasvicpO1xuXHRcdH1cblx0XHRjb25zdCBsb2dub21pbmF0aW9uID1cblx0XHRcdFR3aW5rbGUuZ2V0UHJlZignbG9nU3BlZWR5Tm9taW5hdGlvbnMnKSAmJlxuXHRcdFx0IVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nKS5pbmNsdWRlcyhjc2Rjcml0LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGNvbnN0IHRlbXBsYXRlbmFtZSA9IHR5cGU7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0dHlwZSxcblx0XHRcdHRlbXBsYXRlbmFtZSxcblx0XHRcdG5vcm1hbGl6ZWQ6IGNzZGNyaXQsXG5cdFx0XHRsb2dub21pbmF0aW9uLFxuXHRcdH07XG5cdFx0aWYgKGNzZGNyaXQgPT09ICdmMScpIHtcblx0XHRcdHBhcmFtcy5mMV9zb3VyY2UgPSBldmVudC50YXJnZXRbJ3R5cGUuZjFfc291cmNlJ10udmFsdWU7XG5cdFx0fVxuXHRcdGlmIChjc2Rjcml0ID09PSAnZjQnKSB7XG5cdFx0XHRjb25zdCBmNF90eXBlID0gZXZlbnQudGFyZ2V0Wyd0eXBlLmY0X3R5cGUnXS52YWx1ZTtcblx0XHRcdGlmICghZjRfdHlwZSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ0NTRCBGNO+8muivt+mAieaLqemAgueUqOexu+Wei+OAgicsICdDU0QgRjTvvJroq4vpgbjmk4fpgannlKjpoZ7liKXjgIInKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlaW1hZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cGFyYW1zLmY0X3R5cGUgPSBmNF90eXBlO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGV2ZW50LnRhcmdldCk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfmoIforrDlrozmiJAnLCAn5qiZ6KiY5a6M5oiQJyk7XG5cdFx0Ly8gVGFnZ2luZyBpbWFnZVxuXHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeWIoOmZpOagh+iusCcsICfliqDlhaXliKrpmaTmqJnoqJgnKVxuXHRcdCk7XG5cdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLnRhZ2dpbmdJbWFnZSk7XG5cdFx0Ly8gTm90aWZ5aW5nIHVwbG9hZGVyXG5cdFx0aWYgKG5vdGlmeSkge1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvb2t1cENyZWF0aW9uKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLnVzZXJOb3RpZmljYXRpb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBhZGQgdG8gQ1NEIGxvZyBpZiBkZXNpcmVkXG5cdFx0XHRpZiAobG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRwYXJhbXMuZnJvbURJID0gdHJ1ZTtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBudWxsKTtcblx0XHRcdH1cblx0XHRcdC8vIE5vIGF1dG8tbm90aWZpY2F0aW9uLCBkaXNwbGF5IHdoYXQgd2FzIGdvaW5nIHRvIGJlIGFkZGVkLlxuXHRcdFx0aWYgKHR5cGUgIT09ICdvcnBoYW5lZCBmYWlyIHVzZScpIHtcblx0XHRcdFx0Y29uc3Qgbm90ZURhdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTtcblx0XHRcdFx0bm90ZURhdGEuYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXG5cdFx0XHRcdFx0XHQne3snLmNvbmNhdCgnc3Vic3Q6JywgYFVwbG9hZHZpb25vdGljZXwke01vcmViaXRzLnBhZ2VOYW1lTm9ybX19fS0tfn5gLCAnfn4nKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0J+aPkOekuicsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0Wyfov5nkupvlhoXlrrnlupTotLTov5vkuIrkvKDogIXlr7nor53pobXvvJonLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpLCBub3RlRGF0YV0sXG5cdFx0XHRcdFx0XHRbJ+mAmeS6m+WFp+WuueaHieiyvOmAsuS4iuWCs+iAheiojuirlumgge+8micsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyksIG5vdGVEYXRhXVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzID0ge1xuXHRcdHRhZ2dpbmdJbWFnZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdC8vIHJlbW92ZSB0YWcgLSBkZWxldGlvbi10YWdnZWQgZmlsZXMgY2Fubm90IGJlIG1vdmVkXG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHQvXFx7XFx7KG10Y3woY29weSB8bW92ZSApP3RvID8oc2hhcmV8Y29tbW9ucyl8bW92ZSB0byAocWl1d2VuIHNoYXJlfHdpa2ltZWRpYSBjb21tb25zKXxjb3B5IHRvIChxaXV3ZW4gc2hhcmV8d2lraW1lZGlhIGNvbW1vbnMpKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHQnJ1xuXHRcdFx0KTtcblx0XHRcdC8vIEFkZGluZyBkaXNjdXNzaW9uXG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgIT09ICdvcnBoYW5lZCBmYWlyIHVzZScpIHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnTElCX3RhbGs65a2Y5bqf6K6o6K66L+aWh+S7tuW/q+mAn+WIoOmZpOaPkOaKpScsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXlv6vpgJ/liKDpmaTorrDlvZXpobknLCAn5Yqg5YWl5b+r6YCf5Yiq6Zmk6KiY6YyE6aCFJylcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLmltYWdlTGlzdCk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgdGFnID0gJyc7XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ29ycGhhbmVkIGZhaXIgdXNlJzpcblx0XHRcdFx0XHR0YWcgPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgJ29ycGhhbmVkIGZhaXIgdXNlfX1cXG4nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbm8gcGVybWlzc2lvbic6XG5cdFx0XHRcdFx0dGFnID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGAke3BhcmFtcy50ZW1wbGF0ZW5hbWV9L2F1dG98MT0ke3BhcmFtcy5mMV9zb3VyY2Vcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL2h0dHAvZywgJyYjMTA0O3R0cCcpXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICdcXG4nKVxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgvXlxccyooW14qXSkvZ20sICcqICQxJylcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL15cXCogJC9tLCAnJyl9fX1cXG5gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmVwbGFjZWFibGUgZmFpciB1c2UnOlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfDE9JHtwYXJhbXMuZjRfdHlwZX19fVxcbmApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfX1cXG5gKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNvbnN0IHRleHROb1NkID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHQvXFx7XFx7XFxzKihkYigtXFx3Kik/fGR8ZGVsZXRlfCg/Omhhbmd8aG9sZClbLSBdP29uKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdCcnXG5cdFx0XHQpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9TZCAmJlxuXHRcdFx0XHRjb25maXJtKHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeenu+mZpOWXju+8nycpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRleHQgPSB0ZXh0Tm9TZDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGFnICsgdGV4dCk7XG5cdFx0XHRsZXQgZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpO+8iCcsICfoq4vmsYLlv6vpgJ/liKrpmaTvvIgnKTtcblx0XHRcdGVkaXRTdW1tYXJ5ICs9IGBbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9fENTRCAke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9XV1gO1xuXHRcdFx0ZWRpdFN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGVkaXRTdW1tYXJ5KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hQYWdlJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHRcdHVzZXJOb3RpZmljYXRpb246IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgaW5pdGlhbENvbnRyaWIgPSBwYWdlb2JqLmdldENyZWF0b3IoKTtcblx0XHRcdC8vIGRpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdGlmIChpbml0aWFsQ29udHJpYiA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdHBhZ2VvYmpcblx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0Lndhcm4oYOaCqO+8iCR7aW5pdGlhbENvbnRyaWJ977yJJHt3aW5kb3cud2dVTFMoJ+WIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICflu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKX1gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtpbml0aWFsQ29udHJpYn1gO1xuXHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpeS4iuS8oOiAhScsICfpgJrnn6XkuIrlgrPogIUnKX3vvIgke2luaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRcdGBEaS0ke3BhcmFtcy50ZW1wbGF0ZW5hbWV9LW5vdGljZXwxPSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19LS1+fmAsXG5cdFx0XHRcdFx0J35+J1xuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6YCa55+l77ya5paH5Lu2W1snLCAn6YCa55+l77ya5qqU5qGIW1snKSArXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeW/q+mAn+WIoOmZpOaPkOWQjScsICddXeW/q+mAn+WIqumZpOaPkOWQjScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRwYXJhbXMuZnJvbURJID0gdHJ1ZTtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBpbml0aWFsQ29udHJpYik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbWFnZUxpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gY29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQoYCR7dGV4dH1cXG4qIFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dLS1+fmAuY29uY2F0KCd+ficpKTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmltYWdlLCAnaW1hZ2UnKTtcbn0pKCk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHtpbml0TXdBcGl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXByb3RlY3QuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlcHJvdGVjdCgkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZXByb3RlY3QuanM6IFByb3RlY3QvUlBQIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJQUFwiL1wiUlBQXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwsIG5vbi1NZWRpYVdpa2kgcGFnZXNcblx0ICovXG5cdC8vIE5vdGU6IGEgbG90IG9mIGNvZGUgaW4gdGhpcyBtb2R1bGUgaXMgcmUtdXNlZC9jYWxsZWQgYnkgYmF0Y2hwcm90ZWN0LlxuXHRUd2lua2xlLnByb3RlY3QgPSAoKSA9PiB7XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPCAwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDgpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjayxcblx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5oqkJywgJ+S/neittycpLFxuXHRcdFx0J3R3LXJwcCcsXG5cdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcCA/IHdpbmRvdy53Z1VMUygn5L+d5oqk6aG16Z2iJywgJ+S/neitt+mggemdoicpIDogd2luZG93LndnVUxTKCfor7fmsYLkv53miqTpobXpnaInLCAn6KuL5rGC5L+d6K236aCB6Z2iJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MjAsIDUzMCk7XG5cdFx0V2luZG93LnNldFRpdGxlKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3Bcblx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aWveihjOaIluivt+axguS/neaKpOmhtemdoicsICfmlr3ooYzmiJboq4vmsYLkv53orbfpoIHpnaInKVxuXHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2iJywgJ+iri+axguS/neitt+mggemdoicpXG5cdFx0KTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5L+d5oqk5p2h5L6LJywgJ+S/neitt+aineS+iycpLCAnTElCOlBST1QnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+S/neaKpOiuvue9ricsICfkv53orbfoqK3lrponKSwgJ0g6VFcvUFJFRiNwcm90ZWN0Jyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3Byb3RlY3QnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGNvbnN0IGFjdGlvbmZpZWxkID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aTjeS9nOexu+WeiycsICfmk43kvZzpoZ7liKUnKSxcblx0XHR9KTtcblx0XHRpZiAoTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdyYWRpbycsXG5cdFx0XHRcdG5hbWU6ICdhY3Rpb250eXBlJyxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VBY3Rpb24sXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTpobXpnaInLCAn5L+d6K236aCB6Z2iJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3Byb3RlY3QnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAncmFkaW8nLFxuXHRcdFx0bmFtZTogJ2FjdGlvbnR5cGUnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VBY3Rpb24sXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLkv53miqTpobXpnaInLCAn6KuL5rGC5L+d6K236aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdyZXF1ZXN0Jyxcblx0XHRcdFx0XHR0b29sdGlwOlxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfoi6Xmgqjmg7PlnKhMSUI6UkZQUOivt+axguS/neaKpOatpOmhtScsICfoi6Xmgqjmg7PlnKhMSUI6UkZQUOiri+axguS/neitt+atpOmggScpICtcblx0XHRcdFx0XHRcdChNb3JlYml0cy51c2VySXNTeXNvcCA/ICfogIzkuI3mmK/oh6rooYzlrozmiJDjgIInIDogJ+OAgicpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOS/neaKpOaooeadv+agh+iusOatpOmhtScsICfnlKjkv53orbfmqKHmnb/mqJnoqJjmraTpoIEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3RhZycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflj6/ku6XnlKjmraTkuLrpobXpnaLliqDkuIrlkIjpgILnmoTkv53miqTmqKHmnb/jgIInLCAn5Y+v5Lul55So5q2k54K66aCB6Z2i5Yqg5LiK5ZCI6YGp55qE5L+d6K235qih5p2/44CCJyksXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgPT09IDAgfHwgbXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICdTY3JpYnVudG8nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiAnMScsXG5cdFx0XHRuYW1lOiAnZmllbGQxJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICcyJyxcblx0XHRcdG5hbWU6ICdmaWVsZDInLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgY29udHJvbHNcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQuYWN0aW9udHlwZVswXS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0Ly8gZ2V0IGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCBhc3luY2hyb25vdXNseVxuXHRcdFR3aW5rbGUucHJvdGVjdC5mZXRjaFByb3RlY3Rpb25MZXZlbCgpO1xuXHR9O1xuXHQvLyBDdXN0b21pemFibGUgbmFtZXNwYWNlIGFuZCBGbGFnZ2VkUmV2cyBzZXR0aW5nc1xuXHQvLyBJbiB0aGVvcnkgaXQnZCBiZSBuaWNlIHRvIGhhdmUgcmVzdHJpY3Rpb25sZXZlbHMgZGVmaW5lZCBoZXJlLFxuXHQvLyBidXQgdGhvc2UgYXJlIG9ubHkgYXZhaWxhYmxlIHZpYSBhIHNpdGVpbmZvIHF1ZXJ5XG5cdC8vIExpbWl0IHRlbXBsYXRlIGVkaXRvcjsgYSBUd2lua2xlIHJlc3RyaWN0aW9uLCBub3QgYSBzaXRlIHNldHRpbmdcblx0Y29uc3QgaXNUZW1wbGF0ZSA9IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDEwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDgyODtcblx0Ly8gQ29udGFpbnMgdGhlIGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCBpbiBhbiBvYmplY3Rcblx0Ly8gT25jZSBmaWxsZWQsIGl0IHdpbGwgbG9vayBzb21ldGhpbmcgbGlrZTpcblx0Ly8geyBlZGl0OiB7IGxldmVsOiBcInN5c29wXCIsIGV4cGlyeTogPHNvbWUgZGF0ZT4sIGNhc2NhZGU6IHRydWUgfSwgLi4uIH1cblx0VHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzID0ge307XG5cdFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMgPSB7fTtcblx0VHdpbmtsZS5wcm90ZWN0LmZldGNoUHJvdGVjdGlvbkxldmVsID0gYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IGFwaSA9IGluaXRNd0FwaSgnbW9yZWJpdHMuanM7IFR3aW5rbGUvMS4xJyk7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdGluZGV4cGFnZWlkczogdHJ1ZSxcblx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRsaXN0OiAnbG9nZXZlbnRzJyxcblx0XHRcdFx0bGV0eXBlOiAncHJvdGVjdCcsXG5cdFx0XHRcdGxldGl0bGU6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0XHRpbnByb3A6ICdwcm90ZWN0aW9ufHdhdGNoZWQnLFxuXHRcdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdH07XG5cdFx0XHRjb25zdCBwcm90ZWN0RGF0YSA9IGF3YWl0IGFwaS5nZXQocGFyYW1zKTtcblx0XHRcdGNvbnN0IFtwYWdlaWRdID0gcHJvdGVjdERhdGEucXVlcnkucGFnZWlkcztcblx0XHRcdGNvbnN0IHBhZ2UgPSBwcm90ZWN0RGF0YS5xdWVyeS5wYWdlc1twYWdlaWRdO1xuXHRcdFx0Y29uc3QgY3VycmVudCA9IHt9O1xuXHRcdFx0Y29uc3QgcHJldmlvdXMgPSB7fTtcblx0XHRcdC8vIFNhdmUgcmVxdWVzdGVkIHBhZ2UncyB3YXRjaGVkIHN0YXR1cyBmb3IgbGF0ZXIgaW4gY2FzZSBuZWVkZWQgd2hlbiBmaWxpbmcgcmVxdWVzdFxuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQgPT09ICcnO1xuXHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIHBhZ2UucHJvdGVjdGlvbikge1xuXHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdGN1cnJlbnRbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdGxldmVsOiBwcm90ZWN0aW9uLmxldmVsLFxuXHRcdFx0XHRcdFx0ZXhwaXJ5OiBwcm90ZWN0aW9uLmV4cGlyeSxcblx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gT25seSB1c2UgdGhlIGxvZyBleGNlcHQgdW5wcm90ZWN0XG5cdFx0XHRpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAxICYmIHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5hY3Rpb24gIT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFtUd2lua2xlLnByb3RlY3QucHJldmlvdXNQcm90ZWN0aW9uTG9nXSA9IHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50cztcblx0XHRcdH0gZWxzZSBpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAyKSB7XG5cdFx0XHRcdFssIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2ddID0gcHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cucGFyYW1zLmRldGFpbHMpIHtcblx0XHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdFx0cHJldmlvdXNbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdFx0bGV2ZWw6IHByb3RlY3Rpb24ubGV2ZWwsXG5cdFx0XHRcdFx0XHRcdGV4cGlyeTogcHJvdGVjdGlvbi5leHBpcnksXG5cdFx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gc2hvdyB0aGUgcHJvdGVjdGlvbiBsZXZlbCBhbmQgbG9nIGluZm9cblx0XHRcdFR3aW5rbGUucHJvdGVjdC5oYXNQcm90ZWN0TG9nID0gISFwcm90ZWN0RGF0YS5xdWVyeS5sb2dldmVudHMubGVuZ3RoO1xuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzID0gY3VycmVudDtcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMgPSBwcmV2aW91cztcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5zaG93TG9nQW5kQ3VycmVudFByb3RlY3RJbmZvKCk7XG5cdFx0fSBjYXRjaCB7fVxuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suc2hvd0xvZ0FuZEN1cnJlbnRQcm90ZWN0SW5mbyA9ICgpID0+IHtcblx0XHRjb25zdCBjdXJyZW50bHlQcm90ZWN0ZWQgPSBPYmplY3Qua2V5cyhUd2lua2xlLnByb3RlY3QuY3VycmVudFByb3RlY3Rpb25MZXZlbHMpLmxlbmd0aCAhPT0gMDtcblx0XHRpZiAoVHdpbmtsZS5wcm90ZWN0Lmhhc1Byb3RlY3RMb2cgfHwgVHdpbmtsZS5wcm90ZWN0Lmhhc1N0YWJsZUxvZykge1xuXHRcdFx0Y29uc3QgJGxpbmtNYXJrdXAgPSAkKCc8c3Bhbj4nKTtcblx0XHRcdGlmIChUd2lua2xlLnByb3RlY3QuaGFzUHJvdGVjdExvZykge1xuXHRcdFx0XHQkbGlua01hcmt1cC5hcHBlbmQoXG5cdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAndmlldycsXG5cdFx0XHRcdFx0XHRcdHBhZ2U6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3Byb3RlY3QnLFxuXHRcdFx0XHRcdFx0fSl9XCI+JHt3aW5kb3cud2dVTFMoJ+S/neaKpOaXpeW/lycsICfkv53orbfml6XoqownKX08L2E+YFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0Lmhhc1N0YWJsZUxvZyA/ICQoJzxzcGFuPicpLmh0bWwoJyAmYnVsbDsgJykgOiBudWxsXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdCgkYm9keS5maW5kKCdkaXZbbmFtZT1cImhhc3Byb3RlY3Rsb2dcIl0gc3BhbicpWzBdKTtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRjdXJyZW50bHlQcm90ZWN0ZWRcblx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5YWI5YmN5L+d5oqkJywgJ+WFiOWJjeS/neittycpXG5cdFx0XHRcdFx0OiBbXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2k6aG16Z2i5pu+5ZyoJywgJ+atpOmggemdouabvuWcqCcpLFxuXHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdGA8Yj4ke25ldyBNb3JlYml0cy5kYXRlKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cudGltZXN0YW1wKS5jYWxlbmRhcihcblx0XHRcdFx0XHRcdFx0XHRcdCd1dGMnXG5cdFx0XHRcdFx0XHRcdFx0KX08L2I+YFxuXHRcdFx0XHRcdFx0XHQpWzBdLFxuXHRcdFx0XHRcdFx0XHRg6KKrJHtUd2lua2xlLnByb3RlY3QucHJldmlvdXNQcm90ZWN0aW9uTG9nLnVzZXJ9JHt3aW5kb3cud2dVTFMoJ+S/neaKpCcsICfkv53orbcnKX3vvJpgLFxuXHRcdFx0XHRcdFx0XHQuLi5Ud2lua2xlLnByb3RlY3QuZm9ybWF0UHJvdGVjdGlvbkRlc2NyaXB0aW9uKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMpLFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0JGxpbmtNYXJrdXBbMF1cblx0XHRcdCk7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiY3VycmVudHByb3RcIl0gc3BhbicpWzBdKTtcblx0XHRsZXQgcHJvdGVjdGlvbk5vZGUgPSBbXTtcblx0XHRsZXQgc3RhdHVzTGV2ZWwgPSAnaW5mbyc7XG5cdFx0cHJvdGVjdGlvbk5vZGUgPSBUd2lua2xlLnByb3RlY3QuZm9ybWF0UHJvdGVjdGlvbkRlc2NyaXB0aW9uKFR3aW5rbGUucHJvdGVjdC5jdXJyZW50UHJvdGVjdGlvbkxldmVscyk7XG5cdFx0aWYgKGN1cnJlbnRseVByb3RlY3RlZCkge1xuXHRcdFx0c3RhdHVzTGV2ZWwgPSAnd2Fybic7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnN0YXR1c1tzdGF0dXNMZXZlbF0od2luZG93LndnVUxTKCflvZPliY3kv53miqTnrYnnuqcnLCAn55uu5YmN5L+d6K23562J57SaJyksIHByb3RlY3Rpb25Ob2RlKTtcblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZUFjdGlvbiA9IChlKSA9PiB7XG5cdFx0bGV0IGZpZWxkX3ByZXNldDtcblx0XHRsZXQgZmllbGQxO1xuXHRcdGxldCBmaWVsZDI7XG5cdFx0c3dpdGNoIChlLnRhcmdldC52YWx1ZXMpIHtcblx0XHRcdGNhc2UgJ3Byb3RlY3QnOlxuXHRcdFx0XHRmaWVsZF9wcmVzZXQgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZF9wcmVzZXQnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGRfcHJlc2V0LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6npu5jorqTvvJonLCAn6YG45pOH6aCQ6Kit77yaJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXQsXG5cdFx0XHRcdFx0bGlzdDogbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKVxuXHRcdFx0XHRcdFx0PyBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQWRtaW5cblx0XHRcdFx0XHRcdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0NyZWF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMiA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTpgInpobknLCAn5L+d6K236YG46aCFJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkMicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnY3VycmVudHByb3QnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pOyAvLyBob2xkcyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsLCBhcyBmaWxsZWQgb3V0IGJ5IHRoZSBhc3luYyBjYWxsYmFja1xuXHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnaGFzcHJvdGVjdGxvZycsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vIGZvciBleGlzdGluZyBwYWdlc1xuXHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bW9kaWZ5LFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+u5pS557yW6L6R5p2D6ZmQJywgJ+S/ruaUuee3qOi8r+asiumZkCcpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdlZGl0bW9kaWZ5Jyxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul5q2k6aG55YWz6Zet77yM57yW6L6R5p2D6ZmQ5bCG5LiN5Lya5L+u5pS544CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6XmraTpoIXpl5zplonvvIznt6jovK/mrIrpmZDlsIfkuI3mnIPkv67mlLnjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ2VkaXRsZXZlbCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnvJbovpHmnYPpmZDvvJonLCAn57eo6Lyv5qyK6ZmQ77yaJyksXG5cdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuZWRpdGxldmVsLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHQvLyBGaWx0ZXIgVEUgb3V0c2lkZSBvZiB0ZW1wbGF0ZXMgYW5kIG1vZHVsZXNcblx0XHRcdFx0XHRcdFx0KGxldmVsKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGlzVGVtcGxhdGUgfHwgbGV2ZWwudmFsdWUgIT09ICd0ZW1wbGF0ZWVkaXRvcic7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdlZGl0ZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7iOatouaXtumXtO+8micsICfntYLmraLmmYLplpPvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQkKCdpbnB1dFtuYW1lPXNtYWxsXScsICQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCdmb3JtJykpWzBdLmNoZWNrZWQgPVxuXHRcdFx0XHRcdFx0XHRcdGV2ZW50LnRhcmdldC5zZWxlY3RlZEluZGV4ID49IDQ7IC8vIDEgbW9udGhcblx0XHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHRcdC8vIGRlZmF1bHQgZXhwaXJ5IHNlbGVjdGlvbiAoMiBkYXlzKSBpcyBjb25kaXRpb25hbGx5IHNldCBpbiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0XG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVtb2RpZnksXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv67mlLnnp7vliqjmnYPpmZAnLCAn5L+u5pS556e75YuV5qyK6ZmQJyksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ21vdmVtb2RpZnknLFxuXHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6XmraTpobnooqvlhbPpl63vvIznp7vliqjmnYPpmZDlsIbkuI3ooqvkv67mlLnjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+iLpeatpOmgheiiq+mXnOmWie+8jOenu+WLleasiumZkOWwh+S4jeiiq+S/ruaUueOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnbW92ZWxldmVsJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+WKqOadg+mZkO+8micsICfnp7vli5XmrIrpmZDvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbGV2ZWwsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdC8vIEF1dG9jb25maXJtZWQgaXMgcmVxdWlyZWQgZm9yIGEgbW92ZSwgcmVkdW5kYW50XG5cdFx0XHRcdFx0XHRcdChsZXZlbCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXZlbC52YWx1ZSAhPT0gJ2F1dG9jb25maXJtZWQnICYmIChpc1RlbXBsYXRlIHx8IGxldmVsLnZhbHVlICE9PSAndGVtcGxhdGVlZGl0b3InKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdtb3ZlZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7iOatouaXtumXtO+8micsICfntYLmraLmmYLplpPvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdC8vIGRlZmF1bHQgZXhwaXJ5IHNlbGVjdGlvbiAoMiBkYXlzKSBpcyBjb25kaXRpb25hbGx5IHNldCBpbiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0XG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gZm9yIG5vbi1leGlzdGluZyBwYWdlc1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnY3JlYXRlbGV2ZWwnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu65p2D6ZmQ77yaJywgJ+W7uueri+asiumZkO+8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmNyZWF0ZWxldmVsLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHQvLyBGaWx0ZXIgVEUgYWx3YXlzLCBhbmQgYXV0b2NvbmZpcm1lZCBpbiBtYWluc3BhY2Vcblx0XHRcdFx0XHRcdFx0KGxldmVsKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGxldmVsLnZhbHVlICE9PSAndGVtcGxhdGVlZGl0b3InO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnY3JlYXRlZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7iOatouaXtumXtO+8micsICfntYLmraLmmYLplpPvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdC8vIGRlZmF1bHQgZXhwaXJ5IHNlbGVjdGlvbiAoaW5kZWZpbml0ZSkgaXMgY29uZGl0aW9uYWxseSBzZXQgaW4gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZW5ndGhzLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnY2xvc2UnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDor7fmsYLkv53miqTpobXpnaLkuK3nmoTor7fmsYInLCAn5qiZ6KiY6KuL5rGC5L+d6K236aCB6Z2i5Lit55qE6KuL5rGCJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdwcm90ZWN0UmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnkIbnlLHvvIjkv53miqTml6Xlv5fvvInvvJonLCAn55CG55Sx77yI5L+d6K235pel6KqM77yJ77yaJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHwgbXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICdTY3JpYnVudG8nKSB7XG5cdFx0XHRcdFx0Ly8gdGFnZ2luZyBpc24ndCByZWxldmFudCBmb3Igbm9uLWV4aXN0aW5nIG9yIG1vZHVsZSBwYWdlc1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICd0YWcnOlxuXHRcdFx0XHRmaWVsZDEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w6YCJ6aG5JywgJ+aomeiomOmBuOmghScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZDEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2N1cnJlbnRwcm90Jyxcblx0XHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0XHR9KTsgLy8gaG9sZHMgdGhlIGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCwgYXMgZmlsbGVkIG91dCBieSB0aGUgYXN5bmMgY2FsbGJhY2tcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2hhc3Byb3RlY3Rsb2cnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAndGFndHlwZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup5L+d5oqk5qih5p2/77yaJywgJ+mBuOaTh+S/neitt+aooeadv++8micpLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVGFncyxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMudGFndHlwZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnc21hbGwnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvb/nlKjlm77moIfvvIhzbWFsbD15ZXPvvIknLCAn5L2/55So5ZyW56S677yIc21hbGw9eWVz77yJJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5bCG57uZ5qih5p2/5Yqg5LiKfHNtYWxsPXllc+WPguaVsO+8jOaYvuekuuaIkOWPs+S4iuinkueahOS4gOaKiuaMgumUgeOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+Wwh+e1puaooeadv+WKoOS4inxzbWFsbD15ZXPlj4PmlbjvvIzpoa/npLrmiJDlj7PkuIrop5LnmoTkuIDmiormjpvpjpbjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbm9pbmNsdWRlJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55SoJmx0O25vaW5jbHVkZSZndDvljIXoo7nkv53miqTmqKHmnb8nLCAn55SoJmx0O25vaW5jbHVkZSZndDvljIXoo7nkv53orbfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflsIbkv53miqTmqKHmnb/ljIXoo7nlnKgmbHQ7bm9pbmNsdWRlJmd0O+S4rScsXG5cdFx0XHRcdFx0XHRcdFx0J+Wwh+S/neitt+aooeadv+WMheijueWcqCZsdDtub2luY2x1ZGUmZ3Q75LitJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdzaG93ZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5qih5p2/5pi+56S65Yiw5pyf5pe26Ze0JywgJ+WcqOaooeadv+mhr+ekuuWIsOacn+aZgumWkycpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+Wwhue7meaooeadv+WKoOS4inxleHBpcnnlj4LmlbAnLCAn5bCH57Wm5qih5p2/5Yqg5LiKfGV4cGlyeeWPg+aVuCcpLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRoaWRkZW46IGUudGFyZ2V0LnZhbHVlcyA9PT0gJ3RhZycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlcXVlc3QnOlxuXHRcdFx0XHRmaWVsZF9wcmVzZXQgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+d5oqk57G75Z6LJywgJ+S/neitt+mhnuWIpScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZF9wcmVzZXQnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGRfcHJlc2V0LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnsbvlnovlkoznkIbnlLHvvJonLCAn6aGe5Yil5ZKM55CG55Sx77yaJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXQsXG5cdFx0XHRcdFx0bGlzdDogbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKVxuXHRcdFx0XHRcdFx0PyBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzXG5cdFx0XHRcdFx0XHQ6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ6aG5JywgJ+mBuOmghScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZDEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2N1cnJlbnRwcm90Jyxcblx0XHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0XHR9KTsgLy8gaG9sZHMgdGhlIGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCwgYXMgZmlsbGVkIG91dCBieSB0aGUgYXN5bmMgY2FsbGJhY2tcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2hhc3Byb3RlY3Rsb2cnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnZXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml7bplb/vvJonLCAn5pmC6ZW377yaJyksXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogJycsXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuLTml7YnLCAn6Ieo5pmCJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndGVtcG9yYXJ5Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5rC45LmFJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn55CG55Sx77yaJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6L+Z546p5oSP5YS/6KKr5rW36LGa5ZCD5o6J5LqG77yBJywgJ+mAmeeOqeaEj+WFkuiiq+a1t+ixmuWQg+aOieS6hu+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRsZXQgb2xkZmllbGQ7XG5cdFx0aWYgKGZpZWxkX3ByZXNldCkge1xuXHRcdFx0W29sZGZpZWxkXSA9ICQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfcHJlc2V0LnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpLmNzcygnZGlzcGxheScsICdub25lJyk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZDEpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZDFcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkMS5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZDFcIl0nKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXHRcdH1cblx0XHRpZiAoZmllbGQyKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQyXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZDIucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQyXCJdJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcblx0XHR9XG5cdFx0aWYgKGUudGFyZ2V0LnZhbHVlcyA9PT0gJ3Byb3RlY3QnKSB7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBwcmVzZXQgZHJvcGRvd25cblx0XHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdFx0ZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSk7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmNhdGVnb3J5LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdC8vIHJlZHVjZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgZGlhbG9nXG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZDJcIl0gc2VsZWN0JykucGFyZW50KCkuY3NzKHtcblx0XHRcdFx0ZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG5cdFx0XHRcdG1hcmdpblJpZ2h0OiAnMC41ZW0nLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIHJlLWFkZCBwcm90ZWN0aW9uIGxldmVsIGFuZCBsb2cgaW5mbywgaWYgaXQncyBhdmFpbGFibGVcblx0XHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suc2hvd0xvZ0FuZEN1cnJlbnRQcm90ZWN0SW5mbygpO1xuXHR9O1xuXHQvLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYmF0Y2hwcm90ZWN0IGFzIHdlbGxcblx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMgPSB7XG5cdFx0ZWRpdG1vZGlmeTogKGUpID0+IHtcblx0XHRcdGUudGFyZ2V0LmZvcm0uZWRpdGxldmVsLmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRleHBpcnkuZGlzYWJsZWQgPSAhZS50YXJnZXQuY2hlY2tlZCB8fCBlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC52YWx1ZSA9PT0gJ2FsbCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5zdHlsZS5jb2xvciA9IGUudGFyZ2V0LmNoZWNrZWQgPyAnJyA6ICd0cmFuc3BhcmVudCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRleHBpcnkuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdH0sXG5cdFx0ZWRpdGxldmVsOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdhbGwnO1xuXHRcdH0sXG5cdFx0bW92ZW1vZGlmeTogKGUpID0+IHtcblx0XHRcdC8vIHN5bmMgbW92ZSBzZXR0aW5ncyB3aXRoIGVkaXQgc2V0dGluZ3MgaWYgYXBwbGljYWJsZVxuXHRcdFx0aWYgKGUudGFyZ2V0LmZvcm0ubW92ZWxldmVsLmRpc2FibGVkICYmICFlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5kaXNhYmxlZCkge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC52YWx1ZSA9IGUudGFyZ2V0LmZvcm0uZWRpdGxldmVsLnZhbHVlO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVleHBpcnkudmFsdWUgPSBlLnRhcmdldC5mb3JtLmVkaXRleHBpcnkudmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKGUudGFyZ2V0LmZvcm0uZWRpdGxldmVsLmRpc2FibGVkKSB7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWxldmVsLnZhbHVlID0gJ3N5c29wJztcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LnZhbHVlID0gJ2luZmluaXR5Jztcblx0XHRcdH1cblx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWxldmVsLmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVleHBpcnkuZGlzYWJsZWQgPSAhZS50YXJnZXQuY2hlY2tlZCB8fCBlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC52YWx1ZSA9PT0gJ2FsbCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC5zdHlsZS5jb2xvciA9IGUudGFyZ2V0LmNoZWNrZWQgPyAnJyA6ICd0cmFuc3BhcmVudCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVleHBpcnkuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdH0sXG5cdFx0bW92ZWxldmVsOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdhbGwnO1xuXHRcdH0sXG5cdFx0Y3JlYXRlbGV2ZWw6IChlKSA9PiB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmNyZWF0ZWV4cGlyeS5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnYWxsJztcblx0XHR9LFxuXHRcdHRhZ3R5cGU6IChlKSA9PiB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnNtYWxsLmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdub25lJyB8fCBlLnRhcmdldC52YWx1ZSA9PT0gJ25vb3AnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5ub2luY2x1ZGUuZGlzYWJsZWQgPSBlLnRhcmdldC52YWx1ZSA9PT0gJ25vbmUnIHx8IGUudGFyZ2V0LnZhbHVlID09PSAnbm9vcCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnNob3dleHBpcnkuZGlzYWJsZWQgPSBlLnRhcmdldC52YWx1ZSA9PT0gJ25vbmUnIHx8IGUudGFyZ2V0LnZhbHVlID09PSAnbm9vcCc7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmRvQ3VzdG9tRXhwaXJ5ID0gKHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGN1c3RvbSA9IHByb21wdChcblx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+i+k+WFpeiHquWumuS5iee7iOatouaXtumXtOOAglxcbuaCqOWPr+S7peS9v+eUqOebuOWvueaXtumXtO+8jOWmguKAnDEgbWludXRl4oCd5oiW4oCcMTkgZGF5c+KAne+8jOaIlue7neWvueaXtumXtOKAnHl5eXltbWRkaGhtbeKAne+8iOWmguKAnDIwMDYwMjAxMTQwNeKAneaYrzIwMDblubQwMuaciDAx5pelMTTvvJowNe+8iFVUQ++8ie+8iScsXG5cdFx0XHRcdCfovLjlhaXoh6roqILntYLmraLmmYLplpPjgIJcXG7mgqjlj6/ku6Xkvb/nlKjnm7jlsI3mmYLplpPvvIzlpoLjgIwxIG1pbnV0ZeOAjeaIluOAjDE5IGRheXPjgI3vvIzmiJbntZXlsI3mmYLplpPjgIx5eXl5bW1kZGhobW3jgI3vvIjlpoLjgIwyMDA2MDIwMTE0MDXjgI3mmK8yMDA25bm0MDLmnIgwMeaXpTE077yaMDXvvIhVVEPvvInvvIknXG5cdFx0XHQpLFxuXHRcdFx0Jydcblx0XHQpO1xuXHRcdGlmIChjdXN0b20pIHtcblx0XHRcdGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBjdXN0b20pO1xuXHRcdFx0b3B0aW9uLnRleHRDb250ZW50ID0gY3VzdG9tO1xuXHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKG9wdGlvbik7XG5cdFx0XHR0YXJnZXQudmFsdWUgPSBjdXN0b207XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhcmdldC5zZWxlY3RlZEluZGV4ID0gMDtcblx0XHR9XG5cdH07XG5cdC8vIE5PVEU6IFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGJhdGNocHJvdGVjdCBhcyB3ZWxsXG5cdFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAn5YWo6YOoJyxcblx0XHRcdHZhbHVlOiAnYWxsJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heWFgeiuuOiHquWKqOehruiupOeUqOaItycsICflg4XlhYHoqLHoh6rli5Xnorroqo3kvb/nlKjogIUnKSxcblx0XHRcdHZhbHVlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XmqKHmnb/nvJbovpHlkZjlkoznrqHnkIblkZgnLCAn5YOF5qih5p2/57eo6Lyv5ZOh5ZKM566h55CG5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ3RlbXBsYXRlZWRpdG9yJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heeuoeeQhuWRmCcsICflg4XnrqHnkIblk6EnKSxcblx0XHRcdHZhbHVlOiAnc3lzb3AnLFxuXHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XlhYHorrjmoaPmoYjnkIbkuovlkZgnLCAn5YOF5YWB6Kix5qqU5qGI55CG5LqL5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ29mZmljaWFscHJvdGVjdGVkJyxcblx0XHR9LFxuXHRdO1xuXHQvLyBkZWZhdWx0IGV4cGlyeSBzZWxlY3Rpb24gaXMgY29uZGl0aW9uYWxseSBzZXQgaW4gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldFxuXHQvLyBOT1RFOiBUaGlzIGxpc3QgaXMgdXNlZCBieSBiYXRjaHByb3RlY3QgYXMgd2VsbFxuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcx5aSpJyxcblx0XHRcdHZhbHVlOiAnMSBkYXknLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcz5aSpJyxcblx0XHRcdHZhbHVlOiAnMyBkYXlzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHlkagnLCAnMemAsScpLFxuXHRcdFx0dmFsdWU6ICcxIHdlZWsnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMuWRqCcsICcy6YCxJyksXG5cdFx0XHR2YWx1ZTogJzIgd2Vla3MnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMeS4quaciCcsICcx5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzEgbW9udGgnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+S4quaciCcsICcz5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzMgbW9udGhzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzbkuKrmnIgnLCAnNuWAi+aciCcpLFxuXHRcdFx0dmFsdWU6ICc2IG1vbnRocycsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJzHlubQnLFxuXHRcdFx0dmFsdWU6ICcxIHllYXInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpLFxuXHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnigKbigKYnLCAn6Ieq6KiC4oCm4oCmJyksXG5cdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ino+mZpOS/neaKpCcsICfop6PpmaTkv53orbcnKSxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhO+8iOWFqO+8iScsICfluLjopo/vvIjlhajvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnvJbovpHmiJjvvIjlhajvvIknLCAn54it6K2w44CB57eo6Lyv5oiw77yI5YWo77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmqKHmnb/kv53miqQnLCAn5qih5p2/5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpq5jpo47pmanmqKHmnb/vvIjmqKHmnb/vvIknLCAn6auY6aKo6Zqq5qih5p2/77yI5qih5p2/77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC10ZW1wbGF0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2K5L+d5oqkJywgJ+WNiuS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI5Y2K77yJJywgJ+W4uOimj++8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1wcm90ZWN0ZWQnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oyB57ut56C05Z2P77yI5Y2K77yJJywgJ+aMgee6jOegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N55Sf6ICF5Lyg6K6w5p2h5L6L77yI5Y2K77yJJywgJ+mBleWPjeeUn+iAheWCs+iomOaineS+i++8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1ibHAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YKA5YSh56C05Z2P77yI5Y2K77yJJywgJ+WCgOWEoeegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1zb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadv++8iOWNiu+8iScsICfpq5jpoqjpmqrmqKHmnb/vvIjljYrvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktdGVtcGxhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6KKr5bCB56aB55So5oi35rul55So6K6o6K666aG177yI5Y2K77yJJywgJ+iiq+WwgeemgeS9v+eUqOiAhea/q+eUqOiojuirlumgge+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS11c2VydGFsaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqkJywgJ+enu+WLleS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI56e75Yqo77yJJywgJ+W4uOimj++8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnp7vliqjmiJjvvIjnp7vliqjvvIknLCAn54it6K2w44CB56e75YuV5oiw77yI56e75YuV77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWRpc3B1dGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo56C05Z2P77yI56e75Yqo77yJJywgJ+enu+WLleegtOWjnu+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp6aG16Z2i77yI56e75Yqo77yJJywgJ+mrmOmiqOmaqumggemdou+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS1pbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF0uZmlsdGVyKFxuXHRcdChcblx0XHRcdC8vIEZpbHRlciBmb3IgdGVtcGxhdGVzXG5cdFx0XHR7bGFiZWx9XG5cdFx0KSA9PiB7XG5cdFx0XHRyZXR1cm4gaXNUZW1wbGF0ZSB8fCAobGFiZWwgIT09ICfmqKHmnb/kv53miqQnICYmIGxhYmVsICE9PSAn5qih5p2/5L+d6K23Jyk7XG5cdFx0fVxuXHQpO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlT25seSA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnmb3nurjkv53miqQnLCAn55m957SZ5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfluLjop4TvvIjnmb3nurjvvIknLCAn5bi46KaP77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu677yI55m957q477yJJywgJ+WkmuasoemHjeikh+W7uueri++8iOeZvee0me+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtY3JlYXRlLXJlcGVhdCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63noLTlnY/vvIjnmb3nurjvvIknLCAn5oyB57qM56C05aOe77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUtdmFuZGFsaXNtJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWwgeemgeeUqOaIt+eahOeUqOaIt+mhte+8iOeZvee6uO+8iScsICflt7LlsIHnpoHkvb/nlKjogIXnmoTkvb/nlKjogIXpoIHvvIjnmb3ntJnvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLWNyZWF0ZS11c2VycGFnZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXMgPSBbXG5cdFx0Li4uVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluLFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAn6Kej6Zmk5L+d5oqkJyxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHQvLyBOT1RJQ0U6IGtlZXAgdGhpcyBzeW5jaGVkIHdpdGggW1tNZWRpYVdpa2k6UHJvdGVjdC1kcm9wZG93bl1dXG5cdC8vIGV4cGlyeSB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0c1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblByZXNldHNJbmZvID0ge1xuXHRcdCdwcC1wcm90ZWN0ZWQnOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHR9LFxuXHRcdCdwcC1kaXNwdXRlJzoge1xuXHRcdFx0ZWRpdDogJ3N5c29wJyxcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn57yW6L6R5oiYJywgJ+e3qOi8r+aIsCcpLFxuXHRcdH0sXG5cdFx0J3BwLXRlbXBsYXRlJzoge1xuXHRcdFx0ZWRpdDogJ3RlbXBsYXRlZWRpdG9yJyxcblx0XHRcdG1vdmU6ICd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygnW1tMSUI6SFJUfOmrmOmjjumZqeaooeadv11dJywgJ1tbTElCOkhSVHzpq5jpoqjpmqrmqKHmnb9dXScpLFxuXHRcdFx0dGVtcGxhdGU6ICdub29wJyxcblx0XHR9LFxuXHRcdCdwcC12YW5kYWxpc20nOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvoh6rliqjnoa7orqTnlKjmiLfnoLTlnY8nLCAn6KKr6Ieq5YuV56K66KqN5L2/55So6ICF56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtc29jayc6IHtcblx0XHRcdGVkaXQ6ICdzeXNvcCcsXG5cdFx0XHRtb3ZlOiAnc3lzb3AnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aMgee7reeahOWCgOWEoeegtOWdjycsICfmjIHnuoznmoTlgoDlhKHnoLTlo54nKSxcblx0XHR9LFxuXHRcdCdwcC1zZW1pLXZhbmRhbGlzbSc6IHtcblx0XHRcdGVkaXQ6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvmlrDnlKjmiLfnoLTlnY8nLCAn6KKr5paw5L2/55So6ICF56C05aOeJyksXG5cdFx0XHR0ZW1wbGF0ZTogJ3BwLXZhbmRhbGlzbScsXG5cdFx0fSxcblx0XHQncHAtc2VtaS1ibHAnOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5paw55So5oi36L+d5Y+N55Sf6ICF5Lyg6K6w5p2h5L6LJywgJ+aWsOS9v+eUqOiAhemBleWPjeeUn+iAheWCs+iomOaineS+iycpLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktdXNlcnRhbGsnOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr5bCB56aB55So5oi35rul55So5YW26K6o6K666aG1JywgJ+iiq+WwgeemgeS9v+eUqOiAhea/q+eUqOWFtuiojuirlumggScpLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktdGVtcGxhdGUnOiB7XG5cdFx0XHQvLyByZW1vdmVkIGZvciBub3dcblx0XHRcdGVkaXQ6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW0xJQjpIUlR86auY6aOO6Zmp5qih5p2/XV0nLCAnW1tMSUI6SFJUfOmrmOmiqOmaquaooeadv11dJyksXG5cdFx0XHR0ZW1wbGF0ZTogJ25vb3AnLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktc29jayc6IHtcblx0XHRcdGVkaXQ6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63nmoTlgoDlhKHnoLTlnY8nLCAn5oyB57qM55qE5YKA5YSh56C05aOeJyksXG5cdFx0XHR0ZW1wbGF0ZTogJ3BwLXNvY2snLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktcHJvdGVjdGVkJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiBudWxsLFxuXHRcdFx0dGVtcGxhdGU6ICdwcC1wcm90ZWN0ZWQnLFxuXHRcdH0sXG5cdFx0J3BwLW1vdmUnOiB7XG5cdFx0XHRtb3ZlOiAnc3lzb3AnLFxuXHRcdFx0cmVhc29uOiBudWxsLFxuXHRcdH0sXG5cdFx0J3BwLW1vdmUtZGlzcHV0ZSc6IHtcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6aG16Z2i56e75Yqo5oiYJywgJ+mggemdouenu+WLleaIsCcpLFxuXHRcdH0sXG5cdFx0J3BwLW1vdmUtdmFuZGFsaXNtJzoge1xuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfnp7vliqjnoLTlnY8nLCAn56e75YuV56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtbW92ZS1pbmRlZic6IHtcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp6aG16Z2iJywgJ+mrmOmiqOmaqumggemdoicpLFxuXHRcdH0sXG5cdFx0dW5wcm90ZWN0OiB7XG5cdFx0XHRlZGl0OiAnYWxsJyxcblx0XHRcdG1vdmU6ICdhbGwnLFxuXHRcdFx0Y3JlYXRlOiAnYWxsJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHRcdHRlbXBsYXRlOiAnbm9uZScsXG5cdFx0fSxcblx0XHQncHAtY3JlYXRlJzoge1xuXHRcdFx0Y3JlYXRlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IG51bGwsXG5cdFx0fSxcblx0XHQncHAtY3JlYXRlLXJlcGVhdCc6IHtcblx0XHRcdGNyZWF0ZTogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+WkmuasoemHjeWkjeWIm+W7uicsICflpJrmrKHph43opIflu7rnq4snKSxcblx0XHR9LFxuXHRcdCdwcC1jcmVhdGUtdmFuZGFsaXNtJzoge1xuXHRcdFx0Y3JlYXRlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr5paw55So5oi356C05Z2PJywgJ+iiq+aWsOS9v+eUqOiAheegtOWjnicpLFxuXHRcdH0sXG5cdFx0J3BwLWNyZWF0ZS11c2VycGFnZSc6IHtcblx0XHRcdGNyZWF0ZTogJ3N5c29wJyxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn6KKr5rC45LmF5bCB56aB55qE5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UYWdzID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoO+8iOenu+mZpOeOsOacieaooeadv++8iScsICfnhKHvvIjnp7vpmaTnj77mnInmqKHmnb/vvIknKSxcblx0XHRcdHZhbHVlOiAnbm9uZScsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DvvIjkuI3np7vpmaTnjrDmnInmqKHmnb/vvIknLCAn54Sh77yI5LiN56e76Zmk54++5pyJ5qih5p2/77yJJyksXG5cdFx0XHR2YWx1ZTogJ25vb3AnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICfpgJrnlKjmqKHmnb8nLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLWRpc3B1dGV9fTogJHt3aW5kb3cud2dVTFMoJ+S6ieiuricsICfniK3orbAnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtZGlzcHV0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtdmFuZGFsaXNtfX06ICR7d2luZG93LndnVUxTKCfnoLTlnY8nLCAn56C05aOeJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXZhbmRhbGlzbScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ3t7cHAtc29ja319OiDlgoDlhKEnLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc29jaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtdGVtcGxhdGV9fTogJHt3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadvycsICfpq5jpoqjpmqrmqKHmnb8nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtdGVtcGxhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXByb3RlY3RlZH19OiAke3dpbmRvdy53Z1VMUygn5bi46KeEJywgJ+W4uOimjycpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1wcm90ZWN0ZWQnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WNiuS/neaKpOaooeadvycsICfljYrkv53orbfmqKHmnb8nKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1zZW1pLXVzZXJ0YWxrfX06ICR7d2luZG93LndnVUxTKCflsIHnpoHnmoTnlKjmiLcnLCAn5bCB56aB55qE5L2/55So6ICFJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktdXNlcnRhbGsnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXNlbWktYmxwfX06ICR7d2luZG93LndnVUxTKCfnlJ/ogIXkvKDorrAnLCAn55Sf6ICF5YKz6KiYJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktYmxwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1zZW1pLWluZGVmfX06ICR7d2luZG93LndnVUxTKCfplb/mnJ8nLCAn6ZW35pyfJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktaW5kZWYnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+WKqOS/neaKpOaooeadvycsICfnp7vli5Xkv53orbfmqKHmnb8nKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlLWRpc3B1dGV9fTogJHt3aW5kb3cud2dVTFMoJ+S6ieiuricsICfniK3orbAnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlLXZhbmRhbGlzbX19OiAke3dpbmRvdy53Z1VMUygn56C05Z2PJywgJ+egtOWjnicpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLXZhbmRhbGlzbScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtbW92ZS1pbmRlZn19OiAke3dpbmRvdy53Z1VMUygn6ZW/5pyfJywgJ+mVt+acnycpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWluZGVmJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlfX06ICR7d2luZG93LndnVUxTKCfluLjop4QnLCAn5bi46KaPJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLW1vdmUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0ID0gKGUpID0+IHtcblx0XHRjb25zdCB7Zm9ybX0gPSBlLnRhcmdldDtcblx0XHRjb25zdCBhY3Rpb250eXBlcyA9IGZvcm0uYWN0aW9udHlwZTtcblx0XHRsZXQgYWN0aW9udHlwZTtcblx0XHRmb3IgKGNvbnN0IGFjdGlvbl90eXBlX3ZhbHVlIG9mIGFjdGlvbnR5cGVzKSB7XG5cdFx0XHRpZiAoIWFjdGlvbl90eXBlX3ZhbHVlLmNoZWNrZWQpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRhY3Rpb250eXBlID0gYWN0aW9uX3R5cGVfdmFsdWUudmFsdWVzO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmIChhY3Rpb250eXBlID09PSAncHJvdGVjdCcpIHtcblx0XHRcdC8vIGFjdHVhbGx5IHByb3RlY3RpbmcgdGhlIHBhZ2Vcblx0XHRcdGNvbnN0IGl0ZW0gPSBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblByZXNldHNJbmZvW2Zvcm0uY2F0ZWdvcnkudmFsdWVdO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdFx0aWYgKGl0ZW0uZWRpdCkge1xuXHRcdFx0XHRcdGZvcm0uZWRpdG1vZGlmeS5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bW9kaWZ5KHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5lZGl0bW9kaWZ5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZvcm0uZWRpdGxldmVsLnZhbHVlID0gaXRlbS5lZGl0O1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRsZXZlbCh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0uZWRpdGxldmVsLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvcm0uZWRpdG1vZGlmeS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuZWRpdG1vZGlmeSh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0uZWRpdG1vZGlmeSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaXRlbS5tb3ZlKSB7XG5cdFx0XHRcdFx0Zm9ybS5tb3ZlbW9kaWZ5LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVtb2RpZnkoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLm1vdmVtb2RpZnksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5tb3ZlbGV2ZWwudmFsdWUgPSBpdGVtLm1vdmU7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZWxldmVsKHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5tb3ZlbGV2ZWwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybS5tb3ZlbW9kaWZ5LmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbW9kaWZ5KHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5tb3ZlbW9kaWZ5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0uZWRpdGV4cGlyeS52YWx1ZSA9IGl0ZW0uZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0XHRmb3JtLm1vdmVleHBpcnkudmFsdWUgPSBpdGVtLmV4cGlyeSB8fCAnMSB3ZWVrJztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChpdGVtLmNyZWF0ZSkge1xuXHRcdFx0XHRcdGZvcm0uY3JlYXRlbGV2ZWwudmFsdWUgPSBpdGVtLmNyZWF0ZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5jcmVhdGVsZXZlbCh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0uY3JlYXRlbGV2ZWwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5jcmVhdGVleHBpcnkudmFsdWUgPSBpdGVtLmNyZWF0ZWV4cGlyeSB8fCAnMSB3ZWVrJztcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmNyZWF0ZWV4cGlyeS52YWx1ZSA9IGl0ZW0uZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmVhc29uRmllbGQgPSBhY3Rpb250eXBlID09PSAncHJvdGVjdCcgPyBmb3JtLnByb3RlY3RSZWFzb24gOiBmb3JtLnJlYXNvbjtcblx0XHRcdGlmIChpdGVtLnJlYXNvbikge1xuXHRcdFx0XHRyZWFzb25GaWVsZC52YWx1ZSA9IGl0ZW0ucmVhc29uO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVhc29uRmllbGQudmFsdWUgPSAnJztcblx0XHRcdH1cblx0XHRcdC8vIHNvcnQgb3V0IHRhZ2dpbmcgb3B0aW9ucywgZGlzYWJsZWQgaWYgbm9uZXhpc3RlbnQgb3IgbHVhXG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSAmJiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSAhPT0gJ1NjcmlidW50bycpIHtcblx0XHRcdFx0aWYgKGZvcm0uY2F0ZWdvcnkudmFsdWUgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFx0Zm9ybS50YWd0eXBlLnZhbHVlID0gJ25vbmUnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvcm0udGFndHlwZS52YWx1ZSA9IGl0ZW0udGVtcGxhdGUgPz8gZm9ybS5jYXRlZ29yeS52YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy50YWd0eXBlKHtcblx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0udGFndHlwZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmICgvdGVtcGxhdGUvLnRlc3QoZm9ybS5jYXRlZ29yeS52YWx1ZSkpIHtcblx0XHRcdFx0XHRmb3JtLm5vaW5jbHVkZS5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSAxMCkge1xuXHRcdFx0XHRcdGZvcm0ubm9pbmNsdWRlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZm9ybS5jYXRlZ29yeS52YWx1ZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdC8vIFJQUCByZXF1ZXN0XG5cdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9ICcnO1xuXHRcdFx0Zm9ybS5leHBpcnkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9ICcnO1xuXHRcdFx0Zm9ybS5leHBpcnkuZGlzYWJsZWQgPSBmYWxzZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRsZXQgdGFncGFyYW1zO1xuXHRcdGlmIChcblx0XHRcdGlucHV0LmFjdGlvbnR5cGUgPT09ICd0YWcnIHx8XG5cdFx0XHQoaW5wdXQuYWN0aW9udHlwZSA9PT0gJ3Byb3RlY3QnICYmXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgIT09ICdTY3JpYnVudG8nKVxuXHRcdCkge1xuXHRcdFx0dGFncGFyYW1zID0ge1xuXHRcdFx0XHR0YWc6IGlucHV0LnRhZ3R5cGUsXG5cdFx0XHRcdHJlYXNvbjpcblx0XHRcdFx0XHQoaW5wdXQudGFndHlwZSA9PT0gJ3BwLXByb3RlY3RlZCcgfHxcblx0XHRcdFx0XHRcdGlucHV0LnRhZ3R5cGUgPT09ICdwcC1zZW1pLXByb3RlY3RlZCcgfHxcblx0XHRcdFx0XHRcdGlucHV0LnRhZ3R5cGUgPT09ICdwcC1tb3ZlJykgJiZcblx0XHRcdFx0XHRpbnB1dC5wcm90ZWN0UmVhc29uXG5cdFx0XHRcdFx0XHQ/IGlucHV0LnByb3RlY3RSZWFzb25cblx0XHRcdFx0XHRcdDogbnVsbCxcblx0XHRcdFx0c2hvd2V4cGlyeTogaW5wdXQuYWN0aW9udHlwZSA9PT0gJ3Byb3RlY3QnID8gaW5wdXQuc2hvd2V4cGlyeSA6IG51bGwsXG5cdFx0XHRcdHNtYWxsOiBpbnB1dC5zbWFsbCxcblx0XHRcdFx0bm9pbmNsdWRlOiBpbnB1dC5ub2luY2x1ZGUsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGlucHV0LmFjdGlvbnR5cGUgPT09ICdwcm90ZWN0Jykge1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSkge1xuXHRcdFx0XHRcdHRhZ3BhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYgKGlucHV0Lm1vdmVtb2RpZnkpIHtcblx0XHRcdFx0XHR0YWdwYXJhbXMuZXhwaXJ5ID0gaW5wdXQubW92ZWV4cGlyeTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBjbG9zZXBhcmFtcyA9IHt9O1xuXHRcdGlmIChpbnB1dC5jbG9zZSkge1xuXHRcdFx0aWYgKGlucHV0LmNhdGVnb3J5ID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ3VucHJvdGVjdCc7XG5cdFx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdFx0aWYgKGlucHV0LmVkaXRtb2RpZnkpIHtcblx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LmVkaXRsZXZlbCkge1xuXHRcdFx0XHRcdFx0Y2FzZSAnb2ZmaWNpYWxwcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ29mZmljaWFscHJvdGVjdGVkJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdyZXZpc2lvbnByb3RlY3RlZCc6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAncmV2aXNpb25wcm90ZWN0ZWQnO1xuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3N5c29wJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdmdWxsJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICd0ZW1wbGF0ZWVkaXRvcic6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAndGVtcCc7XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnYXV0b2NvbmZpcm1lZCc6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAnc2VtaSc7XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gTm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRpbnB1dC5tb3ZlbW9kaWZ5ICYmXG5cdFx0XHRcdFx0WydvZmZpY2lhbHByb3RlY3RlZCcsICdyZXZpc2lvbnByb3RlY3RlZCcsICdzeXNvcCcsICd0ZW1wbGF0ZWVkaXRvciddLmluY2x1ZGVzKGlucHV0Lm1vdmVsZXZlbClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdtb3ZlJztcblx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5tb3ZlZXhwaXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGlucHV0LmNyZWF0ZWxldmVsICE9PSAnYWxsJykge1xuXHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ3NhbHQnO1xuXHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5jcmVhdGVleHBpcnk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHN3aXRjaCAoaW5wdXQuYWN0aW9udHlwZSkge1xuXHRcdFx0Y2FzZSAncHJvdGVjdCc6IHtcblx0XHRcdFx0Ly8gcHJvdGVjdCB0aGUgcGFnZVxuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfkv53miqTlrozmiJAnLCAn5L+d6K235a6M5oiQJyk7XG5cdFx0XHRcdGxldCBzdGF0dXNJbml0ZWQgPSBmYWxzZTtcblx0XHRcdFx0bGV0IHRoaXNwYWdlO1xuXHRcdFx0XHRjb25zdCBhbGxEb25lID0gKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzcGFnZSkge1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGFncGFyYW1zKSB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLnRhZ2dpbmdQYWdlSW5pdGlhbCh0YWdwYXJhbXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoY2xvc2VwYXJhbXMgJiYgY2xvc2VwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcnBwUGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRcdCdMSUJfdGFsazrpobXpnaLkv53miqTor7fmsYInLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFs+mXreivt+axgicsICfpl5zplonoq4vmsYInKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJwcFBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdFx0XHRycHBQYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhjbG9zZXBhcmFtcyk7XG5cdFx0XHRcdFx0XHRycHBQYWdlLmxvYWQoVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy5jbG9zZVJlcXVlc3QpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgcHJvdGVjdEl0ID0gKG5leHQpID0+IHtcblx0XHRcdFx0XHR0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/neaKpOmhtemdoicsICfkv53orbfpoIHpnaInKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdFx0XHRcdGlmIChpbnB1dC5lZGl0bW9kaWZ5KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldEVkaXRQcm90ZWN0aW9uKGlucHV0LmVkaXRsZXZlbCwgaW5wdXQuZWRpdGV4cGlyeSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoaW5wdXQubW92ZW1vZGlmeSkge1xuXHRcdFx0XHRcdFx0XHQvLyBFbnN1cmUgYSBsZXZlbCBoYXMgYWN0dWFsbHkgYmVlbiBjaG9zZW5cblx0XHRcdFx0XHRcdFx0aWYgKGlucHV0Lm1vdmVsZXZlbCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldE1vdmVQcm90ZWN0aW9uKGlucHV0Lm1vdmVsZXZlbCwgaW5wdXQubW92ZWV4cGlyeSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo6ZyA6KaB6YCJ5oup5L+d5oqk5bGC57qn77yBJywgJ+aCqOmcgOimgemBuOaTh+S/neitt+WxpOe0mu+8gScpLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFByb3RlY3RlZFBhZ2VzJykpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5zZXRDcmVhdGVQcm90ZWN0aW9uKGlucHV0LmNyZWF0ZWxldmVsLCBpbnB1dC5jcmVhdGVleHBpcnkpO1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0V2F0Y2hsaXN0KGZhbHNlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGlucHV0LnByb3RlY3RSZWFzb24pIHtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldEVkaXRTdW1tYXJ5KGlucHV0LnByb3RlY3RSZWFzb24pO1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aG76L6T5YWl5L+d5oqk55CG55Sx77yM6L+Z5bCG6KKr6K6w5b2V5Zyo5L+d5oqk5pel5b+X5Lit44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aCI6Ly45YWl5L+d6K2355CG55Sx77yM6YCZ5bCH6KKr6KiY6YyE5Zyo5L+d6K235pel6KqM5Lit44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFzdGF0dXNJbml0ZWQpIHtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0XHRcdHN0YXR1c0luaXRlZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5wcm90ZWN0KG5leHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSB8fCBpbnB1dC5tb3ZlbW9kaWZ5IHx8ICFtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpKSB7XG5cdFx0XHRcdFx0cHJvdGVjdEl0KGFsbERvbmUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG13Lm5vdGlmeShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+ivt+WRiuiviVR3aW5rbGXopoHlgZrku4DkuYjvvIFcXG7oi6Xmgqjlj6rmmK/mg7PmoIforrDor6XpobXvvIzor7fpgInmi6nkuIrpnaLnmoTigJznlKjkv53miqTmqKHmnb/moIforrDmraTpobXigJ3pgInpobnjgIInLFxuXHRcdFx0XHRcdFx0XHQn6KuL5ZGK6Ki0VHdpbmtsZeimgeWBmuS7gOm6vO+8gVxcbuiLpeaCqOWPquaYr+aDs+aomeiomOipsumgge+8jOiri+mBuOaTh+S4iumdoueahOOAjOeUqOS/neitt+aooeadv+aomeiomOatpOmggeOAjemBuOmgheOAgidcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXByb3RlY3QnLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlICd0YWcnOlxuXHRcdFx0XHQvLyBhcHBseSBhIHByb3RlY3Rpb24gdGVtcGxhdGVcblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5mb2xsb3dSZWRpcmVjdCA9IGZhbHNlO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy50YWdnaW5nUGFnZUluaXRpYWwodGFncGFyYW1zKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdyZXF1ZXN0Jzoge1xuXHRcdFx0XHQvLyBmaWxlIHJlcXVlc3QgYXQgUkZQUFxuXHRcdFx0XHRsZXQgdHlwZW5hbWU7XG5cdFx0XHRcdGxldCB0eXBlcmVhc29uO1xuXHRcdFx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHRcdFx0Y2FzZSAncHAtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtcHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCflhajkv53miqQnLCAn5YWo5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC10ZW1wbGF0ZSc6XG5cdFx0XHRcdFx0XHR0eXBlbmFtZSA9IHdpbmRvdy53Z1VMUygn5qih5p2/5L+d5oqkJywgJ+aooeadv+S/neittycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLWRpc3J1cHRpdmUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdW5zb3VyY2VkJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS11c2VydGFsayc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS10ZW1wbGF0ZSc6IC8vIHJlbW92ZWQgZm9yIG5vd1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktc29jayc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1ibHAnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktcHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfljYrkv53miqQnLCAn5Y2K5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlJzpcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLWRpc3B1dGUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtaW5kZWYnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfnp7vliqjkv53miqQnLCAn56e75YuV5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1vZmZlbnNpdmUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1ibHAnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1zYWx0Jzpcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUtdXNlcnBhZ2UnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1yZXBlYXQnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS12YW5kYWxpc20nOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+eZvee6uOS/neaKpCcsICfnmb3ntJnkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8qIGNhc2UgJ3VucHJvdGVjdCc6ICovXG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0eXBlbmFtZSA9IHdpbmRvdy53Z1VMUygn6Kej6Zmk5L+d5oqkJywgJ+ino+mZpOS/neittycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWRpc3B1dGUnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5LqJ6K6u44CB57yW6L6R5oiYJywgJ+eIreitsOOAgee3qOi8r+aIsCcpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfmjIHnu63noLTlnY8nLCAn5oyB57qM56C05aOeJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC10ZW1wbGF0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS10ZW1wbGF0ZSc6XG5cdFx0XHRcdFx0XHQvLyByZW1vdmVkIGZvciBub3dcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadvycsICfpq5jpoqjpmqrmqKHmnb8nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS11c2VycGFnZSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn6KKr5rC45LmF5bCB6Y6W55qE5L2/55So6ICF6aCB6Z2iJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXVzZXJ0YWxrJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+W3suWwgeemgeeUqOaIt+eahOiuqOiuuumhtScsICflt7LlsIHpjpbkvb/nlKjogIXnmoToqI7oq5bpoIEnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktc29jayc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCflgoDlhKHnoLTlnY8nLCAn5YKA5YSh56C05aOeJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLWJscCc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfov53lj43nlJ/ogIXkvKDorrDmnaHkvosnLCAn6YGV5Y+N55Sf6ICF5YKz6KiY5qKd5L6LJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLWRpc3B1dGUnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5LqJ6K6u44CB56e75Yqo5oiYJywgJ+eIreitsOOAgeenu+WLleaIsCcpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS12YW5kYWxpc20nOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn56e75Yqo56C05Z2PJywgJ+enu+WLleegtOWjnicpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS1pbmRlZic6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfpq5jpo47pmanpobXpnaInLCAn6auY6aKo6Zqq6aCB6Z2iJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUtcmVwZWF0Jzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+WkmuasoemHjeWkjeWIm+W7uicsICflpJrmrKHph43opIflu7rnq4snKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gJyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgcmVhc29uID0gdHlwZXJlYXNvbjtcblx0XHRcdFx0aWYgKGlucHV0LnJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRpZiAodHlwZXJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdHJlYXNvbiArPSAn77yaJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVhc29uICs9IGlucHV0LnJlYXNvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdHJlYXNvbiA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihyZWFzb24pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJwcHBhcmFtcyA9IHtcblx0XHRcdFx0XHRyZWFzb24sXG5cdFx0XHRcdFx0dHlwZW5hbWUsXG5cdFx0XHRcdFx0Y2F0ZWdvcnk6IGlucHV0LmNhdGVnb3J5LFxuXHRcdFx0XHRcdGV4cGlyeTogaW5wdXQuZXhwaXJ5LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0Y29uc3QgcnBwTmFtZSA9ICdMSUJfdGFsazrpobXpnaLkv53miqTor7fmsYInO1xuXHRcdFx0XHQvLyBVcGRhdGluZyBkYXRhIGZvciB0aGUgYWN0aW9uIGNvbXBsZXRlZCBldmVudFxuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHJwcE5hbWU7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5a6a5ZCR5Yiw6K6o6K666aG1Jyxcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5paw5bCO5ZCR5Yiw6KiO6KuW6aCBJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBycHBQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShycHBOYW1lLCB3aW5kb3cud2dVTFMoJ+ivt+axguS/neaKpOmhtemdoicsICfoq4vmsYLkv53orbfpoIHpnaInKSk7XG5cdFx0XHRcdHJwcFBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHJwcFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHJwcHBhcmFtcyk7XG5cdFx0XHRcdHJwcFBhZ2UubG9hZChUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLmZpbGVSZXF1ZXN0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkoJ3R3aW5rbGVwcm90ZWN0OiDmnKrnn6Xmk43kvZznsbvlnosnLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcyA9IHtcblx0XHR0YWdnaW5nUGFnZUluaXRpYWw6ICh0YWdwYXJhbXMpID0+IHtcblx0XHRcdGlmICh0YWdwYXJhbXMudGFnID09PSAnbm9vcCcpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflupTnlKjkv53miqTmqKHmnb8nLCAn5oeJ55So5L+d6K235qih5p2/JyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmsqHku4DkuYjopoHlgZrnmoQnLCAn5rKS5LuA6bq86KaB5YGa55qEJylcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZU5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRjb25zdCBwcm90ZWN0ZWRQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShwYWdlTmFtZSwgd2luZG93LndnVUxTKCfmoIforrDpobXpnaInLCAn5qiZ6KiY6aCB6Z2iJykpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnModGFncGFyYW1zKTtcblx0XHRcdHByb3RlY3RlZFBhZ2UubG9hZChUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLnRhZ2dpbmdQYWdlKTtcblx0XHR9LFxuXHRcdGdldFRhZ2dlZFBhZ2U6IChwYXJhbXMsIHRleHQpID0+IHtcblx0XHRcdGxldCB0YWc7XG5cdFx0XHRsZXQgc3VtbWFyeTtcblx0XHRcdGNvbnN0IG9sZHRhZ19yZSA9XG5cdFx0XHRcdC8oPzo8bm9pbmNsdWRlPik/WyBcXHRdKlxce1xce1xccyoocHAtW157fV0qP3xwcm90ZWN0ZWR8KD86dHx2fHN8cC18dXNlcnRhbGstdnx1c2VydGFsay1zfHNifG1vdmUpcHJvdGVjdGVkKD86Mik/fHByb3RlY3RlZCB0ZW1wbGF0ZXxwcml2YWN5IHByb3RlY3Rpb24pXFxzKj9cXH1cXH1cXHMqKD86PFxcL25vaW5jbHVkZT4pP1xccyovZ2k7XG5cdFx0XHRjb25zdCByZV9yZXN1bHQgPSBvbGR0YWdfcmUuZXhlYyh0ZXh0KTtcblx0XHRcdGlmIChcblx0XHRcdFx0cmVfcmVzdWx0ICYmXG5cdFx0XHRcdChwYXJhbXMudGFnID09PSAnbm9uZScgfHxcblx0XHRcdFx0XHRjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflnKjpobXpnaLkuIrmib7liLB7eycsICflnKjpoIHpnaLkuIrmib7liLB7eycpICtcblx0XHRcdFx0XHRcdFx0cmVfcmVzdWx0WzFdICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCd9fVxcbuWNleWHu+ehruWumuS7peenu+mZpO+8jOaIluWNleWHu+WPlua2iOS7peWPlua2iOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J319XFxu6bue5pOK56K65a6a5Lul56e76Zmk77yM5oiW6bue5pOK5Y+W5raI5Lul5Y+W5raI5pON5L2c44CCJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSlcblx0XHRcdCkge1xuXHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKG9sZHRhZ19yZSwgJycpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWcgPT09ICdub25lJykge1xuXHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfnp7vpmaTkv53miqTmqKHmnb8nLCAn56e76Zmk5L+d6K235qih5p2/Jyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQoe3RhZ30gPSBwYXJhbXMpO1xuXHRcdFx0XHRpZiAocGFyYW1zLnJlYXNvbikge1xuXHRcdFx0XHRcdHRhZyArPSBgfHJlYXNvbj0ke3BhcmFtcy5yZWFzb259YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGFyYW1zLnNob3dleHBpcnkgJiYgcGFyYW1zLmV4cGlyeSAmJiAhTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkocGFyYW1zLmV4cGlyeSkpIHtcblx0XHRcdFx0XHR0YWcgKz0gJ3xleHBpcnk9e3snLmNvbmNhdCgnc3Vic3Q6JywgYCN0aW1lOmN8JHtwYXJhbXMuZXhwaXJ5fX19YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5zbWFsbCkge1xuXHRcdFx0XHRcdHRhZyArPSAnfHNtYWxsPXllcyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKC9eXFxzKiMoPzpyZWRpcmVjdHzph43lrprlkJF86YeN5paw5bCO5ZCRKS9pLnRlc3QodGV4dCkpIHtcblx0XHRcdFx0XHQvLyByZWRpcmVjdCBwYWdlXG5cdFx0XHRcdFx0Ly8gT25seSB0YWcgaWYgbm8ge3tyY2F0IHNoZWxsfX0gaXMgZm91bmRcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHR0ZXh0Lm1hdGNoKFxuXHRcdFx0XHRcdFx0XHQve3soPzpSZWRpcmVjdFsgX11jYXRlZ29yeSBzaGVsbHxSY2F0WyBfXXNoZWxsfFRoaXNbIF9daXMgYSByZWRpcmVjdHzlpJrnp43nsbvlnovph43lrprlkJF85aSa56iu6aGe5Z6L6YeN5a6a5ZCRfOWkmueorumhnuWei+mHjeaWsOWwjuWQkXzlpJrnp43nsbvlnovph43mlrDlr7zlkJF8UjB85YW25LuW6YeN5a6a5ZCRfFJDU3xSZWRpcmVjdFsgX11zaGVsbCkvaVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHRcdCflt7LlrZjlnKhSZWRpcmVjdCBjYXRlZ29yeSBzaGVsbCcsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5rKh5LuA5LmI5Y+v5YGa55qEJywgJ+aykuS7gOm6vOWPr+WBmueahCcpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0LyMoPzpyZWRpcmVjdHzph43lrprlkJF86YeN5paw5bCO5ZCRKSA/KFxcW1xcWy4qP1xcXVxcXSkoLiopL2ksXG5cdFx0XHRcdFx0XHRgI1JFRElSRUNUICQxJDJcXG5cXG57eyR7dGFnfX19YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5ub2luY2x1ZGUpIHtcblx0XHRcdFx0XHRcdHRhZyA9IGA8bm9pbmNsdWRlPnt7JHt0YWd9fX08L25vaW5jbHVkZT5gO1xuXHRcdFx0XHRcdFx0Ly8g5Y+q5pyJ6KGo5qC86ZyA6KaB5Y2V54us5Yqg5Zue6L2m77yM5YW25LuW5oOF5Ya15Yqg5Zue6L2m5Lya56C05Z2P5qih5p2/44CCXG5cdFx0XHRcdFx0XHRpZiAodGV4dC5pbmRleE9mKCd7fCcpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdHRhZyArPSAnXFxuJztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGFnID0gYHt7JHt0YWd9fX1cXG5gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlc1xuXHRcdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0XHRcdHRleHQgPSB5c2FyY2hpdmVzX3BhZ2UuaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXModGFnLCBUd2lua2xlLmhhdG5vdGVSZWdleCkuZ2V0VGV4dCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnkgPSBg5Yqg5YWle3ske3BhcmFtcy50YWd9fX1gO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGV4dCxcblx0XHRcdFx0c3VtbWFyeSxcblx0XHRcdH07XG5cdFx0fSxcblx0XHR0YWdnaW5nUGFnZTogKHByb3RlY3RlZFBhZ2UpID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHByb3RlY3RlZFBhZ2UuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcHJvdGVjdGVkUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3QgbmV3VmVyc2lvbiA9IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MuZ2V0VGFnZ2VkUGFnZShwYXJhbXMsIHRleHQpO1xuXHRcdFx0aWYgKG5ld1ZlcnNpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRwcm90ZWN0ZWRQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRFZGl0U3VtbWFyeShuZXdWZXJzaW9uLnN1bW1hcnkpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoUFBUYWdnZWRQYWdlcycpKTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0UGFnZVRleHQobmV3VmVyc2lvbi50ZXh0KTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nKCk7IC8vIG5vIG5lZWQgdG8gbGV0IGFkbWlucyBrbm93IHRoZXkgYXJlIGVkaXRpbmcgdGhyb3VnaCBwcm90ZWN0aW9uXG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNhdmUoKTtcblx0XHR9LFxuXHRcdGZpbGVSZXF1ZXN0OiAocnBwUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcnBwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0ZXh0ID0gcnBwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzRWxlbWVudCA9IHJwcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0Y29uc3QgcnBwUmUgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgPT09XFxcXHMqKFxcXFxbXFxcXFspP1xcXFxzKjo/XFxcXHMqJHtNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKE1vcmViaXRzLnBhZ2VOYW1lTm9ybSl9XFxcXHMqKFxcXFxdXFxcXF0pP1xcXFxzKj09PWAsXG5cdFx0XHRcdCdtJ1xuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHRhZyA9IHJwcFJlLmV4ZWModGV4dCk7XG5cdFx0XHRjb25zdCBycHBMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0cnBwTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChycHBQYWdlLmdldFBhZ2VOYW1lKCkpKTtcblx0XHRcdHJwcExpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocnBwUGFnZS5nZXRQYWdlTmFtZSgpKSk7XG5cdFx0XHRpZiAodGFnKSB7XG5cdFx0XHRcdHN0YXR1c0VsZW1lbnQuZXJyb3IoW1xuXHRcdFx0XHRcdHJwcExpbmssXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflt7LmnInlr7nmraTpobXpnaLnmoTkv53miqTmj5DlkI3vvIzlj5bmtojmk43kvZzjgIInLCAn5bey5pyJ5bCN5q2k6aCB6Z2i55qE5L+d6K235o+Q5ZCN77yM5Y+W5raI5pON5L2c44CCJyksXG5cdFx0XHRcdF0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsZXQgbmV3dGFnID0gYD09PSBbWzoke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXSA9PT1cXG5gO1xuXHRcdFx0aWYgKG5ldyBSZWdFeHAoYF4ke213LnV0aWwuZXNjYXBlUmVnRXhwKG5ld3RhZykucmVwbGFjZSgvXFxzKy9nLCBTdHJpbmcucmF3YFxccypgKX1gLCAnbScpLnRlc3QodGV4dCkpIHtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC5lcnJvcihbXG5cdFx0XHRcdFx0cnBwTGluayxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suacieWvueatpOmhtemdoueahOS/neaKpOaPkOWQje+8jOWPlua2iOaTjeS9nOOAgicsICflt7LmnInlsI3mraTpoIHpnaLnmoTkv53orbfmj5DlkI3vvIzlj5bmtojmk43kvZzjgIInKSxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCB3b3Jkcztcblx0XHRcdHN3aXRjaCAocGFyYW1zLmV4cGlyeSkge1xuXHRcdFx0XHRjYXNlICd0ZW1wb3JhcnknOlxuXHRcdFx0XHRcdHdvcmRzID0gd2luZG93LndnVUxTKCfkuLTml7YnLCAn6Ieo5pmCJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2luZmluaXR5Jzpcblx0XHRcdFx0XHR3b3JkcyA9ICfmsLjkuYUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHdvcmRzID0gJyc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR3b3JkcyArPSBwYXJhbXMudHlwZW5hbWU7XG5cdFx0XHRuZXd0YWcgKz0gYCogPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDkwJVwiPiR7d2luZG93LndnVUxTKCflvZPliY3kv53miqTnirbmgIEnLCAn55uu5YmN5L+d6K2354uA5oWLJyl977yae3twcm90ZWN0aW9uIHN0YXR1c3wke1xuXHRcdFx0XHQvWz1dLy50ZXN0KE1vcmViaXRzLnBhZ2VOYW1lTm9ybSkgPyAnMT0nIDogJydcblx0XHRcdH0ke01vcmViaXRzLnBhZ2VOYW1lTm9ybX19fTwvc3Bhbj5cXG5gO1xuXHRcdFx0bmV3dGFnICs9IGAke1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axgicsICfoq4vmsYInKSArXG5cdFx0XHRcdE1vcmViaXRzLnN0cmluZy50b1VwcGVyQ2FzZUZpcnN0Q2hhcih3b3JkcykgK1xuXHRcdFx0XHQocGFyYW1zLnJlYXNvbiA9PT0gJycgPyAn44CCJyA6IGDvvJoke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KHBhcmFtcy5yZWFzb24pfWApXG5cdFx0XHR9LS1+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0bGV0IHJlZztcblx0XHRcdGlmIChwYXJhbXMuY2F0ZWdvcnkgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdHJlZyA9IC8oPT1cXHMq6K+35rGC6Kej6Zmk5L+d5oqkXFxzKj09KS87XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZWcgPSAvKHt7XFxzKlxcL2hlYWRlclxccyp9fSkvO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3JpZ2luYWxUZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKHJlZywgYCQxXFxuJHtuZXd0YWd9XFxuYCk7XG5cdFx0XHRpZiAodGV4dC5sZW5ndGggPT09IG9yaWdpbmFsVGV4dExlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBsaW5rbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGlua25vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgbXcudXRpbC5nZXRVcmwoJ0hlbHA6VHdpbmtsZS/kv67lpI1SRlBQJykpO1xuXHRcdFx0XHRsaW5rbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ+WmguS9leS/ruWkjVJGUFAnLCAn5aaC5L2V5L+u5b6pUkZQUCcpKSk7XG5cdFx0XHRcdHN0YXR1c0VsZW1lbnQuZXJyb3IoW1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfml6Dms5XlnKhMSUI6UkZQUOS4iuaJvuWIsOebuOWFs+WumuS9jeeCueagh+iusO+8jOimgeS/ruWkjeatpOmXrumimO+8jOivt+WPguingScsXG5cdFx0XHRcdFx0XHQn54Sh5rOV5ZyoTElCOlJGUFDkuIrmib7liLDnm7jpl5zlrprkvY3pu57mqJnoqJjvvIzopoHkv67lvqnmraTllY/poYzvvIzoq4vlj4PoposnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRsaW5rbm9kZSxcblx0XHRcdFx0XHQn44CCJyxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHN0YXR1c0VsZW1lbnQuc3RhdHVzKCfliqDlhaXmlrDmj5DlkI3igKYnKTtcblx0XHRcdHJwcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdGAvKiAke01vcmViaXRzLnBhZ2VOYW1lTm9ybX0gKi8gJHt3aW5kb3cud2dVTFMoJ+ivt+axguWvuScsICfoq4vmsYLlsI0nKX1bWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dJHtcblx0XHRcdFx0XHRwYXJhbXMudHlwZW5hbWVcblx0XHRcdFx0fWBcblx0XHRcdCk7XG5cdFx0XHRycHBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHJwcFBhZ2Uuc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRycHBQYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHJwcFBhZ2Uuc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdC8vIFdhdGNoIHRoZSBwYWdlIGJlaW5nIHJlcXVlc3RlZFxuXHRcdFx0XHRjb25zdCB3YXRjaFByZWYgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoUmVxdWVzdGVkUGFnZXMnKTtcblx0XHRcdFx0Ly8gYWN0aW9uPXdhdGNoIGhhcyBubyB3YXkgdG8gcmVseSBvbiB1c2VyIHByZWZlcmVuY2VzIChUMjYyOTEyKSwgc28gd2UgZG8gaXQgbWFudWFsbHkuXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGRlZmF1bHQgcHJlZiBhcHBlYXJzIHRvIHJlbGlhYmx5IHJldHVybiAnMScgKHN0cmluZyksXG5cdFx0XHRcdC8vIGJ1dCB0aGF0J3Mgbm90IGNvbnNpc3RlbnQgYW1vbmcgcHJlZnMgc28gbWlnaHQgYXMgd2VsbCBiZSBcImNvcnJlY3RcIlxuXHRcdFx0XHRjb25zdCB3YXRjaCA9XG5cdFx0XHRcdFx0d2F0Y2hQcmVmICE9PSAnbm8nICYmXG5cdFx0XHRcdFx0KHdhdGNoUHJlZiAhPT0gJ2RlZmF1bHQnIHx8ICEhTnVtYmVyLnBhcnNlSW50KG13LnVzZXIub3B0aW9ucy5nZXQoJ3dhdGNoZGVmYXVsdCcpLCAxMCkpO1xuXHRcdFx0XHRpZiAod2F0Y2gpIHtcblx0XHRcdFx0XHRjb25zdCB3YXRjaF9xdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3dhdGNoJyxcblx0XHRcdFx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0dG9rZW46IG13LnVzZXIudG9rZW5zLmdldCgnd2F0Y2hUb2tlbicpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Ly8gT25seSBhZGQgdGhlIGV4cGlyeSBpZiBwYWdlIGlzIHVud2F0Y2hlZCBvciBhbHJlYWR5IHRlbXBvcmFyaWx5IHdhdGNoZWRcblx0XHRcdFx0XHRpZiAoVHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgIT09IHRydWUgJiYgd2F0Y2hQcmVmICE9PSAnZGVmYXVsdCcgJiYgd2F0Y2hQcmVmICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0d2F0Y2hfcXVlcnkuZXhwaXJ5ID0gd2F0Y2hQcmVmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+Wwhuivt+axguS/neaKpOeahOmhtemdouWKoOWFpeWIsOebkeinhuWIl+ihqCcsICflsIfoq4vmsYLkv53orbfnmoTpoIHpnaLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRcdHdhdGNoX3F1ZXJ5XG5cdFx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xvc2VSZXF1ZXN0OiAocnBwUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcnBwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0ZXh0ID0gcnBwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzRWxlbWVudCA9IHJwcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0Y29uc3Qgc2VjdGlvbnMgPSB0ZXh0LnNwbGl0KC8oPz1cXG49PVxccyror7fmsYLop6PpmaTkv53miqRcXHMqPT0pLyk7XG5cdFx0XHRpZiAoc2VjdGlvbnMubGVuZ3RoICE9PSAyKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmtub2RlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGlua25vZGUyLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKCdIZWxwOlR3aW5rbGUv5L+u5aSNUkZQUCcpKTtcblx0XHRcdFx0bGlua25vZGUyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCflpoLkvZXkv67lpI1SRlBQJykpO1xuXHRcdFx0XHRzdGF0dXNFbGVtZW50LmVycm9yKFtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5peg5rOV5ZyoTElCOlJGUFDkuIrmib7liLDnm7jlhbPlrprkvY3ngrnmoIforrDvvIzopoHkv67lpI3mraTpl67popjvvIzor7flj4Lop4EnLFxuXHRcdFx0XHRcdFx0J+eEoeazleWcqExJQjpSRlBQ5LiK5om+5Yiw55u46Zec5a6a5L2N6bue5qiZ6KiY77yM6KaB5L+u5b6p5q2k5ZWP6aGM77yM6KuL5Y+D6KaLJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0bGlua25vZGUyLFxuXHRcdFx0XHRcdCfjgIInLFxuXHRcdFx0XHRdKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHNlY3Rpb25UZXh0O1xuXHRcdFx0bGV0IGV4cGlyeVRleHQgPSAnJztcblx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0Wywgc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRbc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHRcdGV4cGlyeVRleHQgPSBNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlcXVlc3RMaXN0ID0gc2VjdGlvblRleHQuc3BsaXQoLyg/PVxcbj09PS4rPT09XFxzKlxcbikvKTtcblx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0Y29uc3QgcnBwUmUgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgPT09XFxcXHMqKFxcXFxbXFxcXFspP1xcXFxzKjo/XFxcXHMqJHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KE1vcmViaXRzLnBhZ2VOYW1lTm9ybSl9XFxcXHMqKFxcXFxdXFxcXF0pP1xcXFxzKj09PWAsXG5cdFx0XHRcdCdtJ1xuXHRcdFx0KTtcblx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgcmVxdWVzdExpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHJwcFJlLmV4ZWMocmVxdWVzdExpc3RbaV0pKSB7XG5cdFx0XHRcdFx0cmVxdWVzdExpc3RbaV0gPSByZXF1ZXN0TGlzdFtpXS50cmltRW5kKCk7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy50eXBlID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0XHRcdFx0cmVxdWVzdExpc3RbaV0gKz0gJ1xcbjoge3tSRlBQfGlzdW59feOAgi0tfn4nLmNvbmNhdCgnfn5cXG4nKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVxdWVzdExpc3RbaV0gKz0gYFxcbjoge3tSRlBQfCR7cGFyYW1zLnR5cGV9fCR7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpID8gJ2luZmluaXR5JyA6IGV4cGlyeVRleHRcblx0XHRcdFx0XHRcdH19feOAgi0tfn5gLmNvbmNhdCgnfn5cXG4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWZvdW5kKSB7XG5cdFx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+ayoeacieaJvuWIsOebuOWFs+eahOivt+axgicsICfmspLmnInmib7liLDnm7jpl5znmoToq4vmsYInKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0dGV4dCA9IHNlY3Rpb25zWzBdICsgcmVxdWVzdExpc3Quam9pbignJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0ZXh0ID0gcmVxdWVzdExpc3Quam9pbignJykgKyBzZWN0aW9uc1sxXTtcblx0XHRcdH1cblx0XHRcdGxldCBzdW1tYXJ5ID0gJyc7XG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFssIHNlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0W3NlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoIChwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRjYXNlICdzZW1pJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfljYrkv53miqQnLCAn5Y2K5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3RlbXAnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+aooeadv+S/neaKpCcsICfmqKHmnb/kv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZWNwJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCflu7bkvLjnoa7orqTkv53miqQnLCAn5bu25Ly456K66KqN5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2Z1bGwnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmV2aXNpb25wcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+eJiOacrOS/neaKpCcsICfniYjmnKzkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnb2ZmaWNpYWxwcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ijgeWnlOS8muS/neaKpCcsICfoo4Hlp5TmnIPkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbW92ZSc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqkJywgJ+enu+WLleS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzYWx0Jzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfnmb3nurjkv53miqQnLCAn55m957SZ5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3VucHJvdGVjdCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn6Kej6Zmk5L+d5oqkJywgJ+ino+mZpOS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+acquefpeS/neaKpOexu+WeiycsICfmnKrnn6Xkv53orbfpoZ7liKUnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdHN1bW1hcnkgPSBleHBpcnlUZXh0ICsgc3VtbWFyeTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN1bW1hcnkgKz0gZXhwaXJ5VGV4dDtcblx0XHRcdH1cblx0XHRcdHJwcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoYC8qICR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfSAqLyAke3N1bW1hcnl9YCk7XG5cdFx0XHRycHBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHJwcFBhZ2Uuc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRycHBQYWdlLnNhdmUoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuZm9ybWF0UHJvdGVjdGlvbkRlc2NyaXB0aW9uID0gKHByb3RlY3Rpb25MZXZlbHMpID0+IHtcblx0XHRjb25zdCBwcm90ZWN0aW9uTm9kZSA9IFtdO1xuXHRcdGlmIChPYmplY3Qua2V5cyhwcm90ZWN0aW9uTGV2ZWxzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdHByb3RlY3Rpb25Ob2RlLnB1c2goJChgPGI+JHt3aW5kb3cud2dVTFMoJ+aXoOS/neaKpCcsICfnhKHkv53orbcnKX08L2I+YClbMF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGNvbnN0IFt0eXBlLCBzZXR0aW5nc10gb2YgT2JqZWN0LmVudHJpZXMocHJvdGVjdGlvbkxldmVscykpIHtcblx0XHRcdFx0bGV0IGxhYmVsO1xuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICdlZGl0Jzpcblx0XHRcdFx0XHRcdGxhYmVsID0gd2luZG93LndnVUxTKCfnvJbovpEnLCAn57eo6LyvJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdtb3ZlJzpcblx0XHRcdFx0XHRcdGxhYmVsID0gd2luZG93LndnVUxTKCfnp7vliqgnLCAn56e75YuVJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdjcmVhdGUnOlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB3aW5kb3cud2dVTFMoJ+WIm+W7uicsICflu7rnq4snKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VwbG9hZCc6XG5cdFx0XHRcdFx0XHRsYWJlbCA9IHdpbmRvdy53Z1VMUygn5LiK5LygJywgJ+S4iuWCsycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGxhYmVsID0gdHlwZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCBsZXZlbDtcblx0XHRcdFx0c3dpdGNoIChzZXR0aW5ncy5sZXZlbCkge1xuXHRcdFx0XHRcdGNhc2UgJ29mZmljaWFscHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjmoaPmoYjnkIbkuovlkZgnLCAn5YOF5YWB6Kix5qqU5qGI55CG5LqL5ZOhJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvY29uZmlybWVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjoh6rliqjnoa7orqTnlKjmiLcnLCAn5YOF5YWB6Kix6Ieq5YuV56K66KqN5L2/55So6ICFJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICd0ZW1wbGF0ZWVkaXRvcic6XG5cdFx0XHRcdFx0XHRsZXZlbCA9IHdpbmRvdy53Z1VMUygn5LuF5qih5p2/57yW6L6R5ZGY5ZKM566h55CG5ZGYJywgJ+WDheaooeadv+e3qOi8r+WToeWSjOeuoeeQhuWToScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3lzb3AnOlxuXHRcdFx0XHRcdFx0bGV2ZWwgPSB3aW5kb3cud2dVTFMoJ+S7heeuoeeQhuWRmCcsICflg4XnrqHnkIblk6EnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHQoe2xldmVsfSA9IHNldHRpbmdzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3RlY3Rpb25Ob2RlLnB1c2goJChgPGI+JHtsYWJlbH3vvJoke2xldmVsfTwvYj5gKVswXSk7XG5cdFx0XHRcdGlmIChNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShzZXR0aW5ncy5leHBpcnkpKSB7XG5cdFx0XHRcdFx0cHJvdGVjdGlvbk5vZGUucHVzaCh3aW5kb3cud2dVTFMoJ++8iOaXoOmZkOacn++8iScsICfvvIjnhKHpmZDmnJ/vvIknKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cHJvdGVjdGlvbk5vZGUucHVzaChcblx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn77yI6L+H5pyf77yaJywgJ++8iOmBjuacn++8micpICsgbmV3IE1vcmViaXRzLmRhdGUoc2V0dGluZ3MuZXhwaXJ5KS5jYWxlbmRhcigndXRjJyl977yJYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNldHRpbmdzLmNhc2NhZGUpIHtcblx0XHRcdFx0XHRwcm90ZWN0aW9uTm9kZS5wdXNoKHdpbmRvdy53Z1VMUygn77yI6L+e6ZSB77yJJywgJ++8iOmAo+mOlu+8iScpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcHJvdGVjdGlvbk5vZGU7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUucHJvdGVjdCwgJ3Byb3RlY3QnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSBmcmllbmRseXRhZy5qcyAqL1xuKGZ1bmN0aW9uIGZyaWVuZGx5dGFnKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiBmcmllbmRseXRhZy5qczogVGFnIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJUYWdcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBhcnRpY2xlcyBhbmQgZHJhZnRzOyBmaWxlIHBhZ2VzIHdpdGggYSBjb3JyZXNwb25kaW5nIGZpbGVcblx0ICogd2hpY2ggaXMgbG9jYWwgKG5vdCBvbiBTaGFyZSk7IGFsbCByZWRpcmVjdHNcblx0ICovXG5cdFR3aW5rbGUudGFnID0gKCkgPT4ge1xuXHRcdC8vIHJlZGlyZWN0IHRhZ2dpbmdcblx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZSA9IHdpbmRvdy53Z1VMUygn6YeN5a6a5ZCRJywgJ+mHjeaWsOWwjuWQkScpO1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZUVuID0gJ3JlZGlyZWN0Jztcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUudGFnLmNhbGxiYWNrLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKSxcblx0XHRcdFx0J2ZyaWVuZGx5LXRhZycsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6w6YeN5a6a5ZCRJywgJ+aomeiomOmHjeaWsOWwjuWQkScpXG5cdFx0XHQpO1xuXHRcdFx0Ly8gZmlsZSB0YWdnaW5nXG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYgJiZcblx0XHRcdCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgJiZcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpXG5cdFx0KSB7XG5cdFx0XHRUd2lua2xlLnRhZy5tb2RlID0gd2luZG93LndnVUxTKCfmlofku7YnLCAn5qqU5qGIJyk7XG5cdFx0XHRUd2lua2xlLnRhZy5tb2RlRW4gPSAnZmlsZSc7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHRUd2lua2xlLnRhZy5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrAnLCAn5qiZ6KiYJyksXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOaWh+S7ticsICfmqJnoqJjmqpTmoYgnKVxuXHRcdFx0KTtcblx0XHRcdC8vIGFydGljbGUvZHJhZnQgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQoWzAsIDMwMl0uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSkgJiYgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZSA9IHdpbmRvdy53Z1VMUygn5p2h55uuJywgJ+aineebricpO1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZUVuID0gJ2FydGljbGUnO1xuXHRcdFx0Ly8gQ2FuJ3QgcmVtb3ZlIHRhZ3Mgd2hlbiBub3Qgdmlld2luZyBjdXJyZW50IHZlcnNpb25cblx0XHRcdFR3aW5rbGUudGFnLmNhblJlbW92ZSA9XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpID09PSBtdy5jb25maWcuZ2V0KCd3Z1JldmlzaW9uSWQnKSAmJlxuXHRcdFx0XHQvLyBEaXNhYmxlZCBvbiBsYXRlc3QgZGlmZiBiZWNhdXNlIHRoZSBkaWZmIHNsaWRlciBjb3VsZCBiZSB1c2VkIHRvIHNsaWRlXG5cdFx0XHRcdC8vIGF3YXkgZnJvbSB0aGUgbGF0ZXN0IGRpZmYgd2l0aG91dCBjYXVzaW5nIHRoZSBzY3JpcHQgdG8gcmVsb2FkXG5cdFx0XHRcdCFtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS50YWcuY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0XHQnZnJpZW5kbHktdGFnJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDmnaHnm64nLCAn5qiZ6KiY5qKd55uuJylcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLnRhZy5jaGVja2VkVGFncyA9IFtdO1xuXHRUd2lua2xlLnRhZy5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYzMCwgVHdpbmtsZS50YWcubW9kZUVuID09PSAnYXJ0aWNsZScgPyA1MDAgOiA0MDApO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfmoIforrDorr7nva4nLCAn5qiZ6KiY6Kit5a6aJyksICdIOlRXL1BSRUYjdGFnJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3RhZycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUudGFnLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn562b6YCJ5qCH6K6w5YiX6KGo77yaJywgJ+evqemBuOaomeiomOWIl+ihqO+8micpLFxuXHRcdFx0bmFtZTogJ3F1aWNrZmlsdGVyJyxcblx0XHRcdHNpemU6ICczMCcsXG5cdFx0XHRldmVudDogZnVuY3Rpb24gZXZlbnQoKSB7XG5cdFx0XHRcdC8vIGZsdXNoIHRoZSBET00gb2YgYWxsIGV4aXN0aW5nIHVuZGVybGluZSBzcGFuc1xuXHRcdFx0XHQkYWxsQ2hlY2tib3hEaXZzLmZpbmQoJy5zZWFyY2gtaGl0JykuZWFjaCgoX2ksIGUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBsYWJlbF9lbGVtZW50ID0gZS5wYXJlbnRFbGVtZW50O1xuXHRcdFx0XHRcdC8vIFRoaXMgd291bGQgY29udmVydCA8bGFiZWw+SGVsbG8gPHNwYW4gY2xhc3M9c2VhcmNoLWhpdD53bzwvc3Bhbj5ybGQ8L2xhYmVsPlxuXHRcdFx0XHRcdC8vIHRvIDxsYWJlbD5IZWxsbyB3b3JsZDwvbGFiZWw+XG5cdFx0XHRcdFx0bGFiZWxfZWxlbWVudC5pbm5lckhUTUwgPSBsYWJlbF9lbGVtZW50LnRleHRDb250ZW50O1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKHRoaXMudmFsdWUpIHtcblx0XHRcdFx0XHQkYWxsQ2hlY2tib3hEaXZzLmhpZGUoKTtcblx0XHRcdFx0XHQkYWxsSGVhZGVycy5oaWRlKCk7XG5cdFx0XHRcdFx0Y29uc3Qgc2VhcmNoU3RyaW5nID0gdGhpcy52YWx1ZTtcblx0XHRcdFx0XHRjb25zdCBzZWFyY2hSZWdleCA9IG5ldyBSZWdFeHAobXcudXRpbC5lc2NhcGVSZWdFeHAoc2VhcmNoU3RyaW5nKSwgJ2knKTtcblx0XHRcdFx0XHQkYWxsQ2hlY2tib3hEaXZzLmZpbmQoJ2xhYmVsJykuZWFjaCgoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBsYWJlbF90ZXh0ID0gZWxlbWVudC50ZXh0Q29udGVudDtcblx0XHRcdFx0XHRcdGNvbnN0IHNlYXJjaEhpdCA9IHNlYXJjaFJlZ2V4LmV4ZWMobGFiZWxfdGV4dCk7XG5cdFx0XHRcdFx0XHRpZiAoc2VhcmNoSGl0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgW3RleHRub2RlXSA9IGVsZW1lbnQuY2hpbGROb2Rlcztcblx0XHRcdFx0XHRcdFx0cmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRleHRub2RlKTtcblx0XHRcdFx0XHRcdFx0cmFuZ2Uuc2V0U3RhcnQodGV4dG5vZGUsIHNlYXJjaEhpdC5pbmRleCk7XG5cdFx0XHRcdFx0XHRcdHJhbmdlLnNldEVuZCh0ZXh0bm9kZSwgc2VhcmNoSGl0LmluZGV4ICsgc2VhcmNoU3RyaW5nLmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IFt1bmRlcmxpbmVfc3Bhbl0gPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnc2VhcmNoLWhpdCcpXG5cdFx0XHRcdFx0XHRcdFx0LmNzcygndGV4dC1kZWNvcmF0aW9uJywgJ3VuZGVybGluZScpO1xuXHRcdFx0XHRcdFx0XHRyYW5nZS5zdXJyb3VuZENvbnRlbnRzKHVuZGVybGluZV9zcGFuKTtcblx0XHRcdFx0XHRcdFx0ZWxlbWVudC5wYXJlbnRFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyAvLyBzaG93XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5zaG93KCk7XG5cdFx0XHRcdFx0JGFsbEhlYWRlcnMuc2hvdygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHRcdHN3aXRjaCAoVHdpbmtsZS50YWcubW9kZUVuKSB7XG5cdFx0XHRjYXNlICdhcnRpY2xlJzpcblx0XHRcdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5p2h55uu57u05oqk5qCH6K6wJywgJ+aineebrue2reitt+aomeiomCcpKTtcblx0XHRcdFx0Ly8gQnVpbGQgc29ydGluZyBhbmQgbG9va3VwIG9iamVjdCBmbGF0T2JqZWN0LCB3aGljaCBpcyBhbHdheXNcblx0XHRcdFx0Ly8gbmVlZGVkIGJ1dCBhbHNvIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFscGhhYmV0aWNhbCBsaXN0XG5cdFx0XHRcdC8vIFdvdWxkIGJlIGluZmluaXRlbHkgYmV0dGVyIHdpdGggT2JqZWN0LnZhbHVlc1xuXHRcdFx0XHRUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3QgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBncm91cCBvZiBUd2lua2xlLnRhZy5hcnRpY2xlLnRhZ0xpc3QpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHN1Ymdyb3VwIG9mIGdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRpZiAoc3ViZ3JvdXAudmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHN1Ymdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W2l0ZW0udGFnXSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiAhIWl0ZW0uZXhjbHVkZU1JLFxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFtzdWJncm91cC50YWddID0ge1xuXHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBzdWJncm91cC5kZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6ICEhc3ViZ3JvdXAuZXhjbHVkZU1JLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvcnRvcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p+l55yL5YiX6KGo77yaJywgJ+aqouimluWIl+ihqO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5Y+C5pWw6K6+572u77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5YGP5aW96Kit5a6a77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUudGFnLnVwZGF0ZVNvcnRPcmRlcixcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2NhdCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aMieexu+WeiycsICfmjInpoZ7liKUnKSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IFR3aW5rbGUuZ2V0UHJlZigndGFnQXJ0aWNsZVNvcnRPcmRlcicpID09PSAnY2F0Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2FscGhhJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCd0YWdBcnRpY2xlU29ydE9yZGVyJykgPT09ICdhbHBoYScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUudGFnLmNhblJlbW92ZSkge1xuXHRcdFx0XHRcdGNvbnN0IGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0XHRkaXZFbGVtZW50LmlubmVySFRNTCA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfopoHnp7vpmaTnjrDmnInnu7TmiqTmoIforrDvvIzor7fku47lvZPliY3mnaHnm67niYjmnKzkuK3miZPlvIDigJzmoIforrDigJ3oj5zljZUnLFxuXHRcdFx0XHRcdFx0J+imgeenu+mZpOePvuaciee2reitt+aomeiomO+8jOiri+W+nuebruWJjeaineebrueJiOacrOS4reaJk+mWi+OAjOaomeiomOOAjemBuOWWridcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3VudGFnbm90aWNlJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBkaXZFbGVtZW50LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3RhZ1dvcmtBcmVhJyxcblx0XHRcdFx0XHRjbGFzc05hbWU6ICdtb3JlYml0cy1zY3JvbGxib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnbWF4LWhlaWdodDogMjhlbScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WmguWPr+iDve+8jOWQiOW5tuWFpXt7bXVsdGlwbGUgaXNzdWVzfX0nLFxuXHRcdFx0XHRcdFx0XHRcdCflpoLlj6/og73vvIzlkIjkvbXlhaV7e211bHRpcGxlIGlzc3Vlc319J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2dyb3VwJyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2dyb3VwJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfoi6XliqDlhaV7e211bHRpcGxlIGlzc3Vlc3195pSv5oyB55qE5LiJ5Liq5Lul5LiK55qE5qih5p2/77yM5omA5pyJ5pSv5oyB55qE5qih5p2/6YO95Lya6KKr5ZCI5bm25YWle3ttdWx0aXBsZSBpc3N1ZXN9feaooeadv+S4reOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeWKoOWFpXt7bXVsdGlwbGUgaXNzdWVzfX3mlK/mj7TnmoTkuInlgIvku6XkuIrnmoTmqKHmnb/vvIzmiYDmnInmlK/mj7TnmoTmqKHmnb/pg73mnIPooqvlkIjkvbXlhaV7e211bHRpcGxlIGlzc3Vlc3195qih5p2/5Lit44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmdldFByZWYoJ2dyb3VwQnlEZWZhdWx0JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+mZhOWKoOS6jue8lui+keaRmOimgeeahOWPr+mAieeQhueUse+8jOS+i+WmguaMh+WHuuadoeebruWGheWuueeahOWTquS6m+mDqOWIhuaciemXrumimOaIluenu+mZpOaooeadv+eahOeQhueUse+8jOS9huiLpeeQhueUseW+iOmVv+WImeW6lOivpeWPkeihqOWcqOiuqOiuuumhteOAgicsXG5cdFx0XHRcdFx0XHQn6ZmE5Yqg5pa857eo6Lyv5pGY6KaB55qE5Y+v6YG455CG55Sx77yM5L6L5aaC5oyH5Ye65qKd55uu5YWn5a6555qE5ZOq5Lqb6YOo5YiG5pyJ5ZWP6aGM5oiW56e76Zmk5qih5p2/55qE55CG55Sx77yM5L2G6Iul55CG55Sx5b6I6ZW35YmH5oeJ6Kmy55m86KGo5Zyo6KiO6KuW6aCB44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0c2l6ZTogJzgwJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmlsZSc6XG5cdFx0XHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aWh+S7tue7tOaKpOagh+iusCcsICfmqpTmoYjntq3orbfmqJnoqJgnKSk7XG5cdFx0XHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS50YWcuZmlsZUxpc3QpIHtcblx0XHRcdFx0XHRpZiAoZ3JvdXAuYnVpbGRGaWxlbmFtZSkge1xuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBlbCBvZiBncm91cC52YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRlbC5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+abv+aNoueahOaWh+S7tu+8micsICfmm7/mj5vnmoTmqpTmoYjvvJonKSxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6L6T5YWl5pu/5o2i5q2k5paH5Lu255qE5paH5Lu25ZCN56ew77yI5b+F5aGr77yJJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfovLjlhaXmm7/mj5vmraTmqpTmoYjnmoTmqpTmoYjlkI3nqLHvvIjlv4XloavvvIknXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBgJHtlbC52YWx1ZS5yZXBsYWNlKC8gL2csICdfJyl9RmlsZWAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGdyb3VwLmtleSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRcdFx0bGlzdDogZ3JvdXAudmFsdWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tRmlsZVRhZ0xpc3QnKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieaooeadvycsICfoh6roqILmqKHmnb8nKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21GaWxlVGFnTGlzdCcpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncmVkaXJlY3QnOiB7XG5cdFx0XHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+mHjeWumuWQkeagh+iusCcsICfph43mlrDlsI7lkJHmqJnoqJgnKSk7XG5cdFx0XHRcdGNvbnN0IGkgPSAxO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGdyb3VwIG9mIFR3aW5rbGUudGFnLnJlZGlyZWN0TGlzdCkge1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0aWQ6IGB0YWdIZWFkZXIke2l9YCxcblx0XHRcdFx0XHRcdGxhYmVsOiBncm91cC5rZXksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IGdyb3VwLnZhbHVlLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBpdGVtLnRhZyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7JHtpdGVtLnRhZ319fe+8miR7aXRlbS5kZXNjcmlwdGlvbn1gLFxuXHRcdFx0XHRcdFx0XHRcdHN1Ymdyb3VwOiBpdGVtLnN1Ymdyb3VwLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmVkaXJlY3RUYWdMaXN0JykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmqKHmnb8nLCAn6Ieq6KiC5qih5p2/JyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmVkaXJlY3RUYWdMaXN0JyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkoYFR3aW5rbGUudGFn77ya5pyq55+l5qih5byPICR7VHdpbmtsZS50YWcubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBhdHJvbGxpbmsnKS5sZW5ndGgpIHtcblx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdouS4uuW3suW3oeafpScsICfmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6UnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAncGF0cm9sJyxcblx0XHRcdFx0XHRcdG5hbWU6ICdwYXRyb2wnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRjbGFzc05hbWU6ICd0dy10YWctc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBmb3IgcXVpY2sgZmlsdGVyOlxuXHRcdCRhbGxDaGVja2JveERpdnMgPSAkKHJlc3VsdCkuZmluZCgnW25hbWUkPXRhZ3NdJykucGFyZW50KCk7XG5cdFx0JGFsbEhlYWRlcnMgPSAkKHJlc3VsdCkuZmluZCgnaDUnKTtcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuZm9jdXMoKTsgLy8gcGxhY2UgY3Vyc29yIGluIHRoZSBxdWljayBmaWx0ZXIgZmllbGQgYXMgc29vbiBhcyB3aW5kb3cgaXMgb3BlbmVkXG5cdFx0cmVzdWx0LnF1aWNrZmlsdGVyLmF1dG9jb21wbGV0ZSA9ICdvZmYnOyAvLyBkaXNhYmxlIGJyb3dzZXIgc3VnZ2VzdGlvbnNcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCAoZSkgPT4ge1xuXHRcdFx0aWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG5cdFx0XHRcdC8vIHByZXZlbnQgZW50ZXIga2V5IGZyb20gYWNjaWRlbnRhbGx5IHN1Ym1pdHRpbmcgdGhlIGZvcm1cblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ2FydGljbGUnKSB7XG5cdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MgPSBbXTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jYW5SZW1vdmUpIHtcblx0XHRcdFx0Ly8gTG9vayBmb3IgZXhpc3RpbmcgbWFpbnRlbmFuY2UgdGFncyBpbiB0aGUgbGVhZCBzZWN0aW9uIGFuZCBwdXQgdGhlbSBpbiBhcnJheVxuXHRcdFx0XHQvLyBBbGwgdGFncyBhcmUgSFRNTCB0YWJsZSBlbGVtZW50cyB0aGF0IGFyZSBkaXJlY3QgY2hpbGRyZW4gb2YgLm13LXBhcnNlci1vdXRwdXQsXG5cdFx0XHRcdC8vIGV4Y2VwdCB3aGVuIHRoZXkgYXJlIHdpdGhpbiB7e211bHRpcGxlIGlzc3Vlc319XG5cdFx0XHRcdCRib2R5XG5cdFx0XHRcdFx0LmZpbmQoJy5tdy1wYXJzZXItb3V0cHV0Jylcblx0XHRcdFx0XHQuY2hpbGRyZW4oKVxuXHRcdFx0XHRcdC5lYWNoKChfaSwgZSkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gYnJlYWsgb3V0IG9uIGVuY291bnRlcmluZyB0aGUgZmlyc3QgaGVhZGluZywgd2hpY2ggbWVhbnMgd2UgYXJlIG5vXG5cdFx0XHRcdFx0XHQvLyBsb25nZXIgaW4gdGhlIGxlYWQgc2VjdGlvblxuXHRcdFx0XHRcdFx0aWYgKGUudGFnTmFtZSA9PT0gJ0gyJykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBUaGUgYWJpbGl0eSB0byByZW1vdmUgdGFncyBkZXBlbmRzIG9uIHRoZSB0ZW1wbGF0ZSdzIHt7YW1ib3h9fSB8bmFtZT1cblx0XHRcdFx0XHRcdC8vIHBhcmFtZXRlciBiZWFyaW5nIHRoZSB0ZW1wbGF0ZSdzIGNvcnJlY3QgbmFtZSAocHJlZmVyYWJseSkgb3IgYSBuYW1lIHRoYXQgYXRcblx0XHRcdFx0XHRcdC8vIGxlYXN0IHJlZGlyZWN0cyB0byB0aGUgYWN0dWFsIG5hbWVcblx0XHRcdFx0XHRcdC8vIEFsbCB0YWdzIGhhdmUgdGhlaXIgZmlyc3QgY2xhc3MgbmFtZSBhcyBcImJveC1cIiArIHRlbXBsYXRlIG5hbWVcblx0XHRcdFx0XHRcdGlmIChlLmNsYXNzTmFtZS5pbmRleE9mKCdib3gtJykgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0aWYgKGUuY2xhc3NMaXN0WzBdID09PSAnYm94LemXrumimOadoeebricpIHtcblx0XHRcdFx0XHRcdFx0XHQkKGUpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnLmFtYm94Jylcblx0XHRcdFx0XHRcdFx0XHRcdC5lYWNoKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGVsZW1lbnQuY2xhc3NMaXN0WzBdLmluZGV4T2YoJ2JveC0nKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGJveFRhZyA9IGVsZW1lbnQuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MucHVzaChib3hUYWcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWVcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRhZyA9IGUuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLnB1c2godGFnKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8ge3tVbmNhdGVnb3JpemVkfX0gYW5kIHt7SW1wcm92ZSBjYXRlZ29yaWVzfX0gYXJlIHVzdWFsbHkgcGxhY2VkIGF0IHRoZSBlbmRcblx0XHRcdFx0aWYgKCRib2R5LmZpbmQoJy5ib3gtVW5jYXRlZ29yaXplZCcpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5wdXNoKCdVbmNhdGVnb3JpemVkJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCRib2R5LmZpbmQoJy5ib3gtSW1wcm92ZV9jYXRlZ29yaWVzJykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLnB1c2goJ0ltcHJvdmUgY2F0ZWdvcmllcycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBBZGQgc3RhdHVzIHRleHQgbm9kZSBhZnRlciBTdWJtaXQgYnV0dG9uXG5cdFx0XHRjb25zdCBzdGF0dXNOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0c3RhdHVzTm9kZS5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0c3RhdHVzTm9kZS5pZCA9ICd0dy10YWctc3RhdHVzJztcblx0XHRcdFR3aW5rbGUudGFnLnN0YXR1cyA9IHtcblx0XHRcdFx0Ly8gaW5pdGlhbCBzdGF0ZTsgZGVmaW5lZCBsaWtlIHRoaXMgYmVjYXVzZSB0aGVzZSBuZWVkIHRvIGJlIGF2YWlsYWJsZSBmb3IgcmVmZXJlbmNlXG5cdFx0XHRcdC8vIGluIHRoZSBjbGljayBldmVudCBoYW5kbGVyXG5cdFx0XHRcdG51bUFkZGVkOiAwLFxuXHRcdFx0XHRudW1SZW1vdmVkOiAwLFxuXHRcdFx0fTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy10YWctc3VibWl0JykuYWZ0ZXIoc3RhdHVzTm9kZSk7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBSZWRpcmVjdHMgYW5kIGZpbGVzOiBBZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICd0YWdzJykpIHtcblx0XHRcdFx0Z2VuZXJhdGVMaW5rcyhjaGVja2JveCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyAkYWxsQ2hlY2tib3hEaXZzIGFuZCAkYWxsSGVhZGVycyBhcmUgZGVmaW5lZCBnbG9iYWxseSwgcmF0aGVyIHRoYW4gaW4gdGhlXG5cdC8vIHF1aWNrZmlsdGVyIGV2ZW50IGZ1bmN0aW9uLCB0byBhdm9pZCBoYXZpbmcgdG8gcmVjb21wdXRlIHRoZW0gb24gZXZlcnkga2V5ZG93blxuXHRsZXQgJGFsbENoZWNrYm94RGl2cztcblx0bGV0ICRhbGxIZWFkZXJzO1xuXHRUd2lua2xlLnRhZy51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUudGFnLmNoZWNrZWRUYWdzID0gZm9ybS5nZXRDaGVja2VkKCd0YWdzJyk7XG5cdFx0Y29uc3QgY29udGFpbmVyID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdmcmFnbWVudCcsXG5cdFx0fSk7XG5cdFx0Ly8gZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBjaGVja2JveCwgd2l0aCBhcHByb3ByaWF0ZSBzdWJncm91cCBpZiBuZWVkZWRcblx0XHRjb25zdCBtYWtlQ2hlY2tib3ggPSAodGFnLCBkZXNjcmlwdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgY2hlY2tib3ggPSB7XG5cdFx0XHRcdHZhbHVlOiB0YWcsXG5cdFx0XHRcdGxhYmVsOiBge3ske3RhZ319fTogJHtkZXNjcmlwdGlvbn1gLFxuXHRcdFx0fTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jaGVja2VkVGFncy5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoICh0YWcpIHtcblx0XHRcdFx0Y2FzZSAnRXhwZXJ0IG5lZWRlZCc6XG5cdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAgPSBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflk6rkuKrpoobln5/nmoTkuJPlrrbvvIjlv4XloavvvInvvJonLCAn5ZOq5YCL6aCY5Z+f55qE5bCI5a6277yI5b+F5aGr77yJ77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5b+F5aGr77yM5Y+v5Y+C6ICDIENhdGVnb3J5OumcgOimgeS4k+S4muS6uuWjq+WFs+azqOeahOmhtemdoiDkvb/nlKjnjrDlrZjnmoTliIbnsbvjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflv4XloavvvIzlj6/lj4PogIMgQ2F0ZWdvcnk66ZyA6KaB5bCI5qWt5Lq65aOr6Zec5rOo55qE6aCB6Z2iIOS9v+eUqOePvuWtmOeahOWIhumhnuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQyJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZOq5Liq6aKG5Z+f55qE5LiT5a6277yaJywgJ+WTquWAi+mgmOWfn+eahOWwiOWutu+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOWPr+WPguiAgyBDYXRlZ29yeTrpnIDopoHkuJPkuJrkurrlo6vlhbPms6jnmoTpobXpnaIg5L2/55So546w5a2Y55qE5YiG57G744CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5Y+v5Y+D6ICDIENhdGVnb3J5OumcgOimgeWwiOalreS6uuWjq+mXnOazqOeahOmggemdoiDkvb/nlKjnj77lrZjnmoTliIbpoZ7jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZXhwZXJ0MycsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WTquS4qumihuWfn+eahOS4k+Wutu+8micsICflk6rlgIvpoJjln5/nmoTlsIjlrrbvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzlj6/lj4LogIMgQ2F0ZWdvcnk66ZyA6KaB5LiT5Lia5Lq65aOr5YWz5rOo55qE6aG16Z2iIOS9v+eUqOeOsOWtmOeahOWIhuexu+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOWPr+WPg+iAgyBDYXRlZ29yeTrpnIDopoHlsIjmpa3kurrlo6vpl5zms6jnmoTpoIHpnaIg5L2/55So54++5a2Y55qE5YiG6aGe44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdNZXJnZSc6XG5cdFx0XHRcdGNhc2UgJ01lcmdlIGZyb20nOlxuXHRcdFx0XHRjYXNlICdNZXJnZSB0byc6IHtcblx0XHRcdFx0XHRsZXQgb3RoZXJUYWdOYW1lID0gJ01lcmdlJztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdG90aGVyVGFnTmFtZSA9ICdNZXJnZSB0byc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgZnJvbSc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbWVyZ2VUYXJnZXQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhbbku5bmnaHnm67vvJonLCAn5YW25LuW5qKd55uu77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5aaC5oyH5a6a5aSa5Liq5p2h55uu77yM6K+355So566h6YGT56ym5YiG6ZqU77ya5p2h55uu55SyfOadoeebruS5mScsXG5cdFx0XHRcdFx0XHRcdFx0J+WmguaMh+WumuWkmuWAi+aineebru+8jOiri+eUqOeuoemBk+espuWIhumalO+8muaineebrueUsnzmop3nm67kuZknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ21lcmdlVGFnT3RoZXInLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGDnlKh7eyR7b3RoZXJUYWdOYW1lfSR7d2luZG93LndnVUxTKCd9feagh+iusOWFtuS7luadoeebricsICd9feaomeiomOWFtuS7luaineebricpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQn5LuF5Zyo5Y+q6L6T5YWl5LqG5LiA5Liq5p2h55uu5ZCN5pe25Y+v55SoJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+WDheWcqOWPqui8uOWFpeS6huS4gOWAi+aineebruWQjeaZguWPr+eUqCdcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdtZXJnZVJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0YOWQiOW5tueQhueUse+8iOS8muiiq+i0tOS4iiR7dGFnID09PSAnTWVyZ2UgdG8nID8gJ+WFtuS7licgOiAn6L+ZJ33mnaHnm67nmoTorqjorrrpobXvvInvvJpgLFxuXHRcdFx0XHRcdFx0XHRcdGDlkIjkvbXnkIbnlLHvvIjmnIPooqvosrzkuIoke3RhZyA9PT0gJ01lcmdlIHRvJyA/ICflhbbku5YnIDogJ+mAmSd95qKd55uu55qE6KiO6KuW6aCB77yJ77yaYFxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOS9huW8uueDiOaOqOiNkOOAguWmguS4jemcgOimgeivt+eVmeepuuOAguS7heWcqOWPqui+k+WFpeS6huS4gOS4quadoeebruWQjeaXtuWPr+eUqOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOS9huW8t+eDiOaOqOiWpuOAguWmguS4jemcgOimgeiri+eVmeepuuOAguWDheWcqOWPqui8uOWFpeS6huS4gOWAi+aineebruWQjeaZguWPr+eUqOOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlICdNaXNzaW5nIGluZm9ybWF0aW9uJzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdG5hbWU6ICdtaXNzaW5nSW5mb3JtYXRpb24nLFxuXHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8uuWwkeeahOWGheWuue+8iOW/heWhq++8ie+8micsICfnvLrlsJHnmoTlhaflrrnvvIjlv4XloavvvInvvJonKSxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5b+F5aGr77yM5pi+56S65Li64oCc57y65bCR5pyJ5YWz4oCm4oCm55qE5L+h5oGv44CC4oCdJywgJ+W/heWhq++8jOmhr+ekuueCuuOAjOe8uuWwkeaciemXnOKApuKApueahOizh+ioiuOAguOAjScpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ05vdGFiaWxpdHknOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0ge1xuXHRcdFx0XHRcdFx0bmFtZTogJ25vdGFiaWxpdHknLFxuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eX1977yaJHt3aW5kb3cud2dVTFMoJ+mAmueUqOeahOWFs+azqOW6puaMh+W8lScsICfpgJrnlKjnmoTpl5zms6jluqbmjIflvJUnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxBc3Ryb31977yaJHt3aW5kb3cud2dVTFMoJ+WkqeS9kycsICflpKnpq5QnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnQXN0cm8nLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8QmlvZ3JhcGhpZXN9fe+8miR7d2luZG93LndnVUxTKCfkurrniankvKDorrAnLCAn5Lq654mp5YKz6KiYJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0Jpb2dyYXBoaWVzJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEJvb2t9fe+8miR7d2luZG93LndnVUxTKCfkuabnsY0nLCAn5pu457GNJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0Jvb2snLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8Q3ljbG9uZX1977yaJHt3aW5kb3cud2dVTFMoJ+awlOaXiycsICfmsKPml4snKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnQ3ljbG9uZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxGaWN0aW9ufX3vvJoke3dpbmRvdy53Z1VMUygn6Jma5p6E5LqL54mpJywgJ+iZm+ani+S6i+eJqScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdGaWN0aW9uJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEdlb2dyYXBoaWN9fe+8miR7d2luZG93LndnVUxTKCflnLDnkIbnibnlvoEnLCAn5Zyw55CG54m55b61Jyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0dlb2dyYXBoaWMnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8R2VvbWV0cnl9fe+8miR7d2luZG93LndnVUxTKCflh6DkvZXlm77lvaInLCAn5bm+5L2V5ZyW5b2iJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0dlb21ldHJ5Jyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEludmVudGlvbn1977yaJHt3aW5kb3cud2dVTFMoJ+WPkeaYjuOAgeeglOepticsICfnmbzmmI7jgIHnoJTnqbYnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnSW52ZW50aW9uJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fE11c2ljfX3vvJoke3dpbmRvdy53Z1VMUygn6Z+z5LmQJywgJ+mfs+aogicpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdNdXNpYycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxOdW1iZXJzfX3vvJoke3dpbmRvdy53Z1VMUygn5pWw5a2XJywgJ+aVuOWtlycpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdOdW1iZXJzJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fE9yZ2FuaXphdGlvbnN9fe+8miR7d2luZG93LndnVUxTKCfnu4Tnu4cnLCAn57WE57mUJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ09yZ2FuaXphdGlvbnMnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8UHJvcGVydHl9fe+8miR7d2luZG93LndnVUxTKCfmgKfotKjooagnLCAn5oCn6LOq6KGoJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ1Byb3BlcnR5Jyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiAne3tOb3RhYmlsaXR5fFRyYWZmaWN9fe+8muS6pOmAmicsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdUcmFmZmljJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fFdlYn1977yaJHt3aW5kb3cud2dVTFMoJ+e9keermeOAgee9kee7nOWGheWuuScsICfntrLnq5njgIHntrLot6/lhaflrrknKX3vvIjpnZ7mraPlvI/mjIflvJXvvIlgLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnV2ViJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnUmVxdWVzdGVkIG1vdmUnOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbW92ZVRhcmdldCcsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWsOWQjeensO+8micsICfmlrDlkI3nqLHvvJonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdtb3ZlUmVhc29uJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn56e75Yqo55CG55Sx77yI5Lya6KKr57KY6LS06K+l5p2h55uu55qE6K6o6K666aG177yJ77yaJyxcblx0XHRcdFx0XHRcdFx0XHQn56e75YuV55CG55Sx77yI5pyD6KKr6LK85LiK6Kmy5qKd55uu55qE6KiO6KuW6aCB77yJ77yaJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOS9huW8uueDiOaOqOiNkOOAguWmguS4jemcgOimgeivt+eVmeepuuOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOS9huW8t+eDiOaOqOiWpuOAguWmguS4jemcgOimgeiri+eVmeepuuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnU3BsaXQnOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGFyZ2V0MScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWQjTHvvJonLCAn6aCB6Z2i5ZCNMe+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WPr+mAieOAgicsICflj6/pgbjjgIInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICd0YXJnZXQyJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5ZCNMu+8micsICfpoIHpnaLlkI0y77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5Y+v6YCJ44CCJywgJ+WPr+mBuOOAgicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3RhcmdldDMnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLlkI0z77yaJywgJ+mggemdouWQjTPvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflj6/pgInjgIInLCAn5Y+v6YG444CCJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0NsZWFudXAnOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnY2xlYW51cFJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn6ZyA6KaB5riF55CG55qE55CG55SxJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzkvYblvLrng4jmjqjojZDjgILlpoLkuI3pnIDopoHor7fnlZnnqbrjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgbjvvIzkvYblvLfng4jmjqjolqbjgILlpoLkuI3pnIDopoHoq4vnlZnnqbrjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY2hlY2tib3g7XG5cdFx0fTtcblx0XHRjb25zdCBtYWtlQ2hlY2tib3hlc0ZvckFscmVhZHlQcmVzZW50VGFncyA9ICgpID0+IHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0aWQ6ICd0YWdIZWFkZXIwJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey5pS+572u55qE57u05oqk5qCH6K6wJywgJ+W3suaUvue9rueahOe2reitt+aomeiomCcpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBzdWJkaXYgPSBjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdGlkOiAndGFnU3ViZGl2MCcsXG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGNoZWNrYm94ZXMgPSBbXTtcblx0XHRcdGNvbnN0IHVuQ2hlY2tlZFRhZ3MgPSBlLnRhcmdldC5mb3JtLmdldFVuY2hlY2tlZCgnZXhpc3RpbmdUYWdzJyk7XG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MpIHtcblx0XHRcdFx0Y29uc3QgY2hlY2tib3ggPSB7XG5cdFx0XHRcdFx0dmFsdWU6IHRhZyxcblx0XHRcdFx0XHRsYWJlbDogYHt7JHt0YWd9fX0ke1xuXHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ11cblx0XHRcdFx0XHRcdFx0PyBgOiAke1R3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmRlc2NyaXB0aW9ufWBcblx0XHRcdFx0XHRcdFx0OiAnJ1xuXHRcdFx0XHRcdH1gLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICF1bkNoZWNrZWRUYWdzLmluY2x1ZGVzKHRhZyksXG5cdFx0XHRcdH07XG5cdFx0XHRcdGNoZWNrYm94ZXMucHVzaChjaGVja2JveCk7XG5cdFx0XHR9XG5cdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2V4aXN0aW5nVGFncycsXG5cdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdGlmIChzb3J0b3JkZXIgPT09ICdjYXQnKSB7XG5cdFx0XHQvLyBjYXRlZ29yaWNhbCBzb3J0IG9yZGVyXG5cdFx0XHQvLyBmdW5jdGlvbiB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHRhZ3MgYW5kIGNyZWF0ZSBhIGNoZWNrYm94IGZvciBlYWNoIG9uZVxuXHRcdFx0Y29uc3QgZG9DYXRlZ29yeUNoZWNrYm94ZXMgPSAoc3ViZGl2LCBzdWJncm91cCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzdWJncm91cCkge1xuXHRcdFx0XHRcdGlmICghVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmluY2x1ZGVzKGl0ZW0udGFnKSkge1xuXHRcdFx0XHRcdFx0Y2hlY2tib3hlcy5wdXNoKG1ha2VDaGVja2JveChpdGVtLnRhZywgaXRlbS5kZXNjcmlwdGlvbikpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRsaXN0OiBjaGVja2JveGVzLFxuXHRcdFx0XHR9KTtcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0bWFrZUNoZWNrYm94ZXNGb3JBbHJlYWR5UHJlc2VudFRhZ3MoKTtcblx0XHRcdH1cblx0XHRcdGxldCBpID0gMTtcblx0XHRcdC8vIGdvIHRocm91Z2ggZWFjaCBjYXRlZ29yeSBhbmQgc3ViLWNhdGVnb3J5IGFuZCBhcHBlbmQgbGlzdHMgb2YgY2hlY2tib3hlc1xuXHRcdFx0Zm9yIChjb25zdCBncm91cCBvZiBUd2lua2xlLnRhZy5hcnRpY2xlLnRhZ0xpc3QpIHtcblx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0aWQ6IGB0YWdIZWFkZXIke2l9YCxcblx0XHRcdFx0XHRsYWJlbDogZ3JvdXAua2V5LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3Qgc3ViZGl2ID0gY29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6IGB0YWdTdWJkaXYke2krK31gLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGdyb3VwLnZhbHVlWzBdLnRhZykge1xuXHRcdFx0XHRcdGRvQ2F0ZWdvcnlDaGVja2JveGVzKHN1YmRpdiwgZ3JvdXAudmFsdWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvciAoY29uc3Qgc3ViZ3JvdXAgb2YgZ3JvdXAudmFsdWUpIHtcblx0XHRcdFx0XHRcdHN1YmRpdi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IFtNb3JlYml0cy5odG1sTm9kZSgnYicsIHN1Ymdyb3VwLmtleSldLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIHN1Ymdyb3VwLnZhbHVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYWxwaGFiZXRpY2FsIHNvcnQgb3JkZXJcblx0XHRcdGlmIChUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRtYWtlQ2hlY2tib3hlc0ZvckFscmVhZHlQcmVzZW50VGFncygpO1xuXHRcdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRpZDogJ3RhZ0hlYWRlcjEnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WPr+eUqOeahOe7tOaKpOagh+iusCcsICflj6/nlKjnmoTntq3orbfmqJnoqJgnKSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBBdm9pZCByZXBlYXRlZGx5IHJlc29ydGluZ1xuXHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5hbHBoYWJldGljYWxMaXN0IHx8PSBPYmplY3Qua2V5cyhUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3QpLnNvcnQoKTtcblx0XHRcdGNvbnN0IGNoZWNrYm94ZXMgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIFR3aW5rbGUudGFnLmFydGljbGUuYWxwaGFiZXRpY2FsTGlzdCkge1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0Y2hlY2tib3hlcy5wdXNoKG1ha2VDaGVja2JveCh0YWcsIFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmRlc2NyaXB0aW9uKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gYXBwZW5kIGFueSBjdXN0b20gdGFnc1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2N1c3RvbVRhZ0xpc3QnKS5sZW5ndGgpIHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmdldFByZWYoJ2N1c3RvbVRhZ0xpc3QnKS5tYXAoKGVsKSA9PiB7XG5cdFx0XHRcdFx0ZWwuY2hlY2tlZCA9IFR3aW5rbGUudGFnLmNoZWNrZWRUYWdzLmluY2x1ZGVzKGVsLnZhbHVlKTtcblx0XHRcdFx0XHRyZXR1cm4gZWw7XG5cdFx0XHRcdH0pLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0ICR3b3JrYXJlYSA9ICQoZm9ybSkuZmluZCgnI3RhZ1dvcmtBcmVhJyk7XG5cdFx0Y29uc3QgcmVuZGVyZWQgPSBjb250YWluZXIucmVuZGVyKCk7XG5cdFx0JHdvcmthcmVhLmVtcHR5KCkuYXBwZW5kKHJlbmRlcmVkKTtcblx0XHQvLyBmb3IgcXVpY2sgZmlsdGVyOlxuXHRcdCRhbGxDaGVja2JveERpdnMgPSAkd29ya2FyZWEuZmluZCgnW25hbWU9dGFnc10sIFtuYW1lPWV4aXN0aW5nVGFnc10nKS5wYXJlbnQoKTtcblx0XHQkYWxsSGVhZGVycyA9ICR3b3JrYXJlYS5maW5kKCdoNSwgLnF1aWNrZm9ybURlc2NyaXB0aW9uJyk7XG5cdFx0Zm9ybS5xdWlja2ZpbHRlci52YWx1ZSA9ICcnOyAvLyBjbGVhciBzZWFyY2gsIGJlY2F1c2UgdGhlIHNlYXJjaCByZXN1bHRzIGFyZSBub3QgcHJlc2VydmVkIG92ZXIgbW9kZSBjaGFuZ2Vcblx0XHRmb3JtLnF1aWNrZmlsdGVyLmZvY3VzKCk7XG5cdFx0Ly8gc3R5bGUgYWRqdXN0bWVudHNcblx0XHQkd29ya2FyZWEuZmluZCgnaDUnKS5jc3Moe1xuXHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMTAlJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnaDU6bm90KDpmaXJzdC1jaGlsZCknKS5jc3Moe1xuXHRcdFx0J21hcmdpbi10b3AnOiAnMWVtJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnZGl2JykuZmlsdGVyKCc6aGFzKHNwYW4ucXVpY2tmb3JtRGVzY3JpcHRpb24pJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzAuNGVtJyxcblx0XHR9KTtcblx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhmb3JtLCAnZXhpc3RpbmdUYWdzJykpIHtcblx0XHRcdGdlbmVyYXRlTGlua3MoY2hlY2tib3gpO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhmb3JtLCAndGFncycpKSB7XG5cdFx0XHRnZW5lcmF0ZUxpbmtzKGNoZWNrYm94KTtcblx0XHR9XG5cdFx0Ly8gdGFsbHkgdGFncyBhZGRlZC9yZW1vdmVkLCB1cGRhdGUgc3RhdHVzTm9kZSB0ZXh0XG5cdFx0Y29uc3Qgc3RhdHVzTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0dy10YWctc3RhdHVzJyk7XG5cdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnc10sIFtuYW1lPWV4aXN0aW5nVGFnc10nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAodGhpcy5uYW1lID09PSAndGFncycpIHtcblx0XHRcdFx0VHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkICs9IHRoaXMuY2hlY2tlZCA/IDEgOiAtMTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5uYW1lID09PSAnZXhpc3RpbmdUYWdzJykge1xuXHRcdFx0XHRUd2lua2xlLnRhZy5zdGF0dXMubnVtUmVtb3ZlZCArPSB0aGlzLmNoZWNrZWQgPyAtMSA6IDE7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBmaXJzdFBhcnQgPSBg5Yqg5YWlJHtUd2lua2xlLnRhZy5zdGF0dXMubnVtQWRkZWR9JHt3aW5kb3cud2dVTFMoJ+S4quagh+iusCcsICflgIvmqJnoqJgnKX1gO1xuXHRcdFx0Y29uc3Qgc2Vjb25kUGFydCA9IGDnp7vpmaQke1R3aW5rbGUudGFnLnN0YXR1cy5udW1SZW1vdmVkfSR7d2luZG93LndnVUxTKCfkuKrmoIforrAnLCAn5YCL5qiZ6KiYJyl9YDtcblx0XHRcdHN0YXR1c05vZGUudGV4dENvbnRlbnQgPVxuXHRcdFx0XHQoVHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkID8gYCAgJHtmaXJzdFBhcnR9YCA6ICcnKSArXG5cdFx0XHRcdChUd2lua2xlLnRhZy5zdGF0dXMubnVtUmVtb3ZlZCA/IChUd2lua2xlLnRhZy5zdGF0dXMubnVtQWRkZWQgPyAn77ybJyA6ICcgICcpICsgc2Vjb25kUGFydCA6ICcnKTtcblx0XHR9KTtcblx0fTtcblx0LyoqXG5cdCAqIEFkZHMgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdCAqXG5cdCAqIEBwYXJhbSB7TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnR9IGNoZWNrYm94ICBhc3NvY2lhdGVkIHdpdGggdGhlIHRlbXBsYXRlXG5cdCAqL1xuXHRjb25zdCBnZW5lcmF0ZUxpbmtzID0gKGNoZWNrYm94KSA9PiB7XG5cdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgJz4nKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndGFnLXRlbXBsYXRlLWxpbmsnKTtcblx0XHRjb25zdCB0YWduYW1lID0gY2hlY2tib3gudmFsdWVzO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKFxuXHRcdFx0J2hyZWYnLFxuXHRcdFx0bXcudXRpbC5nZXRVcmwoXG5cdFx0XHRcdCh0YWduYW1lLmluY2x1ZGVzKCc6JykgPyAnJyA6ICdUZW1wbGF0ZTonKSArXG5cdFx0XHRcdFx0KHRhZ25hbWUuaW5jbHVkZXMoJ3wnKSA/IHRhZ25hbWUuc2xpY2UoMCwgdGFnbmFtZS5pbmRleE9mKCd8JykpIDogdGFnbmFtZSlcblx0XHRcdClcblx0XHQpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0JChjaGVja2JveCkucGFyZW50KCkuYXBwZW5kKFsnXFx1MDBBMCcsIGxpbmtdKTtcblx0fTtcblx0Ly8gVGFncyBmb3IgQVJUSUNMRVMgc3RhcnQgaGVyZVxuXHRUd2lua2xlLnRhZy5hcnRpY2xlID0ge307XG5cdC8vIFRhZ3MgYXJyYW5nZWQgYnkgY2F0ZWdvcnk7IHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYWxwaGFiZXRpY2FsIGxpc3QsXG5cdC8vIGJ1dCB0YWdzIHNob3VsZCBiZSBpbiBhbHBoYWJldGljYWwgb3JkZXIgd2l0aGluIHRoZSBjYXRlZ29yaWVzXG5cdC8vIGV4Y2x1ZGVNSTogdHJ1ZSBpbmRpY2F0ZSBhIHRhZyB0aGF0ICpkb2VzIG5vdCogd29yayBpbnNpZGUge3ttdWx0aXBsZSBpc3N1ZXN9fVxuXHQvLyBBZGQgbmV3IGNhdGVnb3JpZXMgd2l0aCBkaXNjcmV0aW9uIC0gdGhlIGxpc3QgaXMgbG9uZyBlbm91Z2ggYXMgaXMhXG5cdFR3aW5rbGUudGFnLmFydGljbGUudGFnTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5riF55CG5ZKM57u05oqk5qih5p2/JywgJ+a4heeQhuWSjOe2reitt+aooeadvycpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfluLjop4TmuIXnkIYnLCAn5bi46KaP5riF55CGJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ2xlYW51cCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemcgOimgei/m+ihjOa4heeQhu+8jOS7peespuWQiOacieWFveaho+ahiOmmhueahOi0qOmHj+agh+WHhicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemcgOimgemAsuihjOa4heeQhu+8jOS7peespuWQiOacieeNuOaqlOahiOmkqOeahOizqumHj+aomea6lidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NsZWFudXAgcmV3cml0ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S4jeespuWQiOacieWFveaho+ahiOmmhueahOi0qOmHj+agh+WHhu+8jOmcgOimgeWujOWFqOmHjeWGmScsXG5cdFx0XHRcdFx0XHRcdFx0J+S4jeespuWQiOacieeNuOaqlOahiOmkqOeahOizqumHj+aomea6lu+8jOmcgOimgeWujOWFqOmHjeWvqydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NsZWFudXAtamFyZ29uJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6L+H5aSa6KGM6K+d5oiW5LiT5Lia5pyv6K+t77yM5Y+v6IO96ZyA6KaB566A5YyW5oiW5o+Q5Ye66L+b5LiA5q2l6Kej6YeKJyxcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6YGO5aSa6KGM6Kmx5oiW5bCI5qWt6KGT6Kqe77yM5Y+v6IO96ZyA6KaB57Ch5YyW5oiW5o+Q5Ye66YCy5LiA5q2l6Kej6YeLJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ29weSBlZGl0Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57yW5L+u77yM5Lul56Gu5L+d5paH5rOV44CB55So6K+N44CB6K+t5rCU44CB5qC85byP44CB5qCH54K5562J5L2/55So5oGw5b2TJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57eo5L+u77yM5Lul56K65L+d5paH5rOV44CB55So6Kme44CB6Kqe5rCj44CB5qC85byP44CB5qiZ6bue562J5L2/55So5oGw55W2J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WPr+iDveWkmuS9meeahOWGheWuuScsICflj6/og73lpJrppJjnmoTlhaflrrknKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDb3B5cGFzdGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflhoXlrrnlj6/og73mmK/ku47mn5DkuKrmnaXmupDlpITmi7fotJ3lkI7nspjotLQnLFxuXHRcdFx0XHRcdFx0XHRcdCflhaflrrnlj6/og73mmK/lvp7mn5DlgIvkvobmupDomZXmi7fosp3lvozosrzkuIonXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdFeHRlcm5hbCBsaW5rcycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWklumDqOmTvuaOpeeahOaWueW8j+WPr+iDveS4jeespuWQiOacieWFveaho+ahiOmmhueahOadoeS+iycsXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWklumDqOmAo+e1kOeahOaWueW8j+WPr+iDveS4jeespuWQiOacieeNuOaqlOahiOmkqOeahOaineS+iydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ05vbi1mcmVlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO96L+H5aSa5oiW5LiN5b2T5Zyw5L2/55So5LqG5Y+X6JGX5L2c5p2D5L+d5oqk55qE5paH5a2X44CB5Zu+5YOP5oiW5aSa5aqS5L2T5paH5Lu2Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO96YGO5aSa5oiW5LiN55W25Zyw5L2/55So5LqG5Y+X54mI5qyK5L+d6K2355qE5paH5a2X44CB5ZyW5YOP5oiW5aSa5aqS6auU5qqU5qGIJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+e7k+aehOWSjOWvvOiogCcsICfntZDmp4vlkozlsI7oqIAnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdMZWFkIHRvbyBsb25nJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+86KiA6YOo5YiG5Lmf6K646L+H5LqO5YaX6ZW/JywgJ+WwjuiogOmDqOWIhuS5n+iosemBjuaWvOWGl+mVtycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTGVhZCB0b28gc2hvcnQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflr7zoqIDpg6jliIbkuZ/orrjkuI3otrPku6XmpoLmi6zlhbblhoXlrrknLCAn5bCO6KiA6YOo5YiG5Lmf6Kix5LiN6Laz5Lul5qaC5ous5YW25YWn5a65JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdWZXJ5IGxvbmcnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflj6/og73ov4fkuo7lhpfplb8nLCAn5Y+v6IO96YGO5pa85YaX6ZW3JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6Jma5p6E5L2c5ZOB55u45YWz5riF55CGJywgJ+iZm+ani+S9nOWTgeebuOmXnOa4heeQhicpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0luLXVuaXZlcnNlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5bCP6K+05pWF5LqL5YaF55qE6KeC54K55o+P6L+w5LiA5Liq6Jma5p6E5LqL54mpJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5bCP6Kqq5pWF5LqL5YWn55qE6KeA6bue5o+P6L+w5LiA5YCL6Jmb5qeL5LqL54mpJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTG9uZyBwbG90Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95YyF5ZCr6L+H5LqO6K+m57uG55qE5Ymn5oOF5pGY6KaBJywgJ+WPr+iDveWMheWQq+mBjuaWvOips+e0sOeahOWKh+aDheaRmOimgScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfluLjop4TmnaHnm67pl67popgnLCAn5bi46KaP5qKd55uu5ZWP6aGMJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiAn6YeN6KaB5oCn5ZKM55+l5ZCN5bqmJyxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb3RhYmlsaXR5Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95LiN56ym5ZCI6YCa55So5YWz5rOo5bqm5oyH5byVJywgJ+WPr+iDveS4jeespuWQiOmAmueUqOmXnOazqOW6puaMh+W8lScpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb3RhYmlsaXR5IFVucmVmZXJlbmNlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWFt+Wkh+WFs+azqOW6pu+8jOS9humcgOimgeadpea6kOWKoOS7peW9sOaYvicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWFt+WCmemXnOazqOW6pu+8jOS9humcgOimgeS+hua6kOWKoOS7peW9sOmhrydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflhpnkvZzpo47moLwnLCAn5a+r5L2c6aKo5qC8JyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQWR2ZXJ0Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57G75Ly85bm/5ZGK5oiW5a6j5Lyg5oCn5YaF5a65JywgJ+mhnuS8vOW7o+WRiuaIluWuo+WCs+aAp+WFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnRmFucG92Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57G75Ly854ix5aW96ICF572R6aG1JywgJ+mhnuS8vOaEm+WlveiAhee2sumggScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSG93LXRvJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5YyF5ZCr5oyH5Y2X5oiW5pWZ5a2m5YaF5a65JywgJ+WMheWQq+aMh+WNl+aIluaVmeWtuOWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSW5hcHByb3ByaWF0ZSBwZXJzb24nLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjkuI3pgILlvZPnmoTnrKzkuIDkurrnp7DlkoznrKzkuozkurrnp7AnLFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjkuI3pgannlbbnmoTnrKzkuIDkurrnqLHlkoznrKzkuozkurrnqLEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOZXdzcmVsZWFzZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+mYheivu+i1t+adpeWDj+aYr+aWsOmXu+eov+WPiuWMheWQq+i/h+W6pueahOWuo+S8oOaAp+ivreiwgycsXG5cdFx0XHRcdFx0XHRcdFx0J+mWseiugOi1t+S+huWDj+aYr+aWsOiBnueov+WPiuWMheWQq+mBjuW6pueahOWuo+WCs+aAp+iqnuiqvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1Byb3NlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LqG5pel5pyf5oiW5pe26Ze05YiX6KGo5byP6K6w6L+w77yM6ZyA6KaB5pS55YaZ5Li66L+e6LSv55qE5Y+Z6L+w5oCn5paH5a2XJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LqG5pel5pyf5oiW5pmC6ZaT5YiX6KGo5byP6KiY6L+w77yM6ZyA6KaB5pS55a+r54K66YCj6LKr55qE5pWY6L+w5oCn5paH5a2XJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnUmV2aWV3Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZiF6K+76LW35p2l57G75Ly86K+E6K6677yM6ZyA6KaB5riF55CGJywgJ+mWseiugOi1t+S+humhnuS8vOipleirlu+8jOmcgOimgea4heeQhicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVG9uZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivreiwg+aIlumjjuagvOWPr+iDveS4jemAguWQiOeZvuenkeWFqOS5pueahOWGmeS9nOaWueW8jycsXG5cdFx0XHRcdFx0XHRcdFx0J+iqnuiqv+aIlumiqOagvOWPr+iDveS4jemBqeWQiOeZvuenkeWFqOabuOeahOWvq+S9nOaWueW8jydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflhoXlrrknLCAn5YWn5a65JyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHt0YWc6ICdNaXNzaW5nIGluZm9ybWF0aW9uJywgZGVzY3JpcHRpb246ICfnvLrlsJHlv4XopoHnmoTkv6Hmga8nfSwgLy8gdGhlc2UgdGhyZWUgaGF2ZSBhIHN1Ymdyb3VwIHdpdGggc2V2ZXJhbCBvcHRpb25zXG5cdFx0XHRcdFx0XHR7dGFnOiAnU3Vic3R1YicsIGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+i/h+S6juefreWwjycsICfpgY7mlrznn63lsI8nKSwgZXhjbHVkZU1JOiB0cnVlfSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVW5lbmN5Y2xvcGVkaWMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflj6/og73kuI3pgILlkIjlhpnlhaXnmb7np5HlhajkuaYnLCAn5Y+v6IO95LiN6YGp5ZCI5a+r5YWl55m+56eR5YWo5pu4JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5L+h5oGv5ZKM57uG6IqCJywgJ+izh+ioiuWSjOe0sOevgCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0V4cGVydCBuZWVkZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHnsr7pgJrmiJbnhp/mgonmnKzkuLvpopjnmoTkuJPkuJrkurrlo6vvvIjkuJPlrrbvvInlj4LkuI7lj4rljY/liqnnvJbovpEnLFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHnsr7pgJrmiJbnhp/mgonmnKzkuLvpoYznmoTlsIjmpa3kurrlo6vvvIjlsIjlrrbvvInlj4PoiIflj4rljZTliqnnt6jovK8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdPdmVybHkgZGV0YWlsZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfljIXlkKvlpKrlpJrov4fluqbnu4boioLlhoXlrrknLCAn5YyF5ZCr5aSq5aSa6YGO5bqm57Sw56+A5YWn5a65JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdUcml2aWEnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflupTpgb/lhY3mnInpmYjliJfmnYLpobnjgIHnkJDnoo7otYTmlpnnmoTpg6jliIYnLFxuXHRcdFx0XHRcdFx0XHRcdCfmh4npgb/lhY3mnInpmbPliJfpm5zpoIXjgIHnkaPnoo7os4fmlpnnmoTpg6jliIYnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5pe26Ze05oCnJywgJ+aZgumWk+aApycpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0N1cnJlbnQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCforrDov7DmlrDpl7vliqjmgIEnLCAn6KiY6L+w5paw6IGe5YuV5oWLJyksXG5cdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VwZGF0ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W9k+WJjeadoeebruaIlueroOiKgumcgOimgeabtOaWsCcsICfnlbbliY3mop3nm67miJbnq6Dnr4DpnIDopoHmm7TmlrAnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflrqLop4LmgKflkozkuovlrp7lh4bnoa7mgKcnLCAn5a6i6KeA5oCn5ZKM5LqL5a+m5rqW56K65oCnJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQXV0b2Jpb2dyYXBoeScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+exu+S8vOS4gOevh+iHquS8oO+8jOaIluWGheWuueS4u+imgeeUseadoeebruaPj+i/sOeahOW9k+S6i+S6uuaIlue7hOe7h+aSsOWGmeOAgee8lui+kScsXG5cdFx0XHRcdFx0XHRcdFx0J+mhnuS8vOS4gOevh+iHquWCs++8jOaIluWFp+WuueS4u+imgeeUseaineebruaPj+i/sOeahOeVtuS6i+S6uuaIlue1hOe5lOaSsOWvq+OAgee3qOi8rydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NPSScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S4u+imgei0oeeMruiAheS4juacrOadoeebruaJgOWuo+aJrOeahOWGheWuueWPr+iDveWtmOWcqOWIqeebiuWGsueqgScsXG5cdFx0XHRcdFx0XHRcdFx0J+S4u+imgeiyoueNu+iAheiIh+acrOaineebruaJgOWuo+aPmueahOWFp+WuueWPr+iDveWtmOWcqOWIqeebiuihneeqgSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0Rpc3B1dGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5YaF5a6555aR5qyg5YeG56Gu77yM5pyJ5b6F5p+l6K+BJywgJ+WFp+WuueeWkeasoOa6lueiuu+8jOacieW+heafpeitiScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnR2xvYmFsaXplJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5LuF5YW35pyJ5LiA6YOo5YiG5Zyw5Yy655qE5L+h5oGv5oiW6KeC54K5JywgJ+WDheWFt+acieS4gOmDqOWIhuWcsOWNgOeahOizh+ioiuaIluingOm7nicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSG9heCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+ecn+WunuaAp+iiq+i0qOeWkScsICfnnJ/lr6bmgKfooqvos6rnlpEnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1BPVicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WuouinguaAp+acieS6ieiuruOAguWGheWuueOAgeivreiwg+WPr+iDveW4puacieaYjuaYvueahOS4quS6uuingueCueaIluWcsOaWueiJsuW9qScsXG5cdFx0XHRcdFx0XHRcdFx0J+WuouingOaAp+acieeIreitsOOAguWFp+WuueOAgeiqnuiqv+WPr+iDveW4tuacieaYjumhr+eahOWAi+S6uuingOm7nuaIluWcsOaWueiJsuW9qSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1NlbGYtY29udHJhZGljdG9yeScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WGheWuueiHquebuOefm+ebvicsICflhaflrrnoh6rnm7jnn5vnm74nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1dlYXNlbCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivreS5ieaooeajseS4pOWPr+iAjOaNn+WPiuWFtuWuouinguaAp+aIluWHhuehruaApycsXG5cdFx0XHRcdFx0XHRcdFx0J+iqnuaEj+aooeajseWFqeWPr+iAjOaQjeWPiuWFtuWuouingOaAp+aIlua6lueiuuaApydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflj6/kvpvmn6Xor4HlkozmnaXmupAnLCAn5Y+v5L6b5p+l6K2J5ZKM5L6G5rqQJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQkxQZGlzcHV0ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvei/neWPjeS6huacieWFveaho+ahiOmmhuWFs+S6jueUn+iAheS8oOiusOeahOadoeS+iycsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemBleWPjeS6huacieeNuOaqlOahiOmkqOmXnOaWvOeUn+iAheWCs+iomOeahOaineS+iydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0JMUHNvdXJjZXMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlJ/ogIXkvKDorrDpnIDopoHooaXlhYXmm7TlpJrlj6/kvpvmn6Xor4HnmoTmnaXmupAnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlJ/ogIXlgrPoqJjpnIDopoHoo5zlhYXmm7TlpJrlj6/kvpvmn6XorYnnmoTkvobmupAnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdCTFAgdW5zb3VyY2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5Lyg6K6w5rKh5pyJ5YiX5Ye65Lu75L2V5Y+C6ICD5oiW5p2l5rqQJyxcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5YKz6KiY5rKS5pyJ5YiX5Ye65Lu75L2V5Y+D6ICD5oiW5L6G5rqQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ2l0ZWNoZWNrJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO95YyF5ZCr5LiN6YCC55So5oiW6KKr5puy6Kej55qE5byV55So6LWE5paZ77yM6YOo5YiG5YaF5a6555qE5YeG56Gu5oCn5peg5rOV6KKr6K+B5a6eJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO95YyF5ZCr5LiN6YGp55So5oiW6KKr5puy6Kej55qE5byV55So6LOH5paZ77yM6YOo5YiG5YWn5a6555qE5rqW56K65oCn54Sh5rOV6KKr6K2J5a+mJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTW9yZSBmb290bm90ZXMgbmVlZGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zug5Li65paH5YaF5byV55So5LiN6Laz77yM6YOo5YiG5a2X5Y+l55qE5p2l5rqQ5LuN54S25LiN5piOJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zug54K65paH5YWn5byV55So5LiN6Laz77yM6YOo5YiG5a2X5Y+l55qE5L6G5rqQ5LuN54S25LiN5piOJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTm8gZm9vdG5vdGVzJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zug5Li65rKh5pyJ5YaF5paH5byV55So6ICM5p2l5rqQ5LuN54S25LiN5piOJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zug54K65rKS5pyJ5YWn5paH5byV55So6ICM5L6G5rqQ5LuN54S25LiN5piOJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT25lc291cmNlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5p6B5aSn5oiW5a6M5YWo5Zyw5L6d6LWW5LqO5p+Q5Liq5Y2V5LiA55qE5p2l5rqQJyxcblx0XHRcdFx0XHRcdFx0XHQn5qW15aSn5oiW5a6M5YWo5Zyw5L6d6LO05pa85p+Q5YCL5Zau5LiA55qE5L6G5rqQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3JpZ2luYWwgcmVzZWFyY2gnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflj6/og73ljIXlkKvljp/liJvnoJTnqbbmiJbmnKrmn6Xor4HlhoXlrrknLCAn5Y+v6IO95YyF5ZCr5Y6f5Ym156CU56m25oiW5pyq5p+l6K2J5YWn5a65JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdQcmltYXJ5c291cmNlcycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+S+nei1luesrOS4gOaJi+adpea6kCcsICfkvp3os7TnrKzkuIDmiYvkvobmupAnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1JlZmltcHJvdmUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnIDopoHooaXlhYXmm7TlpJrmnaXmupAnLCAn6ZyA6KaB6KOc5YWF5pu05aSa5L6G5rqQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdVbnJlZmVyZW5jZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmsqHmnInliJflh7rku7vkvZXlj4LogIPmiJbmnaXmupAnLCAn5rKS5pyJ5YiX5Ye65Lu75L2V5Y+D6ICD5oiW5L6G5rqQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WFt+S9k+WGheWuuemXrumimCcsICflhbfpq5TlhaflrrnllY/poYwnKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6K+t6KiAJywgJ+iqnuiogCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ05vdE1hbmRhcmluJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6L+H5aSa5LiN5piv546w5Luj5qCH5YeG5rGJ6K+t55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6YGO5aSa5LiN5piv54++5Luj5qiZ5rqW5ryi6Kqe55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdSb3VnaCB0cmFuc2xhdGlvbicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+e/u+ivkeWTgei0qOS4jeS9sycsICfnv7vora/lk4Hos6rkuI3kvbMnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfpk77mjqUnLCAn6YCj57WQJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnRGVhZCBlbmQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHliqDkuIrlhoXpg6jpk77mjqXku6XmnoTnrZHnmb7np5HlhajkuabnmoTpk77mjqXnvZHnu5wnLFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHliqDkuIrlhafpg6jpgKPntZDku6Xmp4vnr4nnmb7np5Hlhajmm7jnmoTpgKPntZDntrLntaEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdPcnBoYW4nLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmsqHmnInmiJblj6rmnInlvojlsJHpk77lhaXpobXpnaInLCAn5rKS5pyJ5oiW5Y+q5pyJ5b6I5bCR6YCj5YWl6aCB6Z2iJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdPdmVybGlua2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5ZCr5pyJ6L+H5aSa44CB6YeN5aSN44CB5oiW5LiN5b+F6KaB55qE5YaF6YOo6ZO+5o6lJyxcblx0XHRcdFx0XHRcdFx0XHQn5ZCr5pyJ6YGO5aSa44CB6YeN6KSH44CB5oiW5LiN5b+F6KaB55qE5YWn6YOo6YCj57WQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVW5kZXJsaW5rZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHmm7TlpJrlhoXpg6jpk77mjqXku6XmnoTnrZHnmb7np5HlhajkuabnmoTpk77mjqXnvZHnu5wnLFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHmm7TlpJrlhafpg6jpgKPntZDku6Xmp4vnr4nnmb7np5Hlhajmm7jnmoTpgKPntZDntrLntaEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5Y+C6ICD5oqA5pyvJywgJ+WPg+iAg+aKgOihkycpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NpdGF0aW9uIHN0eWxlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5byV55So6ZyA6KaB6L+b6KGM5riF55CGJywgJ+W8leeUqOmcgOimgemAsuihjOa4heeQhicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WIhuexuycsICfliIbpoZ4nKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdJbXByb3ZlIGNhdGVnb3JpZXMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnIDopoHmm7TlpJrpobXpnaLliIbnsbsnLCAn6ZyA6KaB5pu05aSa6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VuY2F0ZWdvcml6ZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnvLrlsJHpobXpnaLliIbnsbsnLCAn57y65bCR6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5ZCI5bm244CB5ouG5YiG44CB56e75YqoJywgJ+WQiOS9teOAgeaLhuWIhuOAgeenu+WLlScpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ01lcmdlIGZyb20nLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhumhtemdouW5tuWFpeatpOmhtemdoicsICflu7rorbDlsIfpoIHpnaLkvbXlhaXmraTpoIHpnaInKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdNZXJnZSB0bycsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5bu66K6u5bCG5q2k6aG16Z2i5bm25YWl6aG16Z2iJywgJ+W7uuitsOWwh+atpOmggemdouS9teWFpemggemdoicpLFxuXHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ01lcmdlJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflu7rorq7mraTpobXpnaLkuI7pobXpnaLlkIjlubYnLCAn5bu66K2w5q2k6aCB6Z2i6IiH6aCB6Z2i5ZCI5L21JyksXG5cdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnUmVxdWVzdGVkIG1vdmUnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhuatpOmhtemdouenu+WKqOWIsOaWsOWQjeensCcsICflu7rorbDlsIfmraTpoIHpnaLnp7vli5XliLDmlrDlkI3nqLEnKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdTcGxpdCcsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5bu66K6u5bCG5q2k6aG16Z2i5YiG5Ymy5Li65aSa5Liq6aG16Z2iJywgJ+W7uuitsOWwh+atpOmggemdouWIhuWJsueCuuWkmuWAi+mggemdoicpLFxuXHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XTtcblx0Ly8gVGFncyBmb3IgUkVESVJFQ1RTIHN0YXJ0IGhlcmVcblx0Ly8gTm90IGJ5IHBvbGljeSwgYnV0IHRoZSBsaXN0IHJvdWdobHkgYXBwcm94aW1hdGVzIGl0ZW1zIHdpdGggPjUwMFxuXHQvLyB0cmFuc2NsdXNpb25zIGZyb20gVGVtcGxhdGU6UiB0ZW1wbGF0ZSBpbmRleFxuXHRUd2lua2xlLnRhZy5yZWRpcmVjdExpc3QgPSBbXG5cdFx0e1xuXHRcdFx0a2V5OiAn5bi455So5qih5p2/Jyxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5ZCI5bm26YeN5a6a5ZCRJywgJ+WQiOS9temHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5L+d5oyB6aG16Z2i6aKY5ZCN6Iez55u45bqU5Li75p2h55uu77yM5Luk6aG16Z2i5YaF5a655Zyo5ZCI5bm25ZCO5LuN6IO95L+d5a2Y5YW257yW6L6R5Y6G5Y+yJyxcblx0XHRcdFx0XHRcdCfkv53mjIHpoIHpnaLpoYzlkI3oh7Pnm7jmh4nkuLvmop3nm67vvIzku6TpoIHpnaLlhaflrrnlnKjlkIjkvbXlvozku43og73lhLLlrZjlhbbnt6jovK/mrbflj7InXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfnroDnuYHph43lrprlkJEnLCAn57Ch57mB6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5byV5a+8566A5L2T6Iez57mB5L2T77yM5oiW57mB5L2T6Iez566A5L2TJywgJ+W8leWwjuewoemrlOiHs+e5gemrlO+8jOaIlue5gemrlOiHs+ewoemrlCcpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+WFs+azqOW6pumHjeWumuWQkScsICfpl5zms6jluqbph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+e8uuS5j+WFs+azqOW6pueahOWtkOS4u+mimOWQkeacieWFs+azqOW6pueahOavjeS4u+mimOeahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHQn57y65LmP6Zec5rOo5bqm55qE5a2Q5Li76aGM5ZCR5pyJ6Zec5rOo5bqm55qE5q+N5Li76aGM55qE6YeN5a6a5ZCRJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICfmqKHmnb/ph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+aMh+WQkeaooeadv+eahOmHjeWumuWQkemhtemdoicsICfmjIflkJHmqKHmnb/nmoTph43lrprlkJHpoIHpnaInKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfliKvlkI3ph43lrprlkJEnLCAn5Yil5ZCN6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmoIfpopjnmoTlhbbku5blkI3np7DjgIHnrJTlkI3jgIHnu7Dlj7fjgIHlkIzkuYnlrZfnrYknLFxuXHRcdFx0XHRcdFx0J+aomemhjOeahOWFtuS7luWQjeeoseOAgeethuWQjeOAgee2veiZn+OAgeWQjOe+qeWtl+etiSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+ivkeWQjemHjeWumuWQkScsICfora/lkI3ph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S6uueJqeOAgeS9nOWTgeetieWQhOmhueS6i+eJqeeahOWFtuS7lue/u+ivkeWQjeensCcsXG5cdFx0XHRcdFx0XHQn5Lq654mp44CB5L2c5ZOB562J5ZCE6aCF5LqL54mp55qE5YW25LuW57+76K2v5ZCN56ixJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn57yp5YaZ6YeN5a6a5ZCRJywgJ+e4ruWvq+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOe8qeWGmScsICfmqJnpoYznuK7lr6snKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfmi7zlhpnph43lrprlkJEnLCAn5ou85a+r6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5qCH6aKY55qE5YW25LuW5LiN5ZCM5ou85YaZJywgJ+aomemhjOeahOWFtuS7luS4jeWQjOaLvOWvqycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+mUmeWtl+mHjeWumuWQkScsICfpjK/lrZfph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnuqDmraPmoIfpopjnmoTluLjop4HplJnor6/mi7zlhpnmiJbor6/mpI0nLCAn57O+5q2j5qiZ6aGM55qE5bi46KaL6Yyv6Kqk5ou85a+r5oiW6Kqk5qSNJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5pen5ZCN6YeN5a6a5ZCRJywgJ+iIiuWQjemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bCG5LqL54mp5pep5YmN55qE5ZCN56ew5byV5a+86Iez5pu05pS55ZCO55qE5Li76aKYJyxcblx0XHRcdFx0XHRcdCflsIfkuovnianml6nliY3nmoTlkI3nqLHlvJXlsI7oh7Pmm7TmlLnlvoznmoTkuLvpoYwnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+WFqOWQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5qCH6aKY55qE5a6M5pW05oiW5pu05a6M5pW05ZCN56ewJywgJ+aomemhjOeahOWujOaVtOaIluabtOWujOaVtOWQjeeosScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn55+t5ZCN6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WujOaVtOagh+mimOWQjeensOaIluS6uueJqeWFqOWQjeeahOmDqOWIhuOAgeS4jeWujOaVtOeahOWQjeensOaIlueugOensCcsXG5cdFx0XHRcdFx0XHQn5a6M5pW05qiZ6aGM5ZCN56ix5oiW5Lq654mp5YWo5ZCN55qE6YOo5YiG44CB5LiN5a6M5pW055qE5ZCN56ix5oiW57Ch56ixJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflp5PmsI/ph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiAn5Lq654mp5aeT5rCPJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+WQjeWtl+mHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246ICfkurrniankurrlkI0nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5pys5ZCN6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogJ+S6uueJqeacrOWQjScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICfpnZ7kuK3mlofph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+mdnuS4reaWh+agh+mimCcsICfpnZ7kuK3mlofmqJnpoYwnKSxcblx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnYWx0TGFuZ0Zyb20nLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+acrOmHjeaWsOWwjuWQkeeahOiqnuiogO+8iOWPr+mBuO+8iScsXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdFx0XHRcdFx0J+i8uOWFpemHjeaWsOWwjuWQkeWQjeeoseaJgOS9v+eUqOiqnuiogOeahElTTyA2Mznku6PnorzvvIzkvovlpoJlbuS7o+ihqOiLseiqnu+8jOS7o+eivOWPr+WPg+imiyBUZW1wbGF0ZTpJU09fNjM5X25hbWUnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5pel5paH6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfml6Xor63lkI3np7AnLCAn5pel6Kqe5ZCN56ixJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiAn5YG255So5qih5p2/Jyxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICfop5LoibLph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+eUteinhuWJp+OAgeeUteW9seOAgeS5puexjeetieS9nOWTgeeahOinkuiJsicsICfpm7voppbliofjgIHpm7vlvbHjgIHmm7jnsY3nrYnkvZzlk4HnmoTop5LoibInKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfnq6DoioLph43lrprlkJEnLCAn56ug56+A6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+85ZCR6Iez6L6D6auY5a+G5bqm57uE57uH55qE6aG16Z2iJywgJ+WwjuWQkeiHs+i8g+mrmOWvhuW6pue1hOe5lOeahOmggemdoicpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5YiX6KGo6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflr7zlkJHoh7PkvY7lr4bluqbnmoTliJfooagnLCAn5bCO5ZCR6Iez5L2O5a+G5bqm55qE5YiX6KGoJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflj6/og73mgKfph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5a+85ZCR6Iez5b2T5YmN5o+Q5L6b5YaF5a655pu05Li66K+m5bC955qE55uu5qCH6aG16Z2iJyxcblx0XHRcdFx0XHRcdCflsI7lkJHoh7PnlbbliY3mj5Dkvpvlhaflrrnmm7TngrroqbPnm6HnmoTnm67mqJnpoIHpnaInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCflhbPogZTlrZfph43lrprlkJEnLCAn6Zec6IGv5a2X6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5qCH6aKY5ZCN56ew5YWz6IGU5a2XJywgJ+aomemhjOWQjeeosemXnOiBr+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+adoeebruivt+axgumHjeWumuWQkScsICfmop3nm67oq4vmsYLph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnIDopoHni6znq4vmnaHnm67nmoTpobXpnaInLCAn6ZyA6KaB542o56uL5qKd55uu55qE6aCB6Z2iJyksXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3JlcUFydGljbGVMYW5nJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICflpJboqp7oqp7oqIDku6PnorzvvJonLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiAn5L2/55SoSVNPIDYzOeS7o+eivO+8jOWPr+WPg+imiyBUZW1wbGF0ZTpJU09fNjM5X25hbWUnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3JlcUFydGljbGVUaXRsZScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5aSW6Kqe6aCB6Z2i5ZCN56ix77yaJyxcblx0XHRcdFx0XHRcdFx0c2l6ZTogNjAsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5b+r5o235pa55byP6YeN5a6a5ZCRJywgJ+aNt+W+kemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+acieWFveaho+ahiOmmhuW/q+aNt+aWueW8jycsICfmnInnjbjmqpTmoYjppKjlv6vmjbfmlrnlvI8nKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6bKc55So5qih5p2/JywgJ+murueUqOaooeadvycpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfor43nu4Tph43lrprlkJEnLCAn6Kme57WE6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflsIbor43nu4Qv6K+N57uEL+aIkOivreaMh+WQkeWIh+mimOeahOadoeebruWPiuaBsOW9k+eroOiKgicsXG5cdFx0XHRcdFx0XHQn5bCH6Kme57WEL+ipnue1hC/miJDoqp7mjIflkJHliIfpoYznmoTmop3nm67lj4rmgbDnlbbnq6Dnr4AnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfmtojmrafkuYnpobXph43lrprlkJEnLCAn5raI5q2n576p6aCB6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5oyH5ZCR5raI5q2n5LmJ6aG1JywgJ+aMh+WQkea2iOatp+e+qemggScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5Z+f5ZCN6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfln5/lkI0nLCAn57ay5Z+f5ZCN56ixJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflubTku6Pph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+S6juW5tOS7veadoeebruWvvOWQkeiHs+W5tOS7o+adoeebricsICfmlrzlubTku73mop3nm67lsI7lkJHoh7PlubTku6Pmop3nm64nKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfnlKjmiLfmoYbmqKHmnb/ph43lrprlkJEnLCAn55So5oi25qGG5qih5p2/6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn55So5oi35qGG5qih5p2/JywgJ+eUqOaItuahhuaooeadvycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn6YeN5a6a5ZCR5qih5p2/55So6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflr7zlkJHoh7Pph43lrprlkJHmqKHmnb8nLCAn5bCO5ZCR6Iez6YeN5a6a5ZCR5qih5p2/JyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdFWElG6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCdKUEVH5Zu+5YOP5paH5Lu25YyF5ZCrRVhJRuS/oeaBrycsICdKUEVH5ZyW5qqU5YyF5ZCrRVhJRuizh+ioiicpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHQvLyBtYWludGVuYW5jZSB0YWdzIGZvciBGSUxFUyBzdGFydCBoZXJlXG5cdFR3aW5rbGUudGFnLmZpbGVMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfokZfkvZzmnYPlkozmnaXmupDpl67popjmoIfnrb4nLCAn6JGX5L2c5qyK5ZKM5L6G5rqQ5ZWP6aGM5qiZ57GkJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e05vbi1mcmVlIHJlZHVjZX1977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Z2e5L2O5YiG6L6o546H55qE5ZCI55CG5L2/55So5Zu+5YOP77yI5oiW6L+H6ZW/55qE6Z+z6aKR5Ymq6L6R562J77yJJyxcblx0XHRcdFx0XHRcdCfpnZ7kvY7op6PmnpDluqbnmoTlkIjnkIbkvb/nlKjlnJblg4/vvIjmiJbpgY7plbfnmoTpn7PpoLvliarovK/nrYnvvIknXG5cdFx0XHRcdFx0KX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnTm9uLWZyZWUgcmVkdWNlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5riF55CG5qCH562+JywgJ+a4heeQhuaomeexpCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tXYXRlcm1hcmt9fe+8miR7d2luZG93LndnVUxTKCflm77lg4/ljIXlkKvkuobmsLTljbAnLCAn5ZyW5YOP5YyF5ZCr5LqG5rWu5rC05Y2wJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ1dhdGVybWFyaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7UmVuYW1lIG1lZGlhfX3vvJoke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmlofku7blupTor6XmoLnmja7mlofku7blkI3np7DmjIflvJXooqvph43lkb3lkI0nLFxuXHRcdFx0XHRcdFx0J+aqlOahiOaHieipsuagueaTmuaqlOahiOWQjeeoseaMh+W8leiiq+mHjeaWsOWRveWQjSdcblx0XHRcdFx0XHQpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdSZW5hbWUgbWVkaWEnLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZW5hbWVtZWRpYU5ld25hbWUnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlrDlkI3np7DvvJonLCAn5paw5ZCN56ix77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn6L6T5YWl5Zu+5YOP55qE5paw5ZCN56ew77yI5Y+v6YCJ77yJJywgJ+i8uOWFpeWcluWDj+eahOaWsOWQjeeose+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3JlbmFtZW1lZGlhUmVhc29uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfljp/lm6DvvJonLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+i+k+WFpemHjeWRveWQjeeahOWOn+WboO+8iOWPr+mAie+8iScsICfovLjlhaXph43mlrDlkb3lkI3nmoTljp/lm6DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tTaG91bGQgYmUgU1ZHfX3vvJoke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCdQTkfjgIFHSUbjgIFKUEVH5paH5Lu25bqU6K+l6YeN5Yi25oiQ55+i6YeP5Zu+5b2iJyxcblx0XHRcdFx0XHRcdCdQTkfjgIFHSUbjgIFKUEVH5qqU5qGI5oeJ6Kmy6YeN6KO95oiQ5ZCR6YeP5ZyW5b2iJ1xuXHRcdFx0XHRcdCl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ1Nob3VsZCBiZSBTVkcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfmlofku7blj5bku6PmoIfnrb4nLCAn5qqU5qGI5Y+W5Luj5qiZ57GkJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e09ic29sZXRlfX3vvJoke3dpbmRvdy53Z1VMUygn5pyJ5paw54mI5pys5Y+v55So55qE6L+H5pe25paH5Lu2JywgJ+acieaWsOeJiOacrOWPr+eUqOeahOmBjuaZguaqlOahiCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdPYnNvbGV0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7VmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlfX3vvJoke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmnInnn6Lph4/lm77lvaLlj6/nlKjnmoTpnZ7nn6Lph4/lm77lvaLmlofku7YnLFxuXHRcdFx0XHRcdFx0J+acieWQkemHj+WcluW9ouWPr+eUqOeahOmdnuWQkemHj+WcluW9ouaqlOahiCdcblx0XHRcdFx0XHQpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdWZWN0b3IgdmVyc2lvbiBhdmFpbGFibGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHRcdGJ1aWxkRmlsZW5hbWU6IHRydWUsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS50YWcuY2FsbGJhY2tzID0ge1xuXHRcdGFydGljbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyBSZW1vdmUgdGFncyB0aGF0IGJlY29tZSBzdXBlcmZsdW91cyB3aXRoIHRoaXMgYWN0aW9uXG5cdFx0XHRsZXQgcGFnZVRleHQgPSBwYWdlb2JqXG5cdFx0XHRcdC5nZXRQYWdlVGV4dCgpXG5cdFx0XHRcdC5yZXBsYWNlKFxuXHRcdFx0XHRcdC9cXHtcXHtcXHMqKFtObl1ldyB1bnJldmlld2VkIGFydGljbGV8W1V1XW5yZXZpZXdlZHxbVXVdc2Vyc3BhY2UgZHJhZnQpXFxzKihcXHwoPzpcXHtcXHtbXnt9XSpcXH1cXH18W157fV0pKik/XFx9XFx9XFxzKi9nLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBTYXZlcyB0aGUgcGFnZSBmb2xsb3dpbmcgdGhlIHJlbW92YWwgb2YgdGFncyBpZiBhbnkuIFRoZSBsYXN0IHN0ZXAuXG5cdFx0XHQgKiBDYWxsZWQgZnJvbSByZW1vdmVUYWdzKClcblx0XHRcdCAqL1xuXHRcdFx0Y29uc3QgcG9zdFJlbW92YWwgPSAoKSA9PiB7XG5cdFx0XHRcdGlmIChwYXJhbXMudGFnc1RvUmVtb3ZlLmxlbmd0aCkge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSBlbXB0eSB7e211bHRpcGxlIGlzc3Vlc319IGlmIGZvdW5kXG5cdFx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyhtdWx0aXBsZSA/aXNzdWVzfGFydGljbGUgP2lzc3Vlc3xtaXxhaXxpc3N1ZXN85aSa5YCL5ZWP6aGMfOWkmuS4qumXrumimHzllY/poYzmop3nm6586Zeu6aKY5p2h55uufOaVuOWAi+WVj+mhjHzmlbDkuKrpl67popgpXFxzKlxcfFxccypcXH1cXH1cXG4/L2ltLFxuXHRcdFx0XHRcdFx0Jydcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIFJlbW92ZSBzaW5nbGUtZWxlbWVudCB7e211bHRpcGxlIGlzc3Vlc319IGlmIGZvdW5kXG5cdFx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyg/Om11bHRpcGxlID9pc3N1ZXN8YXJ0aWNsZSA/aXNzdWVzfG1pfGFpfGlzc3Vlc3zlpJrlgIvllY/poYx85aSa5Liq6Zeu6aKYfOWVj+mhjOaineebrnzpl67popjmnaHnm6585pW45YCL5ZWP6aGMfOaVsOS4qumXrumimClcXHMqXFx8XFxzKihcXHtcXHsoPzpcXHtcXHtbXnt9XSpcXH1cXH18W157fV0pK1xcfVxcfSlcXHMqXFx9XFx9L2ltLFxuXHRcdFx0XHRcdFx0JyQxJ1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gQnVpbGQgZWRpdCBzdW1tYXJ5XG5cdFx0XHRcdGNvbnN0IG1ha2VTZW50ZW5jZSA9IChhcnJheSkgPT4ge1xuXHRcdFx0XHRcdGlmIChhcnJheS5sZW5ndGggPCAzKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYXJyYXkuam9pbign5ZKMJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGxhc3QgPSBhcnJheS5wb3AoKTtcblx0XHRcdFx0XHRyZXR1cm4gYCR7YXJyYXkuam9pbign44CBJyl95ZKMJHtsYXN0fWA7XG5cdFx0XHRcdH07XG5cdFx0XHRcdGNvbnN0IG1ha2VUZW1wbGF0ZUxpbmsgPSAodGFnKSA9PiB7XG5cdFx0XHRcdFx0bGV0IHRleHQgPSAne3tbWyc7XG5cdFx0XHRcdFx0Ly8gaWYgaXQgaXMgYSBjdXN0b20gdGFnIHdpdGggYSBwYXJhbWV0ZXJcblx0XHRcdFx0XHRpZiAodGFnLmluY2x1ZGVzKCd8JykpIHtcblx0XHRcdFx0XHRcdHRhZyA9IHRhZy5zbGljZSgwLCB0YWcuaW5kZXhPZignfCcpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGV4dCArPSB0YWcuaW5jbHVkZXMoJzonKSA/IHRhZyA6IGBUZW1wbGF0ZToke3RhZ318JHt0YWd9YDtcblx0XHRcdFx0XHRyZXR1cm4gYCR7dGV4dH1dXX19YDtcblx0XHRcdFx0fTtcblx0XHRcdFx0bGV0IHN1bW1hcnlUZXh0O1xuXHRcdFx0XHRjb25zdCBhZGRlZFRhZ3MgPSBwYXJhbXMudGFncy5tYXAobWFrZVRlbXBsYXRlTGluayk7XG5cdFx0XHRcdGNvbnN0IHJlbW92ZWRUYWdzID0gcGFyYW1zLnRhZ3NUb1JlbW92ZS5tYXAobWFrZVRlbXBsYXRlTGluayk7XG5cdFx0XHRcdGlmIChhZGRlZFRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSBg5Yqg5YWlJHttYWtlU2VudGVuY2UoYWRkZWRUYWdzKX1gO1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ICs9IHJlbW92ZWRUYWdzLmxlbmd0aCA/IGDkuKbnp7vpmaQke21ha2VTZW50ZW5jZShyZW1vdmVkVGFncyl9YCA6ICcnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gYOenu+mZpCR7bWFrZVNlbnRlbmNlKHJlbW92ZWRUYWdzKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpO1xuXHRcdFx0XHRpZiAocGFyYW1zLnJlYXNvbikge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ICs9IGDvvJoke3BhcmFtcy5yZWFzb259YDtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBhdm9pZCB0cnVuY2F0ZWQgc3VtbWFyaWVzXG5cdFx0XHRcdGlmIChzdW1tYXJ5VGV4dC5sZW5ndGggPiA0OTkpIHtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCA9IHN1bW1hcnlUZXh0LnJlcGxhY2UoL1xcW1xcW1tefF0rXFx8KFteXFxdXSspXFxdXFxdL2csICckMScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQocGFnZVRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnlUZXh0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hUYWdnZWRQYWdlcycpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc01pbm9yJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdFx0cGFnZW9iai5zYXZlKCgpID0+IHtcblx0XHRcdFx0XHQvLyBzcGVjaWFsIGZ1bmN0aW9ucyBmb3IgbWVyZ2UgdGFnc1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VSZWFzb24pIHtcblx0XHRcdFx0XHRcdC8vIHBvc3QgdGhlIHJhdGlvbmFsZSBvbiB0aGUgdGFsayBwYWdlIChvbmx5IG9wZXJhdGVzIGluIG1haW4gbmFtZXNwYWNlKVxuXHRcdFx0XHRcdFx0Y29uc3QgdGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRgVGFsazoke3BhcmFtcy5kaXNjdXNzQXJ0aWNsZX1gLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhueQhueUsei0tOi/m+iuqOiuuumhtScsICflsIfnkIbnlLHosrzpgLLoqI7oq5bpoIEnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHRhbGtwYWdlLnNldE5ld1NlY3Rpb25UZXh0KGAke3BhcmFtcy5tZXJnZVJlYXNvbi50cmltKCl9IH5+YC5jb25jYXQoJ35+JykpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0TmV3U2VjdGlvblRpdGxlKGDor7fmsYLkuI5bWyR7cGFyYW1zLm5vbkRpc2N1c3NBcnRpY2xlfV1d5ZCI5bm2YCk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaE1lcmdlRGlzY3Vzc2lvbnMnKSk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5uZXdTZWN0aW9uKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYWdPdGhlcikge1xuXHRcdFx0XHRcdFx0Ly8gdGFnIHRoZSB0YXJnZXQgcGFnZSBpZiByZXF1ZXN0ZWRcblx0XHRcdFx0XHRcdGxldCBvdGhlclRhZ05hbWUgPSAnTWVyZ2UnO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5tZXJnZVRhZyA9PT0gJ01lcmdlIGZyb20nKSB7XG5cdFx0XHRcdFx0XHRcdG90aGVyVGFnTmFtZSA9ICdNZXJnZSB0byc7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5tZXJnZVRhZyA9PT0gJ01lcmdlIHRvJykge1xuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgZnJvbSc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCBuZXdQYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRcdHRhZ3M6IFtvdGhlclRhZ05hbWVdLFxuXHRcdFx0XHRcdFx0XHR0YWdzVG9SZW1vdmU6IFtdLFxuXHRcdFx0XHRcdFx0XHR0YWdzVG9SZW1haW46IFtdLFxuXHRcdFx0XHRcdFx0XHRtZXJnZVRhcmdldDogTW9yZWJpdHMucGFnZU5hbWVOb3JtLFxuXHRcdFx0XHRcdFx0XHRkaXNjdXNzQXJ0aWNsZTogcGFyYW1zLmRpc2N1c3NBcnRpY2xlLFxuXHRcdFx0XHRcdFx0XHR0YWxrRGlzY3Vzc2lvblRpdGxlOiBwYXJhbXMudGFsa0Rpc2N1c3Npb25UaXRsZSxcblx0XHRcdFx0XHRcdFx0dGFsa0Rpc2N1c3Npb25UaXRsZUxpbmtlZDogcGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGVMaW5rZWQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3RoZXJwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0cGFyYW1zLm1lcmdlVGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+agh+iusOWFtuS7lumhtemdou+8iCcsICfmqJnoqJjlhbbku5bpoIHpnaLvvIgnKSArIHBhcmFtcy5tZXJnZVRhcmdldH3vvIlgXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0b3RoZXJwYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhuZXdQYXJhbXMpO1xuXHRcdFx0XHRcdFx0b3RoZXJwYWdlLmxvYWQoVHdpbmtsZS50YWcuY2FsbGJhY2tzLmFydGljbGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBzcGVjaWFsIGZ1bmN0aW9ucyBmb3IgcmVxdWVzdGVkIG1vdmUgdGFnc1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubW92ZVJlYXNvbikge1xuXHRcdFx0XHRcdFx0Ly8gcG9zdCB0aGUgcmF0aW9uYWxlIG9uIHRoZSB0YWxrIHBhZ2UgKG9ubHkgb3BlcmF0ZXMgaW4gbWFpbiBuYW1lc3BhY2UpXG5cdFx0XHRcdFx0XHRsZXQgbW92ZVRhbGtwYWdlVGV4dCA9ICdcXG5cXG57eycuY29uY2F0KCdzdWJzdDonLCBgUk18MT0ke3BhcmFtcy5tb3ZlUmVhc29uLnRyaW0oKX1gKTtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMubW92ZVRhcmdldCkge1xuXHRcdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2VUZXh0ICs9IGB8Mj0ke3BhcmFtcy5tb3ZlVGFyZ2V0fWA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2VUZXh0ICs9ICd9fSc7XG5cdFx0XHRcdFx0XHRjb25zdCBtb3ZlVGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRgVGFsazoke3BhcmFtcy5kaXNjdXNzQXJ0aWNsZX1gLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhueQhueUsei0tOi/m+iuqOiuuumhtScsICflsIfnkIbnlLHosrzpgLLoqI7oq5bpoIEnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5zZXRBcHBlbmRUZXh0KG1vdmVUYWxrcGFnZVRleHQpO1xuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axguenu+WKqCcsICfoq4vmsYLnp7vli5UnKSArXG5cdFx0XHRcdFx0XHRcdFx0KHBhcmFtcy5tb3ZlVGFyZ2V0ID8gYOiHs1tbJHtwYXJhbXMubW92ZVRhcmdldH1dXWAgOiAnJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAocGFyYW1zLnBhdHJvbCkge1xuXHRcdFx0XHRcdHBhZ2VvYmoucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvKipcblx0XHRcdCAqIFJlbW92ZXMgdGhlIGV4aXN0aW5nIHRhZ3MgdGhhdCB3ZXJlIGRlc2VsZWN0ZWQgKGlmIGFueSlcblx0XHRcdCAqIENhbGxzIHBvc3RSZW1vdmFsKCkgd2hlbiBkb25lXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IHJlbW92ZVRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRcdGlmIChwYXJhbXMudGFnc1RvUmVtb3ZlLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdHBvc3RSZW1vdmFsKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn56e76Zmk5Y+W5raI6YCJ5oup55qE5bey5a2Y5Zyo5qCH6K6wJywgJ+enu+mZpOWPlua2iOmBuOaTh+eahOW3suWtmOWcqOaomeiomCcpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGdldFJlZGlyZWN0c0ZvciA9IFtdO1xuXHRcdFx0XHQvLyBSZW1vdmUgdGhlIHRhZ3MgZnJvbSB0aGUgcGFnZSB0ZXh0LCBpZiBmb3VuZCBpbiBpdHMgcHJvcGVyIG5hbWUsXG5cdFx0XHRcdC8vIG90aGVyd2lzZSBtb3ZlcyBpdCB0byBgZ2V0UmVkaXJlY3RzRm9yYCBhcnJheSBlYXJtYXJraW5nIGl0IGZvclxuXHRcdFx0XHQvLyBsYXRlciByZW1vdmFsXG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWdzVG9SZW1vdmUpIHtcblx0XHRcdFx0XHRjb25zdCB0YWdfcmUgPSBuZXcgUmVnRXhwKGBcXFxce1xcXFx7JHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KHRhZyl9XFxcXHMqKFxcXFx8W159XSspP1xcXFx9XFxcXH1cXFxcbj9gKTtcblx0XHRcdFx0XHRpZiAodGFnX3JlLnRlc3QocGFnZVRleHQpKSB7XG5cdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGdldFJlZGlyZWN0c0Zvci5wdXNoKGBUZW1wbGF0ZToke3RhZ31gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFnZXRSZWRpcmVjdHNGb3IubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cG9zdFJlbW92YWwoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVtb3ZlIHRhZ3Mgd2hpY2ggYXBwZWFyIGluIHBhZ2UgdGV4dCBhcyByZWRpcmVjdHNcblx0XHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5qih5p2/6YeN5a6a5ZCRJywgJ+WPluW+l+aooeadv+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHByb3A6ICdsaW5rc2hlcmUnLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiBnZXRSZWRpcmVjdHNGb3Iuam9pbignfCcpLFxuXHRcdFx0XHRcdFx0cmVkaXJlY3RzOiAxLFxuXHRcdFx0XHRcdFx0bGhuYW1lc3BhY2U6ICcxMCcsXG5cdFx0XHRcdFx0XHRsaHNob3c6ICdyZWRpcmVjdCcsXG5cdFx0XHRcdFx0XHRsaGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdCQoYXBpb2JqLnJlc3BvbnNlWE1MKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgncGFnZScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfaWR4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJlbW92ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHQkKHBhZ2UpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnbGgnKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmVhY2goKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0YWcgPSAkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJykuc2xpY2UoOSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRhZ19yZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxcXFxzKihcXFxcfCg/OlxcXFx7XFxcXHtbXnt9XSpcXFxcfVxcXFx9fFtee31dKSopP1xcXFx9XFxcXH1cXFxcbj9gXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0YWdfcmUudGVzdChwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgJC5lYWNoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFyZW1vdmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5peg5rOV5Zyo6aG16Z2i5LiK5om+5Yiwe3snLCAn54Sh5rOV5Zyo6aCB6Z2i5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChwYWdlKS5hdHRyKCd0aXRsZScpLnNsaWNlKDkpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHBvc3RSZW1vdmFsKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhcGkucG9zdCgpO1xuXHRcdFx0fTtcblx0XHRcdGlmICghcGFyYW1zLnRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdHJlbW92ZVRhZ3MoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHRhZ1JlO1xuXHRcdFx0bGV0IHRhZ1RleHQgPSAnJztcblx0XHRcdGxldCB0YWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVUYWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVFeGlzdGluZ1RhZ3MgPSBbXTtcblx0XHRcdC8vIEV4ZWN1dGVzIGZpcnN0OiBhZGRpdGlvbiBvZiBzZWxlY3RlZCB0YWdzXG5cdFx0XHQvKipcblx0XHRcdCAqIFVwZGF0ZXMgYHRhZ1RleHRgIHdpdGggdGhlIHN5bnRheCBvZiBgdGFnTmFtZWAgdGVtcGxhdGUgd2l0aCBpdHMgcGFyYW1ldGVyc1xuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0YWdOYW1lXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lKSA9PiB7XG5cdFx0XHRcdGxldCBjdXJyZW50VGFnID0gJyc7XG5cdFx0XHRcdGlmICh0YWdOYW1lID09PSAnVW5jYXRlZ29yaXplZCcgfHwgdGFnTmFtZSA9PT0gJ0ltcHJvdmUgY2F0ZWdvcmllcycpIHtcblx0XHRcdFx0XHRwYWdlVGV4dCArPSBgXFxuXFxue3ske3RhZ05hbWV9fHRpbWU9e3tgLmNvbmNhdCgnc3Vic3Q6JywgJyN0aW1lOmN9fX19Jyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudFRhZyArPSBge3ske3RhZ05hbWV9YDtcblx0XHRcdFx0XHQvLyBmaWxsIGluIG90aGVyIHBhcmFtZXRlcnMsIGJhc2VkIG9uIHRoZSB0YWdcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZ05hbWUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ0V4cGVydCBuZWVkZWQnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdD0ke3BhcmFtcy5leHBlcnR9YDtcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5leHBlcnQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHN1YmplY3QyPSR7cGFyYW1zLmV4cGVydDJ9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmV4cGVydDMpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdDM9JHtwYXJhbXMuZXhwZXJ0M31gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UnOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1lcmdlIHRhcmdldCBmb3Igbm93IGFuZCBsYXRlclxuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldCA9IE1vcmViaXRzLnN0cmluZy50b1VwcGVyQ2FzZUZpcnN0Q2hhcihcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwke3BhcmFtcy5tZXJnZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGxpbmsgdG8gdGhlIGNvcnJlY3Qgc2VjdGlvbiBvbiB0aGUgdGFsayBwYWdlLCBmb3IgYXJ0aWNsZSBzcGFjZSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KHBhcmFtcy5tZXJnZVJlYXNvbiB8fCBwYXJhbXMuZGlzY3Vzc0FydGljbGUpXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXBhcmFtcy5kaXNjdXNzQXJ0aWNsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBkaXNjdXNzQXJ0aWNsZSBpcyB0aGUgYXJ0aWNsZSB3aG9zZSB0YWxrIHBhZ2Ugd2lsbCBjb250YWluIHRoZSBkaXNjdXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFnTmFtZSA9PT0gJ01lcmdlIHRvJyA/IHBhcmFtcy5tZXJnZVRhcmdldCA6IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gbm9uRGlzY3Vzc0FydGljbGUgaXMgdGhlIGFydGljbGUgd2hpY2ggd29uJ3QgaGF2ZSB0aGUgZGlzY3Vzc2lvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubm9uRGlzY3Vzc0FydGljbGUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhZ05hbWUgPT09ICdNZXJnZSB0bycgPyBtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykgOiBwYXJhbXMubWVyZ2VUYXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy50YWxrRGlzY3Vzc2lvblRpdGxlID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axguS4jicsICfoq4vmsYLoiIcnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm5vbkRpc2N1c3NBcnRpY2xlICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WQiOW5ticsICflkIjkvbUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxkaXNjdXNzPVRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9IyR7cGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGV9YDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdNaXNzaW5nIGluZm9ybWF0aW9uJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMubWlzc2luZ0luZm9ybWF0aW9ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm90YWJpbGl0eSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubm90YWJpbGl0eSAhPT0gJ25vbmUnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDM9JHtwYXJhbXMubm90YWJpbGl0eX1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVxdWVzdGVkIG1vdmUnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1vdmUgdGFyZ2V0IGZvciBub3cgYW5kIGxhdGVyXG5cdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm1vdmVUYXJnZXQgPSBNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubW92ZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8JHtwYXJhbXMubW92ZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnU3BsaXQnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLnRhcmdldDEpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8MT0ke3BhcmFtcy50YXJnZXQxfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy50YXJnZXQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDI9JHtwYXJhbXMudGFyZ2V0Mn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMudGFyZ2V0Mykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwzPSR7cGFyYW1zLnRhcmdldDN9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ0NsZWFudXAnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmNsZWFudXBSZWFzb24pIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmNsZWFudXBSZWFzb259YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjdXJyZW50VGFnICs9ICd8dGltZT17eycuY29uY2F0KCdzdWJzdDonLCAnI3RpbWU6Y319fX1cXG4nKTtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGN1cnJlbnRUYWc7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvKipcblx0XHRcdCAqIEFkZHMgdGhlIHRhZ3Mgd2hpY2ggZ28gb3V0c2lkZSB7e211bHRpcGxlIGlzc3Vlc319LCBlaXRoZXIgYmVjYXVzZVxuXHRcdFx0ICogdGhlc2UgdGFncyBhcmVuJ3Qgc3VwcG9ydGVkIGluIHt7bXVsdGlwbGUgaXNzdWVzfX0gb3IgYmVjYXVzZVxuXHRcdFx0ICoge3ttdWx0aXBsZSBpc3N1ZXN9fSBpcyBub3QgYmVpbmcgYWRkZWQgdG8gdGhlIHBhZ2UgYXQgYWxsXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFVuZ3JvdXBlZFRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcblx0XHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlcyxcblx0XHRcdFx0Ly8gYXMgd2VsbCBhcyBkZWxldGlvbi9wcm90ZWN0aW9uLXJlbGF0ZWQgdGVtcGxhdGVzXG5cdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHBhZ2VUZXh0KTtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVzQWZ0ZXIgPVxuXHRcdFx0XHRcdC8vIFByb3RlY3Rpb24gdGVtcGxhdGVzXG5cdFx0XHRcdFx0Ly8gQ1NEXG5cdFx0XHRcdFx0Ly8gQWZEXG5cdFx0XHRcdFx0YCR7VHdpbmtsZS5oYXRub3RlUmVnZXh9cHB8cHAtLio/fCg/OkRlbGV0ZXxEYi1yZWFzb258RHxEZWxldGViZWNhdXNlfERifOmAn+WIoHzpgJ/liKp8U3BlZWR5fFNEfOW/q+WIoHzlv6vliKp8Q1NEKXxbcnNhaWZ0Y212XWZkfHZmZC0oPzpifHF8c3xzb3VyY2V8dnx3aWt0KXwoPzrnp7vliqjliLDnu7Tln7p856e75YuV5Yiw57at5Z+6KSg/OuaVmeenkeS5pnzmlZnnp5Hmm7h86K+t5b2VfOiqnumMhHzmloflupN85paH5bqrfOWvvOa4uHzlsI7pgYp86K+N5YW4fOipnuWFuClgO1xuXHRcdFx0XHRwYWdlVGV4dCA9IHlzYXJjaGl2ZXNfcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWdUZXh0LCB0ZW1wbGF0ZXNBZnRlcikuZ2V0VGV4dCgpO1xuXHRcdFx0XHRyZW1vdmVUYWdzKCk7XG5cdFx0XHR9O1xuXHRcdFx0Ly8gU2VwYXJhdGUgdGFncyBpbnRvIGdyb3VwYWJsZSBvbmVzIChgZ3JvdXBhYmxlVGFnc2ApIGFuZCBub24tZ3JvdXBhYmxlIG9uZXMgKGB0YWdzYClcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWdzKSB7XG5cdFx0XHRcdHRhZ1JlID0gbmV3IFJlZ0V4cChgXFxcXHtcXFxceyR7dGFnfShcXFxcfHxcXFxcfVxcXFx9KWAsICdpbScpO1xuXHRcdFx0XHQvLyByZWdleCBjaGVjayBmb3IgcHJlZXhpc3RlbmNlIG9mIHRhZyBjYW4gYmUgc2tpcHBlZCBpZiBpbiBjYW5SZW1vdmUgbW9kZVxuXHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuY2FuUmVtb3ZlIHx8ICF0YWdSZS5leGVjKHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdHRhZyA9PT0gJ05vdGFiaWxpdHknICYmXG5cdFx0XHRcdFx0XHQobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCB8fFxuXHRcdFx0XHRcdFx0XHRjb25maXJtKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfor6XpobXpnaLkuI3mmK/mnaHnm67vvIzmgqjku43opoHmj5DmiqXliLDlhbPms6jluqbmj5DmiqXlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+ipsumggemdouS4jeaYr+aineebru+8jOaCqOS7jeimgeaPkOWgseWIsOmXnOazqOW6puaPkOWgseWXju+8nydcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCkpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHQnTElCX3RhbGs65a2Y5bqf6K6o6K66L+WFs+azqOW6puaPkOaKpScsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5YWz5rOo5bqm6K6w5b2V6aG5JywgJ+WKoOWFpemXnOazqOW6puiomOmMhOmghScpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvYWQoVHdpbmtsZS50YWcuY2FsbGJhY2tzLm5vdGFiaWxpdHlMaXN0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gY29uZGl0aW9uIFR3aW5rbGUudGFnLmFydGljbGUudGFnc1t0YWddIHRvIGVuc3VyZSB0aGF0IGl0cyBub3QgYSBjdXN0b20gdGFnXG5cdFx0XHRcdFx0Ly8gQ3VzdG9tIHRhZ3MgYXJlIGFzc3VtZWQgbm9uLWdyb3VwYWJsZSwgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGV0aGVyIE1JIHRlbXBsYXRlIHN1cHBvcnRzIHRoZW1cblx0XHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdFx0Z3JvdXBhYmxlVGFncy5wdXNoKHRhZyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhZ3MucHVzaCh0YWcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh0YWcgPT09ICdNZXJnZSBmcm9tJykge1xuXHRcdFx0XHRcdHRhZ3MucHVzaCh0YWcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsHt7JywgJ+WcqOmggemdouS4iuaJvuWIsHt7JykgKyB0YWcgKyB3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIGRvbid0IGRvIGFueXRoaW5nIGVsc2Ugd2l0aCBtZXJnZSB0YWdzXG5cdFx0XHRcdFx0aWYgKFsnTWVyZ2UnLCAnTWVyZ2UgdG8nXS5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0XHRwYXJhbXMubWVyZ2VUYXJnZXQgPSBudWxsO1xuXHRcdFx0XHRcdFx0cGFyYW1zLm1lcmdlUmVhc29uID0gbnVsbDtcblx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhZ090aGVyID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIFRvLWJlLXJldGFpbmVkIGV4aXN0aW5nIHRhZ3MgdGhhdCBhcmUgZ3JvdXBhYmxlXG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFnc1RvUmVtYWluKSB7XG5cdFx0XHRcdC8vIElmIHRoZSB0YWcgaXMgdW5rbm93biB0byB1cywgd2UgY29uc2lkZXIgaXQgbm9uLWdyb3VwYWJsZVxuXHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdGdyb3VwYWJsZUV4aXN0aW5nVGFncy5wdXNoKHRhZyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnN0IG1pVGVzdCA9XG5cdFx0XHRcdC9cXHtcXHsobXVsdGlwbGUgP2lzc3Vlc3xhcnRpY2xlID9pc3N1ZXN8bWl8YWl8aXNzdWVzfOWkmuWAi+WVj+mhjHzlpJrkuKrpl67poph85ZWP6aGM5qKd55uufOmXrumimOadoeebrnzmlbjlgIvllY/poYx85pWw5Liq6Zeu6aKYKVxccypcXHxbXn1dK1xcey9pbS5leGVjKFxuXHRcdFx0XHRcdHBhZ2VUZXh0XG5cdFx0XHRcdCk7XG5cdFx0XHRpZiAobWlUZXN0ICYmIGdyb3VwYWJsZVRhZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5pSv5oyB55qE5qCH6K6w5YWl5bey5a2Y5Zyo55qEe3ttdWx0aXBsZSBpc3N1ZXN9fScsXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5pSv5o+055qE5qiZ6KiY5YWl5bey5a2Y5Zyo55qEe3ttdWx0aXBsZSBpc3N1ZXN9fSdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ1RleHQgPSAnJztcblx0XHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgZ3JvdXBhYmxlVGFncykge1xuXHRcdFx0XHRcdGFkZFRhZyh0YWcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IG1pUmVnZXggPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdGAoXFxcXHtcXFxce1xcXFxzKiR7bWlUZXN0WzFdfVxcXFxzKig/OlxcXFx8KD86XFxcXHtcXFxce1tee31dKlxcXFx9XFxcXH18W157fV0pKik/KVxcXFx9XFxcXH1cXFxccypgLFxuXHRcdFx0XHRcdCdpbSdcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKG1pUmVnZXgsIGAkMSR7dGFnVGV4dH19fVxcbmApO1xuXHRcdFx0XHR0YWdUZXh0ID0gJyc7XG5cdFx0XHRcdGFkZFVuZ3JvdXBlZFRhZ3MoKTtcblx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLmdyb3VwICYmICFtaVRlc3QgJiYgZ3JvdXBhYmxlRXhpc3RpbmdUYWdzLmxlbmd0aCArIGdyb3VwYWJsZVRhZ3MubGVuZ3RoID49IDIpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXmlK/mjIHnmoTmoIforrDlhaV7e211bHRpcGxlIGlzc3Vlc319JywgJ+WKoOWFpeaUr+aPtOeahOaomeiomOWFpXt7bXVsdGlwbGUgaXNzdWVzfX0nKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0YWdUZXh0ICs9ICd7e011bHRpcGxlIGlzc3Vlc3xcXG4nO1xuXHRcdFx0XHQvKipcblx0XHRcdFx0ICogQWRkcyBuZXdseSBhZGRlZCB0YWdzIHRvIE1JXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHRjb25zdCBhZGROZXdUYWdzVG9NSSA9ICgpID0+IHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBncm91cGFibGVUYWdzKSB7XG5cdFx0XHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGFnVGV4dCArPSAnfX1cXG4nO1xuXHRcdFx0XHRcdGFkZFVuZ3JvdXBlZFRhZ3MoKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgZ2V0UmVkaXJlY3RzRm9yID0gW107XG5cdFx0XHRcdC8vIFJlcG9zaXRpb24gdGhlIHRhZ3Mgb24gdGhlIHBhZ2UgaW50byB7e211bHRpcGxlIGlzc3Vlc319LCBpZiBmb3VuZCB3aXRoIGl0c1xuXHRcdFx0XHQvLyBwcm9wZXIgbmFtZSwgZWxzZSBtb3ZlcyBpdCB0byBgZ2V0UmVkaXJlY3RzRm9yYCBhcnJheSB0byBiZSBoYW5kbGVkIGxhdGVyXG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGdyb3VwYWJsZUV4aXN0aW5nVGFncykge1xuXHRcdFx0XHRcdGNvbnN0IHRhZ19yZSA9IG5ldyBSZWdFeHAoYChcXFxce1xcXFx7JHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KHRhZyl9XFxcXHMqKFxcXFx8W159XSspP1xcXFx9XFxcXH1cXFxcbj8pYCk7XG5cdFx0XHRcdFx0aWYgKHRhZ19yZS50ZXN0KHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdFx0dGFnVGV4dCArPSB0YWdfcmUuZXhlYyhwYWdlVGV4dClbMV07XG5cdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGdldFJlZGlyZWN0c0Zvci5wdXNoKGBUZW1wbGF0ZToke3RhZ31gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFnZXRSZWRpcmVjdHNGb3IubGVuZ3RoKSB7XG5cdFx0XHRcdFx0YWRkTmV3VGFnc1RvTUkoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5qih5p2/6YeN5a6a5ZCRJywgJ+WPluW+l+aooeadv+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHByb3A6ICdsaW5rc2hlcmUnLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiBnZXRSZWRpcmVjdHNGb3Iuam9pbignfCcpLFxuXHRcdFx0XHRcdFx0cmVkaXJlY3RzOiAxLFxuXHRcdFx0XHRcdFx0bGhuYW1lc3BhY2U6ICcxMCcsXG5cdFx0XHRcdFx0XHRsaHNob3c6ICdyZWRpcmVjdCcsXG5cdFx0XHRcdFx0XHRsaGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdCQoYXBpb2JqLnJlc3BvbnNlWE1MKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgncGFnZScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfaWR4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0JChwYWdlKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmZpbmQoJ2xoJylcblx0XHRcdFx0XHRcdFx0XHRcdC5lYWNoKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGFnID0gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpLnNsaWNlKDkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0YWdfcmUgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGAoXFxcXHtcXFxceyR7TW9yZWJpdHMucGFnZU5hbWVSZWdleCh0YWcpfVxcXFxzKihcXFxcfFtefV0qKT9cXFxcfVxcXFx9XFxcXG4/KWBcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRhZ19yZS50ZXN0KHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhZ1RleHQgKz0gdGFnX3JlLmV4ZWMocGFnZVRleHQpWzFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZSh0YWdfcmUsICcnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgJC5lYWNoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFmb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aXoOazleWcqOmhtemdouS4iuaJvuWIsHt7JywgJ+eEoeazleWcqOmggemdouS4iuaJvuWIsHt7JykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQocGFnZSkuYXR0cigndGl0bGUnKS5zbGljZSg5KSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCd9feKApuKApui3s+i/hycsICd9feKApuKApui3s+mBjicpXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRhZGROZXdUYWdzVG9NSSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0YXBpLnBvc3QoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRhZ3MgPSBbLi4udGFncywgLi4uZ3JvdXBhYmxlVGFnc107XG5cdFx0XHRcdGFkZFVuZ3JvdXBlZFRhZ3MoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG5vdGFiaWxpdHlMaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KCdcXG57eycuY29uY2F0KCdzdWJzdDonLCBgRmFtZWl0ZW18dGl0bGU9JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX1gKSk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGDliqDlhaVbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5hcHBlbmQoKTtcblx0XHR9LFxuXHRcdHJlZGlyZWN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCBwYWdlVGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGxldCB0YWdSZTtcblx0XHRcdGxldCB0YWdUZXh0ID0gJyc7XG5cdFx0XHRsZXQgc3VtbWFyeVRleHQgPSAn5Yqg5YWlJztcblx0XHRcdGNvbnN0IHRhZ3MgPSBbXTtcblx0XHRcdGxldCBpO1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IHBhcmFtcy50YWdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHRhZ1JlID0gbmV3IFJlZ0V4cChgKFxcXFx7XFxcXHske3BhcmFtcy50YWdzW2ldfShcXFxcfHxcXFxcfVxcXFx9KSlgLCAnaW0nKTtcblx0XHRcdFx0aWYgKHRhZ1JlLmV4ZWMocGFnZVRleHQpKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6YeN5a6a5ZCR5LiK5om+5Yiwe3snLCAn5Zyo6YeN5paw5bCO5ZCR5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy50YWdzW2ldICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCd9feKApuKApui3s+i/hycsICd9feKApuKApui3s+mBjicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YWdzLnB1c2gocGFyYW1zLnRhZ3NbaV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyB1c2VkIGluIEFycmF5I2ZvckVhY2hcblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lLCB0YWdJbmRleCkgPT4ge1xuXHRcdFx0XHR0YWdUZXh0ICs9IGBcXG57eyR7dGFnTmFtZX1gO1xuXHRcdFx0XHRpZiAodGFnTmFtZSA9PT0gJ+mdnuS4reaWh+mHjeWumuWQkScpIHtcblx0XHRcdFx0XHRpZiAocGFyYW1zLmFsdExhbmdGcm9tKSB7XG5cdFx0XHRcdFx0XHR0YWdUZXh0ICs9IGB8MT0ke3BhcmFtcy5hbHRMYW5nRnJvbX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHQodGFnTmFtZSA9PT0gJ+adoeebruivt+axgumHjeWumuWQkScgfHwgdGFnTmFtZSA9PT0gJ+aineebruiri+axgumHjeWumuWQkScpICYmXG5cdFx0XHRcdFx0cGFyYW1zLnJlcUFydGljbGVMYW5nICYmXG5cdFx0XHRcdFx0cGFyYW1zLnJlcUFydGljbGVUaXRsZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGB8MT0ke3BhcmFtcy5yZXFBcnRpY2xlTGFuZ31gO1xuXHRcdFx0XHRcdHRhZ1RleHQgKz0gYHwyPSR7cGFyYW1zLnJlcUFydGljbGVUaXRsZX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRhZ1RleHQgKz0gJ319Jztcblx0XHRcdFx0aWYgKHRhZ0luZGV4ID4gMCkge1xuXHRcdFx0XHRcdGlmICh0YWdJbmRleCA9PT0gdGFncy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn5ZKMJztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRhZ0luZGV4IDwgdGFncy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn44CBJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3VtbWFyeVRleHQgKz0gYHt7W1s6JHt0YWdOYW1lLmluY2x1ZGVzKCc6JykgPyB0YWdOYW1lIDogYFRlbXBsYXRlOiR7dGFnTmFtZX18JHt0YWdOYW1lfWB9XV19fWA7XG5cdFx0XHR9O1xuXHRcdFx0aWYgKCF0YWdzLmxlbmd0aCkge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeacieagh+etvuWPr+S+m+agh+iusCcsICfmspLmnInmqJnnsaTlj6/kvpvmqJnoqJgnKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dGFncy5zb3J0KCk7XG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG5cdFx0XHRcdGFkZFRhZyh0YWcpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGFsbCBSY2F0IHNoZWxsIHJlZGlyZWN0cyAoZnJvbSAjNDMzKVxuXHRcdFx0aWYgKHBhZ2VUZXh0Lm1hdGNoKC97eyg/OnJlZHJ8dGhpcyBpcyBhIHJlZGlyZWN0fHIoPzplZGlyZWN0KT8oPzouP2NhdC4qKT9bIF9dP3NoKS9pKSkge1xuXHRcdFx0XHQvLyBSZWdleCBpbnNwaXJlZCBieSBbW1VzZXI6S2VwaGlyL2dhZGdldHMvc2FnaXR0YXJpdXMuanNdXSAoW1tTcGVjaWFsOlBlcm1hTGluay84MzE0MDI4OTNdXSlcblx0XHRcdFx0Y29uc3Qgb2xkVGFncyA9IHBhZ2VUZXh0Lm1hdGNoKC8oXFxzKnt7W0EtWmEtelxcc10rXFx8KD86XFxzKjE9KT8pKCg/OltefHt9XXx7e1tefV0rfX0pKykofX0pXFxzKi9pKTtcblx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKG9sZFRhZ3NbMF0sIG9sZFRhZ3NbMV0gKyB0YWdUZXh0ICsgb2xkVGFnc1syXSArIG9sZFRhZ3NbM10pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gRm9sZCBhbnkgcHJlLWV4aXN0aW5nIFJjYXRzIGludG8gdGFnbGlzdCBhbmQgdW5kZXIgUmNhdHNoZWxsXG5cdFx0XHRcdGNvbnN0IHBhZ2VUYWdzID0gcGFnZVRleHQubWF0Y2goL1xccyp7ey4rP+mHjeWumuWQkS4qP319L2dpbSk7XG5cdFx0XHRcdGxldCBvbGRQYWdlVGFncyA9ICcnO1xuXHRcdFx0XHRpZiAocGFnZVRhZ3MpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBwYWdlVGFnIG9mIHBhZ2VUYWdzKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYWdlUmUgPSBuZXcgUmVnRXhwKE1vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAocGFnZVRhZyksICdpbWcnKTtcblx0XHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShwYWdlUmUsICcnKTtcblx0XHRcdFx0XHRcdHBhZ2VUYWcgPSBwYWdlVGFnLnRyaW0oKTtcblx0XHRcdFx0XHRcdG9sZFBhZ2VUYWdzICs9IGBcXG4ke3BhZ2VUYWd9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFnZVRleHQgKz0gYFxcbnt7UmVkaXJlY3QgY2F0ZWdvcnkgc2hlbGx8JHt0YWdUZXh0fSR7b2xkUGFnZVRhZ3N9XFxufX1gO1xuXHRcdFx0fVxuXHRcdFx0c3VtbWFyeVRleHQgKz1cblx0XHRcdFx0KHRhZ3MubGVuZ3RoID4gMCA/IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpIDogJ3t7UmVkaXJlY3QgY2F0ZWdvcnkgc2hlbGx9fScpICtcblx0XHRcdFx0d2luZG93LndnVUxTKCfliLDph43lrprlkJEnLCAn5Yiw6YeN5paw5bCO5ZCRJyk7XG5cdFx0XHQvLyBhdm9pZCB0cnVuY2F0ZWQgc3VtbWFyaWVzXG5cdFx0XHRpZiAoc3VtbWFyeVRleHQubGVuZ3RoID4gNDk5KSB7XG5cdFx0XHRcdHN1bW1hcnlUZXh0ID0gc3VtbWFyeVRleHQucmVwbGFjZSgvXFxbXFxbW158XStcXHwoW15cXF1dKylcXF1cXF0vZywgJyQxJyk7XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRwYWdlb2JqLnNldE1pbm9yRWRpdChUd2lua2xlLmdldFByZWYoJ21hcmtUYWdnZWRQYWdlc0FzTWlub3InKSk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGZpbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRsZXQgc3VtbWFyeSA9ICfliqDlhaUnO1xuXHRcdFx0Ly8gQWRkIG1haW50ZW5hbmNlIHRhZ3Ncblx0XHRcdGlmIChwYXJhbXMudGFncy5sZW5ndGgpIHtcblx0XHRcdFx0bGV0IHRhZ3RleHQgPSAnJztcblx0XHRcdFx0bGV0IGN1cnJlbnRUYWc7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWdzKSB7XG5cdFx0XHRcdFx0Ly8gd2hlbiBvdGhlciBjb21tb25zLXJlbGF0ZWQgdGFncyBhcmUgcGxhY2VkLCByZW1vdmUgXCJtb3ZlIHRvIFNoYXJlXCIgdGFnXG5cdFx0XHRcdFx0aWYgKFsnS2VlcCBsb2NhbCcsICdOb3cgWXNBcmNoaXZlcyBTaGFyZScsICdEbyBub3QgbW92ZSB0byBZc0FyY2hpdmVzIFNoYXJlJ10uaW5jbHVkZXModGFnKSkge1xuXHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0L3t7KG10Y3woY29weSB8bW92ZSApP3RvID9zaGFyZXxtb3ZlIHRvIHlzYXJjaGl2ZXMgc2hhcmV8Y29weSB0byB5c2FyY2hpdmVzIHNoYXJlKVtefV0qfX0vZ2ksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGFnID09PSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJykge1xuXHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0L1xce1xceygoY29udmVydCB0byB8Y29udmVydHRvfHNob3VsZCBiZSB8c2hvdWxkYmV8dG8pP3N2Z3xiYWRwbmd8dmVjdG9yaXplKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHRcdFx0XHQnJ1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y3VycmVudFRhZyA9IHRhZztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm93IENvbW1vbnMnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnID0gYHN1YnN0OiR7Y3VycmVudFRhZ31gOyAvLyBzdWJzdFxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm5vd2NvbW1vbnNOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLm5vd2NvbW1vbnNOYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdLZWVwIGxvY2FsJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5rZWVwbG9jYWxOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLmtlZXBsb2NhbE5hbWV9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmtlZXBsb2NhbFJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmtlZXBsb2NhbFJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVuYW1lIG1lZGlhJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYU5ld25hbWUgIT09ICcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMucmVuYW1lbWVkaWFOZXduYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8Mj0ke3BhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJzpcblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGNhc2UgJ09ic29sZXRlJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXNbYCR7dGFnLnJlcGxhY2UoLyAvZywgJ18nKX1GaWxlYF19YDtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdEbyBub3QgbW92ZSB0byBDb21tb25zJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHJlYXNvbj0ke3BhcmFtcy5Eb05vdE1vdmVUb0NvbW1vbnNfcmVhc29ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnQ29weSB0byBXaWtpbWVkaWEgQ29tbW9ucyc6XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxodW1hbj0ke213LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKX1gO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gZG9uJ3QgY2FyZVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGN1cnJlbnRUYWcgPSBge3ske2N1cnJlbnRUYWd9fX1cXG5gO1xuXHRcdFx0XHRcdHRhZ3RleHQgKz0gY3VycmVudFRhZztcblx0XHRcdFx0XHRzdW1tYXJ5ICs9IGB7eyR7dGFnfX1944CBYDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIXRhZ3RleHQpIHtcblx0XHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0XHQud2Fybih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nO+8jOayoeS7gOS5iOimgeWBmueahCcsICfkvb/nlKjogIXlj5bmtojmk43kvZzvvIzmspLku4DpurzopoHlgZrnmoQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRleHQgPSB0YWd0ZXh0ICsgdGV4dDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkuc2xpY2UoMCwgTWF0aC5tYXgoMCwgc3VtbWFyeS5sZW5ndGggLSAxKSkpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRwYWdlb2JqLnNldE1pbm9yRWRpdChUd2lua2xlLmdldFByZWYoJ21hcmtUYWdnZWRQYWdlc0FzTWlub3InKSk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnRhZy5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0Ly8gVmFsaWRhdGlvblxuXHRcdC8vIEdpdmVuIGFuIGFycmF5IG9mIGluY29tcGF0aWJsZSB0YWdzLCBjaGVjayBpZiB3ZSBoYXZlIHR3byBvciBtb3JlIHNlbGVjdGVkXG5cdFx0Y29uc3QgY2hlY2tJbmNvbXBhdGlibGUgPSAoY29uZmxpY3RzLCBleHRyYSkgPT4ge1xuXHRcdFx0Y29uc3QgY291bnQgPSBjb25mbGljdHMucmVkdWNlKChzdW0sIHRhZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKHN1bSArPSBwYXJhbXMudGFncy5pbmNsdWRlcyh0YWcpKTtcblx0XHRcdH0sIDApO1xuXHRcdFx0aWYgKGNvdW50ID4gMSkge1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9IGAke3dpbmRvdy53Z1VMUygn6K+35Zyo5Lul5LiL5qCH562+5Lit5oup5LiA5L2/55SoJywgJ+iri+WcqOS7peS4i+aomeexpOS4reaTh+S4gOS9v+eUqCcpfe+8mnt7JHtjb25mbGljdHMuam9pbihcblx0XHRcdFx0XHQnfX3jgIF7eydcblx0XHRcdFx0KX19feOAgmA7XG5cdFx0XHRcdG1lc3NhZ2UgKz0gZXh0cmEgfHwgJyc7XG5cdFx0XHRcdG13Lm5vdGlmeShtZXNzYWdlLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gR2l2ZW4gYSB0YWcsIGVuc3VyZSBhbiBhc3NvY2lhdGUgcGFyYW1ldGVyIGlzIHByZXNlbnRcblx0XHQvLyBNYXliZSBqdXN0IHNvY2sgdGhpcyBhd2F5IGluIGVhY2ggZnVuY3Rpb24/Pz9cblx0XHRjb25zdCBjaGVja1BhcmFtZXRlciA9ICh0YWcsIHBhcmFtZXRlciwgZGVzY3JpcHRpb24gPSAn55CG55SxJykgPT4ge1xuXHRcdFx0aWYgKHBhcmFtcy50YWdzLmluY2x1ZGVzKHRhZykgJiYgcGFyYW1zW3BhcmFtZXRlcl0udHJpbSgpID09PSAnJykge1xuXHRcdFx0XHRtdy5ub3RpZnkoYCR7d2luZG93LndnVUxTKCfmgqjlv4XpobvmjIflrponLCAn5oKo5b+F6aCI5oyH5a6aJyl9e3ske3RhZ319feeahCR7ZGVzY3JpcHRpb25944CCYCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICdmcmllbmRseXRhZycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdC8vIFdlIGNvdWxkIHRoZW9yZXRpY2FsbHkgcHV0IHRoZW0gYWxsIGNoZWNrSW5jb21wYXRpYmxlIGNhbGxzIGluIGFcblx0XHQvLyBmb3JFYWNoIGxvb3AsIGJ1dCBpdCdzIHByb2JhYmx5IGNsZWFyZXIgbm90IHRvIGhhdmUgW1thcnJheSBvbmVdLFxuXHRcdC8vIFthcnJheSB0d29dXSBkZXZvaWQgb2YgY29udGV4dC4gTGlrZXdpc2UsIGFsbCB0aGUgY2hlY2tQYXJhbWV0ZXJcblx0XHQvLyBjYWxscyBjb3VsZCBiZSBpbiBvbmUgaWYsIGJ1dCBjb3VsZCBiZSBzaW1pbGFybHkgY29uZnVzaW5nLlxuXHRcdHN3aXRjaCAoVHdpbmtsZS50YWcubW9kZUVuKSB7XG5cdFx0XHRjYXNlICdhcnRpY2xlJzpcblx0XHRcdFx0cGFyYW1zLnRhZ3NUb1JlbW92ZSA9IGZvcm0uZ2V0VW5jaGVja2VkKCdleGlzdGluZ1RhZ3MnKTsgLy8gbm90IGluIGBpbnB1dGBcblx0XHRcdFx0cGFyYW1zLnRhZ3NUb1JlbWFpbiA9IHBhcmFtcy5leGlzdGluZ1RhZ3MgfHwgW107IC8vIGNvbnRhaW5lciBub3QgY3JlYXRlZCBpZiBub25lIHByZXNlbnRcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy50YWdzLmluY2x1ZGVzKCdNZXJnZScpIHx8XG5cdFx0XHRcdFx0cGFyYW1zLnRhZ3MuaW5jbHVkZXMoJ01lcmdlIGZyb20nKSB8fFxuXHRcdFx0XHRcdHBhcmFtcy50YWdzLmluY2x1ZGVzKCdNZXJnZSB0bycpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGNoZWNrSW5jb21wYXRpYmxlKFxuXHRcdFx0XHRcdFx0XHRbJ01lcmdlJywgJ01lcmdlIGZyb20nLCAnTWVyZ2UgdG8nXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfoi6XpnIDopoHlpJrmrKHlkIjlubbvvIzor7fkvb/nlKh7e01lcmdlfX3lubbnlKjnrqHpgZPnrKbliIbpmpTmnaHnm67lkI3vvIjkvYblnKjov5nnp43mg4XlvaLkuK1Ud2lua2xl5LiN6IO96Ieq5Yqo5qCH6K6w5YW25LuW5p2h55uu77yJ44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6Iul6ZyA6KaB5aSa5qyh5ZCI5L2177yM6KuL5L2/55Soe3tNZXJnZX195Lim55So566h6YGT56ym5YiG6ZqU5qKd55uu5ZCN77yI5L2G5Zyo6YCZ56iu5oOF5b2i5LitVHdpbmtsZeS4jeiDveiHquWLleaomeiomOWFtuS7luaineebru+8ieOAgidcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIXBhcmFtcy5tZXJnZVRhcmdldCkge1xuXHRcdFx0XHRcdFx0bXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivt+aMh+WumuS9v+eUqOS6jm1lcmdl5qih5p2/5Lit55qE5Y+m5LiA5Liq6aG16Z2i5qCH6aKY44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6KuL5oyH5a6a5L2/55So5pa8bWVyZ2XmqKHmnb/kuK3nmoTlj6bkuIDlgIvpoIHpnaLmqJnpoYzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoKHBhcmFtcy5tZXJnZVRhZ090aGVyIHx8IHBhcmFtcy5tZXJnZVJlYXNvbikgJiYgcGFyYW1zLm1lcmdlVGFyZ2V0LmluY2x1ZGVzKCd8JykpIHtcblx0XHRcdFx0XHRcdG13Lm5vdGlmeShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflvZPliY3ov5jkuI3mlK/mjIHlnKjkuIDmrKHlkIjlubbkuK3moIforrDlpJrkuKrmnaHnm67vvIzkuI7lvIDlkK/lhbPkuo7lpJrkuKrmnaHnm67nmoTorqjorrrjgILor7fkuI3opoHli77pgInigJzmoIforrDlhbbku5bmnaHnm67igJ3lubbmuIXnqbrigJznkIbnlLHigJ3moYblkI7lho3mj5DkuqTjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfnm67liY3pgoTkuI3mlK/mj7TlnKjkuIDmrKHlkIjkvbXkuK3mqJnoqJjlpJrlgIvmop3nm67vvIzoiIfplovllZ/pl5zmlrzlpJrlgIvmop3nm67nmoToqI7oq5bjgILoq4vkuI3opoHli77pgbjjgIzmqJnoqJjlhbbku5bmop3nm67jgI3kuKbmuIXnqbrjgIznkIbnlLHjgI3moYblvozlho3mj5DkuqTjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y2hlY2tQYXJhbWV0ZXIoXG5cdFx0XHRcdFx0XHQnTWlzc2luZyBpbmZvcm1hdGlvbicsXG5cdFx0XHRcdFx0XHQnbWlzc2luZ0luZm9ybWF0aW9uJyxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn57y65bCR55qE5YaF5a65JywgJ+e8uuWwkeeahOWFp+WuuScpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNoZWNrUGFyYW1ldGVyKCdFeHBlcnQgbmVlZGVkJywgJ2V4cGVydCcsIHdpbmRvdy53Z1VMUygn5LiT5a626aKG5Z+fJywgJ+WwiOWutumgmOWfnycpKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2ZpbGUnOlxuXHRcdFx0XHQvLyBTaWxseSB0byBwcm92aWRlIHRoZSBzYW1lIHN0cmluZyB0byBlYWNoIG9mIHRoZXNlXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjaGVja1BhcmFtZXRlcignT2Jzb2xldGUnLCAnT2Jzb2xldGVGaWxlJywgd2luZG93LndnVUxTKCfmm7/mjaLnmoTmlofku7blkI3np7AnLCAn5pu/5o+b55qE5qqU5qGI5ZCN56ixJykpIHx8XG5cdFx0XHRcdFx0Y2hlY2tQYXJhbWV0ZXIoXG5cdFx0XHRcdFx0XHQnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJyxcblx0XHRcdFx0XHRcdCdWZWN0b3JfdmVyc2lvbl9hdmFpbGFibGVGaWxlJyxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pu/5o2i55qE5paH5Lu25ZCN56ewJywgJ+abv+aPm+eahOaqlOahiOWQjeeosScpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNoZWNrUGFyYW1ldGVyKCdEbyBub3QgbW92ZSB0byBDb21tb25zJywgJ0RvTm90TW92ZVRvQ29tbW9uc19yZWFzb24nKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlZGlyZWN0Jzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkoYFR3aW5rbGUudGFn77ya5pyq55+l5qih5byPICR7VHdpbmtsZS50YWcubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBGaWxlL3JlZGlyZWN0OiByZXR1cm4gaWYgbm8gdGFncyBzZWxlY3RlZFxuXHRcdC8vIEFydGljbGU6IHJldHVybiBpZiBubyB0YWcgaXMgc2VsZWN0ZWQgYW5kIG5vIGFscmVhZHkgcHJlc2VudCB0YWcgaXMgZGVzZWxlY3RlZFxuXHRcdGlmIChwYXJhbXMudGFncy5sZW5ndGggPT09IDAgJiYgKFR3aW5rbGUudGFnLm1vZGVFbiAhPT0gJ2FydGljbGUnIHx8IHBhcmFtcy50YWdzVG9SZW1vdmUubGVuZ3RoID09PSAwKSkge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5b+F6aG76YCJ5oup6Iez5bCR5LiA5Liq5qCH6K6w77yBJywgJ+W/hemgiOmBuOaTh+iHs+WwkeS4gOWAi+aomeiomO+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBNb3JlYml0cy5wYWdlTmFtZU5vcm07XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ3JlZGlyZWN0Jykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSxcblx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5qCH6K6wJywgJ+ato+WcqOaomeiomCcpICsgVHdpbmtsZS50YWcubW9kZVxuXHRcdCk7XG5cdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUudGFnLmNhbGxiYWNrc1tUd2lua2xlLnRhZy5tb2RlRW5dKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS50YWcsICd0YWcnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHtnZW5lcmF0ZUFycmF5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVzdHViLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZXN0dWIoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZXN0dWIuanM6IFRhZyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiU3R1YlwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nIGFydGljbGVzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKiBOb3RlOiBjdXN0b21pc2VkIGZyaWVuZGx5dGFnIG1vZHVsZVxuXHQgKi9cblx0VHdpbmtsZS5zdHViID0gKCkgPT4ge1xuXHRcdGlmIChNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSB7XG5cdFx0XHQvLyBTa2lwXG5cdFx0XHQvLyBhcnRpY2xlL2RyYWZ0IGFydGljbGUgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQoWzAsIDMwMl0uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSkgJiYgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSAn5p2h55uuJztcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoVHdpbmtsZS5zdHViLmNhbGxiYWNrLCAn5bCP5L2c5ZOBJywgJ2ZyaWVuZGx5LXRhZycsICfmoIforrDlsI/kvZzlk4EnKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0Ly8gU2tpcFxuXHRcdFx0Ly8gYXJ0aWNsZS9kcmFmdCBhcnRpY2xlIHRhZ2dpbmdcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0KChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDMwMikgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayxcblx0XHRcdFx0J+Wwj+S9nOWTgScsXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOWwj+S9nOWTgScsICfmqJnoqJjlsI/kvZzlk4EnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYzMCwgVHdpbmtsZS5zdHViLm1vZGUgPT09ICdhcnRpY2xlJyA/IDQ1MCA6IDQwMCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+Wwj+S9nOWTgeiqquaYjicsICflsI/kvZzlk4Hor7TmmI4nKSwgJ1FXOuWwj+S9nOWTgScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCP5L2c5ZOB6K6+572uJywgJ+Wwj+S9nOWTgeioreWumicpLCAnSDpUVy9QUkVGI3N0dWInKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjc3R1YicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYXRyb2xsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDpobXpnaLkuLrlt7Llt6Hmn6UnLCAn5qiZ6KiY6aCB6Z2i54K65bey5beh5p+lJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHN3aXRjaCAoVHdpbmtsZS5zdHViLm1vZGUpIHtcblx0XHRcdGNhc2UgJ+aineebric6XG5cdFx0XHRjYXNlICfmnaHnm64nOlxuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmnaHnm67lsI/kvZzlk4HmoIforrAnLCAn5qKd55uu5bCP5L2c5ZOB5qiZ6KiYJykpO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvcnRvcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p+l55yL5YiX6KGo77yaJywgJ+aqouimluWIl+ihqO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5Y+C5pWw6K6+572u77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5YGP5aW96Kit5a6a77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjYXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjInnsbvlnosnLCAn5oyJ6aGe5YilJyksXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdjYXQnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnYWxwaGEnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+aMieWtl+avjScsXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdhbHBoYScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdXb3JrQXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnN0dWLvvJrmnKrnn6XmqKHlvI8gJHtUd2lua2xlLnN0dWIubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRpZiAoWyfmnaHnm64nLCAn5qKd55uuJ10uaW5jbHVkZXMoVHdpbmtsZS5zdHViLm1vZGUpKSB7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzID0gW107XG5cdFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUuc3R1Yi5jaGVja2VkVGFncyA9IGUudGFyZ2V0LmZvcm0uZ2V0Q2hlY2tlZCgnYXJ0aWNsZVRhZ3MnKTtcblx0XHRUd2lua2xlLnN0dWIuY2hlY2tlZFRhZ3MgPz89IFtdO1xuXHRcdGNvbnN0IGNvbnRhaW5lciA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZnJhZ21lbnQnLFxuXHRcdH0pO1xuXHRcdC8vIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgY2hlY2tib3gsIHdpdGggYXBwcm9wcmlhdGUgc3ViZ3JvdXAgaWYgbmVlZGVkXG5cdFx0Y29uc3QgbWFrZUNoZWNrYm94ID0gKHRhZywgZGVzY3JpcHRpb24pID0+IHtcblx0XHRcdGNvbnN0IGNoZWNrYm94ID0ge1xuXHRcdFx0XHR2YWx1ZTogdGFnLFxuXHRcdFx0XHRsYWJlbDogYHt7JHt0YWd9fX06ICR7ZGVzY3JpcHRpb259YCxcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzLmluY2x1ZGVzKHRhZykpIHtcblx0XHRcdFx0Y2hlY2tib3guY2hlY2tlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY2hlY2tib3g7XG5cdFx0fTtcblx0XHQvLyBhcHBlbmQgYW55IGN1c3RvbSB0YWdzXG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tU3R1Ykxpc3QnKS5sZW5ndGgpIHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBjdXN0b21jaGVja2JveGVzID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21TdHViTGlzdCcpKSB7XG5cdFx0XHRcdGN1c3RvbWNoZWNrYm94ZXNbY3VzdG9tY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KGl0ZW0udmFsdWUsIGl0ZW0ubGFiZWwpO1xuXHRcdFx0fVxuXHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdhcnRpY2xlVGFncycsXG5cdFx0XHRcdGxpc3Q6IGN1c3RvbWNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gY2F0ZWdvcmljYWwgc29ydCBvcmRlclxuXHRcdGlmIChzb3J0b3JkZXIgPT09ICdjYXQnKSB7XG5cdFx0XHQvLyBmdW5jdGlvbiB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHRhZ3MgYW5kIGNyZWF0ZSBhIGNoZWNrYm94IGZvciBlYWNoIG9uZVxuXHRcdFx0Y29uc3QgZG9DYXRlZ29yeUNoZWNrYm94ZXMgPSAoc3ViZGl2LCBhcnJheSkgPT4ge1xuXHRcdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGFycmF5KSB7XG5cdFx0XHRcdFx0Y29uc3QgZGVzY3JpcHRpb24gPSBUd2lua2xlLnN0dWIuYXJ0aWNsZS50YWdzW3RhZ107XG5cdFx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ0aWNsZVRhZ3MnLFxuXHRcdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHRcdGxldCBpID0gMDtcblx0XHRcdC8vIGdvIHRocm91Z2ggZWFjaCBjYXRlZ29yeSBhbmQgc3ViLWNhdGVnb3J5IGFuZCBhcHBlbmQgbGlzdHMgb2YgY2hlY2tib3hlc1xuXHRcdFx0Zm9yIChjb25zdCBbdGl0bGUsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMpKSB7XG5cdFx0XHRcdGNvbnN0IHRpdGxlTmFtZSA9IFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXJbdGl0bGVdO1xuXHRcdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRpZDogYHRhZ0hlYWRlciR7aX1gLFxuXHRcdFx0XHRcdGxhYmVsOiB0aXRsZU5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBzdWJkaXYgPSBjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogYHRhZ1N1YmRpdiR7aSsrfWAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShjb250ZW50KSkge1xuXHRcdFx0XHRcdGRvQ2F0ZWdvcnlDaGVja2JveGVzKHN1YmRpdiwgY29udGVudCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbc3VidGl0bGUsIHN1YmNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRlbnQpKSB7XG5cdFx0XHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBbTW9yZWJpdHMuaHRtbE5vZGUoJ2InLCBzdWJ0aXRsZSldLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIHN1YmNvbnRlbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gYWxwaGFiZXRpY2FsIHNvcnQgb3JkZXJcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgY2hlY2tib3hlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBbdGFnLCBkZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS5zdHViLmFydGljbGUudGFncykpIHtcblx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHR9XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2FydGljbGVUYWdzJyxcblx0XHRcdFx0bGlzdDogY2hlY2tib3hlcyxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCAkd29ya2FyZWEgPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2RpdiN0YWdXb3JrQXJlYScpO1xuXHRcdGNvbnN0IHJlbmRlcmVkID0gY29udGFpbmVyLnJlbmRlcigpO1xuXHRcdCR3b3JrYXJlYS5lbXB0eSgpLmFwcGVuZChyZW5kZXJlZCk7XG5cdFx0Ly8gc3R5bGUgYWRqdXN0bWVudHNcblx0XHQkd29ya2FyZWEuZmluZCgnaDUnKS5jc3Moe1xuXHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMTAlJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnaDU6bm90KDpmaXJzdC1jaGlsZCknKS5jc3Moe1xuXHRcdFx0J21hcmdpbi10b3AnOiAnMWVtJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnZGl2JykuZmlsdGVyKCc6aGFzKHNwYW4ucXVpY2tmb3JtRGVzY3JpcHRpb24pJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzAuNGVtJyxcblx0XHR9KTtcblx0XHQvLyBhZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ2FydGljbGVUYWdzJykpIHtcblx0XHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgJz4nKTtcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdjbGFzcycsICd0YWctdGVtcGxhdGUtbGluaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdCdocmVmJyxcblx0XHRcdFx0bXcudXRpbC5nZXRVcmwoYFRlbXBsYXRlOiR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGNoZWNrYm94LnZhbHVlcyl9YClcblx0XHRcdCk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0XHQkY2hlY2tib3gucGFyZW50KCkuYXBwZW5kKFsnXFx1MDBBMCcsIGxpbmtdKTtcblx0XHR9XG5cdH07XG5cdC8vIFRhZ3MgZm9yIEFSVElDTEVTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmFydGljbGUgPSB7fTtcblx0Ly8gQSBsaXN0IG9mIGFsbCBhcnRpY2xlIHRhZ3MsIGluIGFscGhhYmV0aWNhbCBvcmRlclxuXHQvLyBUbyBlbnN1cmUgdGFncyBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgXCJjYXRlZ29yaXplZFwiIHZpZXcsIGFkZCB0aGVtIHRvIHRoZSB0YWdDYXRlZ29yaWVzIGhhc2ggYmVsb3cuXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ3MgPSB7XG5cdFx0J2FjdG9yLXN0dWInOiAn5ryU5ZGYJyxcblx0XHQnYXNpYS1zdHViJzogJ+S6mua0sicsXG5cdFx0J2Jpby1zdHViJzogJ+S6uueJqScsXG5cdFx0J2Jpb2xvZ3ktc3R1Yic6ICfnlJ/nianlraYnLFxuXHRcdCdjaGVtLXN0dWInOiAn5YyW5a2mJyxcblx0XHQnZXVyb3BlLXN0dWInOiAn5qyn5rSyJyxcblx0XHQnZXhwYW5kIGxpc3QnOiAn5pyq5a6M5oiQ5YiX6KGoJyxcblx0XHQnZm9vZC1zdHViJzogJ+mjn+eJqScsXG5cdFx0J2ZyYW5jZS1nZW8tc3R1Yic6ICfms5Xlm73lnLDnkIYnLFxuXHRcdCdnZW8tc3R1Yic6ICflnLDnkIbkvY3nva4nLFxuXHRcdCdoaXN0LXN0dWInOiAn5Y6G5Y+y5oiW5Y6G5Y+y5a2mJyxcblx0XHQnSlAtc3R1Yic6ICfml6XmnKwnLFxuXHRcdCdsaXQtc3R1Yic6ICfmloflraYnLFxuXHRcdCdtYXRoLXN0dWInOiAn5pWw5a2mJyxcblx0XHQnbWVkLXN0dWInOiAn5Yy75a2mJyxcblx0XHQnbWlsLXN0dWInOiAn5Yab5LqLJyxcblx0XHQnbW92aWUtc3R1Yic6ICfnlLXlvbEnLFxuXHRcdCdtdXNpYy1zdHViJzogJ+mfs+S5kCcsXG5cdFx0J3BoeXNpY3Mtc3R1Yic6ICfniannkIblraYnLFxuXHRcdCdwb2xpdGljLXN0dWInOiAn5pS/5rK7Jyxcblx0XHQncmVsaWdpb24tc3R1Yic6ICflrpfmlZknLFxuXHRcdCdzY2llbmNlLXN0dWInOiAn56eR5a2mJyxcblx0XHQnc3BvcnQtc3R1Yic6ICfkvZPogrInLFxuXHRcdHN0dWI6ICfpgJrnlKjlsI/kvZzlk4EnLFxuXHRcdCdzd2l0emVybGFuZC1zdHViJzogJ+eRnuWjqycsXG5cdFx0J3RlY2gtc3R1Yic6ICfnp5HmioAnLFxuXHRcdCd0cmFuc3Atc3R1Yic6ICfkuqTpgJonLFxuXHRcdCdUVi1zdHViJzogJ+eUteinhicsXG5cdFx0J1VLLXN0dWInOiAn6Iux5Zu9Jyxcblx0XHQnVVMtYmlvLXN0dWInOiAn576O5Zu95Lq654mpJyxcblx0XHQnVVMtZ2VvLXN0dWInOiAn576O5Zu95Zyw55CGJyxcblx0XHQnVVMtc3R1Yic6ICfnvo7lm70nLFxuXHRcdCd3ZWF0aGVyLXN0dWInOiAn5aSp5rCU5ZKM54m55Yir55qE5aSp5rCU5LqL5Lu2Jyxcblx0fTtcblx0Ly8gQSBsaXN0IG9mIHRhZ3MgaW4gb3JkZXIgb2YgY2F0ZWdvcnlcblx0Ly8gVGFncyBzaG91bGQgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHdpdGhpbiB0aGUgY2F0ZWdvcmllc1xuXHQvLyBBZGQgbmV3IGNhdGVnb3JpZXMgd2l0aCBkaXNjcmV0aW9uIC0gdGhlIGxpc3QgaXMgbG9uZyBlbm91Z2ggYXMgaXMhXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXIgPSB7XG5cdFx0Z2VuZXJhbDogJ+mAmueUqOaooeadvycsXG5cdFx0Z2VvOiAn5Zu95a625ZKM5Zyw55CGJyxcblx0XHRvdGhlcnM6ICfmnYLpobknLFxuXHRcdGJpbzogJ+S6uueJqScsXG5cdFx0c2NpZW5jZTogJ+enkeWtpicsXG5cdFx0c3BvcnQ6ICfkvZPogrInLFxuXHRcdHRlY2g6ICfmioDmnK8nLFxuXHRcdGFydDogJ+iJuuacrycsXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMgPSB7XG5cdFx0Z2VuZXJhbDogWydzdHViJywgJ2V4cGFuZCBsaXN0J10sXG5cdFx0Z2VvOiBbXG5cdFx0XHQnYXNpYS1zdHViJyxcblx0XHRcdCdldXJvcGUtc3R1YicsXG5cdFx0XHQnZnJhbmNlLWdlby1zdHViJyxcblx0XHRcdCdnZW8tc3R1YicsXG5cdFx0XHQnSlAtc3R1YicsXG5cdFx0XHQnc3dpdHplcmxhbmQtc3R1YicsXG5cdFx0XHQnVUstc3R1YicsXG5cdFx0XHQnVVMtYmlvLXN0dWInLFxuXHRcdFx0J1VTLWdlby1zdHViJyxcblx0XHRcdCdVUy1zdHViJyxcblx0XHRdLFxuXHRcdG90aGVyczogWydmb29kLXN0dWInLCAnaGlzdC1zdHViJywgJ21pbC1zdHViJywgJ3BvbGl0aWMtc3R1YicsICdyZWxpZ2lvbi1zdHViJywgJ3RyYW5zcC1zdHViJ10sXG5cdFx0YmlvOiBbJ2FjdG9yLXN0dWInLCAnYmlvLXN0dWInLCAnVVMtYmlvLXN0dWInXSxcblx0XHRzY2llbmNlOiBbJ2Jpb2xvZ3ktc3R1YicsICdjaGVtLXN0dWInLCAnbWF0aC1zdHViJywgJ21lZC1zdHViJywgJ3BoeXNpY3Mtc3R1YicsICdzY2llbmNlLXN0dWInLCAnd2VhdGhlci1zdHViJ10sXG5cdFx0c3BvcnQ6IFsnc3BvcnQtc3R1YiddLFxuXHRcdHRlY2g6IFsndGVjaC1zdHViJ10sXG5cdFx0YXJ0OiBbJ2FjdG9yLXN0dWInLCAnbGl0LXN0dWInLCAnbW92aWUtc3R1YicsICdtdXNpYy1zdHViJywgJ1RWLXN0dWInXSxcblx0fTtcblx0Ly8gVGFncyBmb3IgUkVESVJFQ1RTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmNhbGxiYWNrcyA9IHtcblx0XHRtYWluOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0YWdSZTtcblx0XHRcdGxldCBzdW1tYXJ5VGV4dCA9ICfliqDlhaUnO1xuXHRcdFx0bGV0IHRhZ3MgPSBbXTtcblx0XHRcdGNvbnN0IGdyb3VwYWJsZVRhZ3MgPSBbXTtcblx0XHRcdGxldCBpO1xuXHRcdFx0Ly8gUmVtb3ZlIHRhZ3MgdGhhdCBiZWNvbWUgc3VwZXJmbHVvdXMgd2l0aCB0aGlzIGFjdGlvblxuXHRcdFx0bGV0IHBhZ2VUZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gQ2hlY2sgZm9yIHByZWV4aXN0aW5nIHRhZ3MgYW5kIHNlcGFyYXRlIHRhZ3MgaW50byBncm91cGFibGUgYW5kIG5vbi1ncm91cGFibGUgYXJyYXlzXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgcGFyYW1zLnRhZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dGFnUmUgPSBuZXcgUmVnRXhwKGAoXFxcXHtcXFxceyR7cGFyYW1zLnRhZ3NbaV19KFxcXFx8fFxcXFx9XFxcXH0pKWAsICdpbScpO1xuXHRcdFx0XHRpZiAodGFnUmUuZXhlYyhwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRg5Zyo6aG16Z2i5LiK5om+5Yiwe3ske3BhcmFtcy50YWdzW2ldfX194oCm4oCm6Lez6L+HYCxcblx0XHRcdFx0XHRcdFx0YOWcqOmggemdouS4iuaJvuWIsHt7JHtwYXJhbXMudGFnc1tpXX19feKApuKApui3s+mBjmBcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRhZ3MgPSBbLi4udGFncywgLi4uZ2VuZXJhdGVBcnJheShwYXJhbXMudGFnc1tpXSldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0YWdzID0gWy4uLnRhZ3MsIC4uLmdyb3VwYWJsZVRhZ3NdO1xuXHRcdFx0dGFncy5zb3J0KCk7XG5cdFx0XHRjb25zdCB0b3RhbFRhZ3MgPSB0YWdzLmxlbmd0aDtcblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lLCB0YWdJbmRleCkgPT4ge1xuXHRcdFx0XHRwYWdlVGV4dCArPSBgXFxue3ske3RhZ05hbWV9fX1gO1xuXHRcdFx0XHRpZiAodGFnSW5kZXggPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHRhZ0luZGV4ID09PSB0b3RhbFRhZ3MgLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn5ZKMJztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRhZ0luZGV4IDwgdG90YWxUYWdzIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+OAgSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9ICd7e1tbJztcblx0XHRcdFx0c3VtbWFyeVRleHQgKz0gdGFnTmFtZS5pbmNsdWRlcygnOicpID8gdGFnTmFtZSA6IGBUZW1wbGF0ZToke3RhZ05hbWV9fCR7dGFnTmFtZX1gO1xuXHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAnXV19fSc7XG5cdFx0XHR9O1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdH1cblx0XHRcdHN1bW1hcnlUZXh0ICs9IHdpbmRvdy53Z1VMUygn5qCH6K6w5YiwJywgJ+aomeiomOWIsCcpICsgVHdpbmtsZS5zdHViLm1vZGU7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3R1YmJlZFBhZ2VzJykpO1xuXHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vcicpKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRpZiAocGFyYW1zLnBhdHJvbCkge1xuXHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IHt9O1xuXHRcdGlmIChmb3JtLnBhdHJvbFBhZ2UpIHtcblx0XHRcdHBhcmFtcy5wYXRyb2wgPSBmb3JtLnBhdHJvbFBhZ2UuY2hlY2tlZDtcblx0XHR9XG5cdFx0c3dpdGNoIChUd2lua2xlLnN0dWIubW9kZSkge1xuXHRcdFx0Y2FzZSAn5qKd55uuJzpcblx0XHRcdGNhc2UgJ+adoeebric6XG5cdFx0XHRcdHBhcmFtcy50YWdzID0gZm9ybS5nZXRDaGVja2VkKCdhcnRpY2xlVGFncycpO1xuXHRcdFx0XHRwYXJhbXMuZ3JvdXAgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShgVHdpbmtsZS5zdHVi77ya5pyq55+l5qih5byPICR7VHdpbmtsZS5zdHViLm1vZGV9YCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3R1YicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKCFwYXJhbXMudGFncy5sZW5ndGgpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KCflv4XpobvpgInmi6noh7PlsJHkuIDkuKrmoIforrDvvIEnLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXN0dWInLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUuc3R1Yi5tb2RlID09PSAn6YeN5a6a5ZCRJykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5qCH6K6wJywgJ+ato+WcqOaomeiomCcpICsgVHdpbmtsZS5zdHViLm1vZGVcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRzd2l0Y2ggKFR3aW5rbGUuc3R1Yi5tb2RlKSB7XG5cdFx0XHRjYXNlICfmop3nm64nOlxuXHRcdFx0Y2FzZSAn5p2h55uuJzpcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ+mHjeWumuWQkSc6XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuc3R1Yi5jYWxsYmFja3MubWFpbik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGNhc2UgJ+aWh+S7tic6XG5cdFx0XHRjYXNlICfmqpTmoYgnOlxuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLnN0dWIuY2FsbGJhY2tzLmZpbGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnN0dWLvvJrmnKrnn6XmqKHlvI8gJHtUd2lua2xlLnN0dWIubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5zdHViLCAnc3R1YicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVkaWZmLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWRpZmYoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZWRpZmYuanM6IERpZmYgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIG9uIG5vbi1kaWZmIHBhZ2VzIChcIkxhc3RcIik7XG5cdCAqIHRhYnMgb24gZGlmZiBwYWdlcyAoXCJTaW5jZVwiLCBcIlNpbmNlIG1pbmVcIiwgXCJDdXJyZW50XCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3Rpbmcgbm9uLXNwZWNpYWwgcGFnZXNcblx0ICovXG5cdFR3aW5rbGUuZGlmZiA9ICgpID0+IHtcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdG13LnV0aWwuZ2V0VXJsKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwge1xuXHRcdFx0XHRkaWZmOiAnY3VyJyxcblx0XHRcdFx0b2xkaWQ6ICdwcmV2Jyxcblx0XHRcdH0pLFxuXHRcdFx0d2luZG93LndnVUxTKCfmnIDlkI4nLCAn5pyA5b6MJyksXG5cdFx0XHQndHctbGFzdGRpZmYnLFxuXHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrmnIDlkI7kv67mlLknLCAn6aGv56S65pyA5b6M5L+u5pS5Jylcblx0XHQpO1xuXHRcdC8vIFNob3cgYWRkaXRpb25hbCB0YWJzIG9ubHkgb24gZGlmZiBwYWdlc1xuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpKSB7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5kaWZmLmV2YWx1YXRlKGZhbHNlKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0J+iHquS4iicsXG5cdFx0XHRcdCd0dy1zaW5jZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65LiO5LiK5LiA5L+u6K6i54mI5pys6Ze055qE5beu5byCJywgJ+mhr+ekuuiIh+S4iuS4gOS/ruiogueJiOacrOmWk+eahOW3rueVsCcpXG5cdFx0XHQpO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUuZGlmZi5ldmFsdWF0ZSh0cnVlKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0J+iHquaIkScsXG5cdFx0XHRcdCd0dy1zaW5jZW1pbmUnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aYvuekuuS4juaIkeWBmuWHuueahOS/ruiuoueJiOacrOeahOW3ruW8gicsICfpoa/npLroiIfmiJHlgZrlh7rnmoTkv67oqILniYjmnKznmoTlt67nlbAnKVxuXHRcdFx0KTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdG13LnV0aWwuZ2V0VXJsKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwge1xuXHRcdFx0XHRcdGRpZmY6ICdjdXInLFxuXHRcdFx0XHRcdG9sZGlkOiBtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpLFxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflvZPliY0nLCAn55uu5YmNJyksXG5cdFx0XHRcdCd0dy1jdXJkaWZmJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrkuI7lvZPliY3niYjmnKzpl7TnmoTlt67lvIInLCAn6aGv56S66IiH55uu5YmN54mI5pys6ZaT55qE5beu55WwJylcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmRpZmYuZXZhbHVhdGUgPSAobWUpID0+IHtcblx0XHRsZXQgdXNlcjtcblx0XHRpZiAobWUpIHtcblx0XHRcdHVzZXIgPSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1udGl0bGUyJyk7XG5cdFx0XHRpZiAoIW5vZGUpIHtcblx0XHRcdFx0Ly8gbm90aGluZyB0byBkbz9cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dXNlciA9ICQobm9kZSkuZmluZCgnYScpLmZpcnN0KCkudGV4dCgpO1xuXHRcdH1cblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0dGl0bGVzOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRydmxpbWl0OiAxLFxuXHRcdFx0cnZwcm9wOiBbJ2lkcycsICd1c2VyJ10sXG5cdFx0XHRydnN0YXJ0aWQ6IG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpIC0gMSxcblx0XHRcdHJ2dXNlcjogdXNlcixcblx0XHR9O1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1jb250ZW50LXRleHQnKSk7XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPluacgOWInei0oeeMruiAheS/oeaBrycsICfmipPlj5bmnIDliJ3osqLnjbvogIXos4foqIonKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0VHdpbmtsZS5kaWZmLmNhbGxiYWNrcy5tYWluXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHR1c2VyLFxuXHRcdH07XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmRpZmYuY2FsbGJhY2tzID0ge1xuXHRcdG1haW46IChzZWxmKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxEb2MgPSBzZWxmLnJlc3BvbnNlWE1MO1xuXHRcdFx0Y29uc3QgcmV2aWQgPSAkKHhtbERvYykuZmluZCgncmV2JykuYXR0cigncmV2aWQnKTtcblx0XHRcdGlmICghcmV2aWQpIHtcblx0XHRcdFx0c2VsZi5zdGF0ZWxlbS5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acquaJvuWIsOWQiOmAgueahOaXqeacn+eJiOacrO+8jOaIliAnLCAn5pyq5om+5Yiw5ZCI6YGp55qE5pep5pyf54mI5pys77yM5oiWICcpICtcblx0XHRcdFx0XHRcdHNlbGYucGFyYW1zLnVzZXIgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5piv5ZSv5LiA6LSh54yu6ICF44CC5Y+W5raI44CCJywgJyDmmK/llK/kuIDosqLnjbvogIXjgILlj5bmtojjgIInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsb2NhdGlvbiA9IG13LnV0aWwuZ2V0VXJsKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwge1xuXHRcdFx0XHRkaWZmOiBtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSxcblx0XHRcdFx0b2xkaWQ6IHJldmlkLFxuXHRcdFx0fSk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5kaWZmLCAnZGlmZicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGV1bmxpbmsuanMgKi9cbihmdW5jdGlvbiB0d2lua2xldW5saW5rKCQpIHtcblx0LyoqXG5cdCAqIHR3aW5rbGV1bmxpbmsuanM6IFVubGluayBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiVW5saW5rXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwgcGFnZXMsIGV4Y2VwdCBMSUI65rKZ55uSXG5cdCAqL1xuXHRUd2lua2xlLnVubGluayA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpID09PSBUd2lua2xlLmdldFByZWYoJ3NhbmRib3hQYWdlJykgfHxcblx0XHRcdCFNb3JlYml0cy51c2VySXNTeXNvcFxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+a2iOmTvicsICfmtojpgKMnKSxcblx0XHRcdCd0dy11bmxpbmsnLFxuXHRcdFx0d2luZG93LndnVUxTKCflj5bmtojliLDmnKzpobXnmoTpk77mjqUnLCAn5Y+W5raI5Yiw5pys6aCB55qE6YCj57WQJylcblx0XHQpO1xuXHR9O1xuXHQvLyB0aGUgcGFyYW1ldGVyIGlzIHVzZWQgd2hlbiBpbnZva2luZyB1bmxpbmsgZnJvbSBhZG1pbiBzcGVlZHlcblx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2sgPSAocHJlc2V0UmVhc29uKSA9PiB7XG5cdFx0Y29uc3QgZmlsZVNwYWNlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gNjtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDQwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOmTvuWFpScsICflj5bmtojpgKPlhaUnKSArXG5cdFx0XHRcdChmaWxlU3BhY2UgPyB3aW5kb3cud2dVTFMoJ+WSjOaooeadv+OAgeaWh+S7tuS9v+eUqCcsICflkozmqKHmnb/jgIHmqpTmoYjkvb/nlKgnKSA6ICcnKVxuXHRcdCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+mTvuWFpeiuvue9ricsICfpgKPlhaXoqK3lrponKSwgJ0g6VFcvUFJFRiN1bmxpbmsnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjdW5saW5rJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS51bmxpbmsuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdC8vIHByZXBlbmQgc29tZSBkb2N1bWVudGF0aW9uOiBmaWxlcyBhcmUgY29tbWVudGVkIG91dCwgd2hpbGUgYW55XG5cdFx0Ly8gZGlzcGxheSB0ZXh0IGlzIHByZXNlcnZlZCBmb3IgbGlua3MgKG90aGVyd2lzZSB0aGUgbGluayBpdHNlbGYgaXMgdXNlZClcblx0XHRjb25zdCBsaW5rVGV4dEJlZm9yZSA9IE1vcmViaXRzLmh0bWxOb2RlKFxuXHRcdFx0J2NvZGUnLFxuXHRcdFx0YFtbJHtmaWxlU3BhY2UgPyAnOicgOiAnJ30ke01vcmViaXRzLnBhZ2VOYW1lTm9ybX0ke3dpbmRvdy53Z1VMUygnfOmTvuaOpeaWh+Wtl11dJywgJ3zpgKPntZDmloflrZddXScpfWBcblx0XHQpO1xuXHRcdGNvbnN0IGxpbmtUZXh0QWZ0ZXIgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIHdpbmRvdy53Z1VMUygn6ZO+5o6l5paH5a2XJywgJ+mAo+e1kOaWh+WtlycpKTtcblx0XHRjb25zdCBsaW5rUGxhaW5CZWZvcmUgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIGBbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYCk7XG5cdFx0Y29uc3QgbGlua1RlbXBsYXRlQmVmb3JlID0gTW9yZWJpdHMuaHRtbE5vZGUoJ2NvZGUnLCBge3ske213LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKX19fWApO1xuXHRcdGxldCBsaW5rUGxhaW5BZnRlcjtcblx0XHRpZiAoZmlsZVNwYWNlKSB7XG5cdFx0XHRsaW5rUGxhaW5BZnRlciA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgYDwhLS0gW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXSAtLT5gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGlua1BsYWluQWZ0ZXIgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIE1vcmViaXRzLnBhZ2VOYW1lTm9ybSk7XG5cdFx0fVxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBbbGlua1RleHRCZWZvcmUsIGxpbmtUZXh0QWZ0ZXIsIGxpbmtQbGFpbkJlZm9yZSwgbGlua1BsYWluQWZ0ZXIsIGxpbmtUZW1wbGF0ZUJlZm9yZV0pIHtcblx0XHRcdG5vZGUuc3R5bGUuZm9udEZhbWlseSA9ICdtb25vc3BhY2UnO1xuXHRcdFx0bm9kZS5zdHlsZS5mb250U3R5bGUgPSAnbm9ybWFsJztcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRzdHlsZTogJ21hcmdpbi1ib3R0b206IDAuNWVtOyBmb250LXN0eWxlOiBub3JtYWwnLFxuXHRcdFx0bGFiZWw6IFtcblx0XHRcdFx0YCR7XG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+i/meS4quW3peWFt+WPr+S7peWPlua2iOaJgOacieaMh+WQkeivpemhteeahOmTvuaOpe+8iOKAnOmTvuWFpeKAne+8iScsXG5cdFx0XHRcdFx0XHQn6YCZ5YCL5bel5YW35Y+v5Lul5Y+W5raI5omA5pyJ5oyH5ZCR6Kmy6aCB55qE6YCj57WQ77yI44CM6YCj5YWl44CN77yJJ1xuXHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdChmaWxlU3BhY2Vcblx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfvvIzmiJbpgJrov4fliqDlhaU8IS0tIC0tPuazqOmHiuagh+iusOmakOiXj+aJgOacieWvueatpOaWh+S7tueahOS9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J++8jOaIlumAj+mBjuWKoOWFpTwhLS0gLS0+5rOo6YeL5qiZ6KiY6Zqx6JeP5omA5pyJ5bCN5q2k5qqU5qGI55qE5L2/55SoJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQ6ICcnKVxuXHRcdFx0XHR944CC5L6L5aaC77yaYCxcblx0XHRcdFx0bGlua1RleHRCZWZvcmUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Lya5Y+Y5oiQJywgJ+Wwh+acg+iuiuaIkCcpLFxuXHRcdFx0XHRsaW5rVGV4dEFmdGVyLFxuXHRcdFx0XHQn77yMJyxcblx0XHRcdFx0bGlua1BsYWluQmVmb3JlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhuS8muWPmOaIkCcsICflsIfmnIPorormiJAnKSxcblx0XHRcdFx0bGlua1BsYWluQWZ0ZXIsXG5cdFx0XHRcdCfvvIwnLFxuXHRcdFx0XHRsaW5rVGVtcGxhdGVCZWZvcmUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Lya6KKr56e76ZmkJywgJ+Wwh+acg+iiq+enu+mZpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+OAguivt+Wwj+W/g+S9v+eUqOOAgicsICfjgILoq4vlsI/lv4Pkvb/nlKjjgIInKSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0dmFsdWU6IHByZXNldFJlYXNvbiB8fCAnJyxcblx0XHRcdHNpemU6IDYwLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0bGlzdDogJ2JhY2tsaW5rcycsXG5cdFx0XHRibHRpdGxlOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRibGxpbWl0OiAnbWF4Jyxcblx0XHRcdC8vIDUwMCBpcyBtYXggZm9yIG5vcm1hbCB1c2VycywgNTAwMCBmb3IgYm90cyBhbmQgc3lzb3BzXG5cdFx0XHRibG5hbWVzcGFjZTogVHdpbmtsZS5nZXRQcmVmKCd1bmxpbmtOYW1lc3BhY2VzJyksXG5cdFx0XHRyYXdjb250aW51ZTogdHJ1ZSxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH07XG5cdFx0aWYgKGZpbGVTcGFjZSkge1xuXHRcdFx0cXVlcnkubGlzdCArPSAnfGltYWdldXNhZ2UnO1xuXHRcdFx0cXVlcnkuaXV0aXRsZSA9IHF1ZXJ5LmJsdGl0bGU7XG5cdFx0XHRxdWVyeS5pdWxpbWl0ID0gcXVlcnkuYmxsaW1pdDtcblx0XHRcdHF1ZXJ5Lml1bmFtZXNwYWNlID0gcXVlcnkuYmxuYW1lc3BhY2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHF1ZXJ5LmJsZmlsdGVycmVkaXIgPSAnbm9ucmVkaXJlY3RzJztcblx0XHR9XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPlumTvuWFpScsICfmipPlj5bpgKPlhaUnKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2tzLmRpc3BsYXkuYmFja2xpbmtzXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdFx0aW1hZ2U6IGZpbGVTcGFjZSxcblx0XHR9O1xuXHRcdHlzYXJjaGl2ZXNfYXBpLnBvc3QoKTtcblx0XHRjb25zdCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0cm9vdC5zdHlsZS5wYWRkaW5nID0gJzE1cHgnOyAvLyBqdXN0IHNvIGl0IGRvZXNuJ3QgbG9vayBicm9rZW5cblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChyb290KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5zdGF0ZWxlbS5zdGF0dXMod2luZG93LndnVUxTKCfliqDovb3kuK3igKbigKYnLCAn6LyJ5YWl5Lit4oCm4oCmJykpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJvb3QpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdH07XG5cdFR3aW5rbGUudW5saW5rLmNhbGxiYWNrLmV2YWx1YXRlID0gKGV2ZW50KSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGV2ZW50LnRhcmdldDtcblx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0aWYgKCFpbnB1dC5yZWFzb24pIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumuWPlua2iOmTvuWFpeeahOeQhueUseOAgicsICfmgqjlv4XpoIjmjIflrprlj5bmtojpgKPlhaXnmoTnkIbnlLHjgIInKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGV1bmxpbmsnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlucHV0LmJhY2tsaW5rcyB8fD0gW107XG5cdFx0aW5wdXQuaW1hZ2V1c2FnZSB8fD0gW107XG5cdFx0Y29uc3QgcGFnZXMgPSBNb3JlYml0cy5hcnJheS51bmlxKFsuLi5pbnB1dC5iYWNrbGlua3MsIC4uLmlucHV0LmltYWdldXNhZ2VdKTtcblx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo5b+F6aG76Iez5bCR6YCJ5oup5LiA5Liq6KaB5Y+W5raI6ZO+5YWl55qE6aG16Z2i44CCJywgJ+aCqOW/hemgiOiHs+WwkemBuOaTh+S4gOWAi+imgeWPlua2iOmAo+WFpeeahOmggemdouOAgicpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXVubGluaycsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdGDlj5bmtogke1xuXHRcdFx0XHRpbnB1dC5iYWNrbGlua3MubGVuZ3RoXG5cdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+mTvuWFpScsICfpgKPlhaUnKSArXG5cdFx0XHRcdFx0XHQoaW5wdXQuaW1hZ2V1c2FnZS5sZW5ndGggPyB3aW5kb3cud2dVTFMoJ+S4juaWh+S7tuS9v+eUqCcsICfoiIfmqpTmoYjkvb/nlKgnKSA6ICcnKVxuXHRcdFx0XHRcdDogd2luZG93LndnVUxTKCfmlofku7bkvb/nlKgnLCAn5qqU5qGI5L2/55SoJylcblx0XHRcdH1gXG5cdFx0KTtcblx0XHR1bmxpbmtlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgdHJ1ZSk7XG5cdFx0dW5saW5rZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdHJlYXNvbjogaW5wdXQucmVhc29uLFxuXHRcdFx0dW5saW5rZXIsXG5cdFx0fTtcblx0XHR1bmxpbmtlci5ydW4oKHBhZ2VOYW1lKSA9PiB7XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflnKjpobXpnaLigJwnLCAn5Zyo6aCB6Z2i44CMJykgKyBwYWdlTmFtZSArIHdpbmRvdy53Z1VMUygn4oCd5Lit5Y+W5raI6ZO+5YWlJywgJ+OAjeS4reWPlua2iOmAo+WFpScpXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEJvdEVkaXQodHJ1ZSk7IC8vIHVubGluayBjb25zaWRlcmVkIGEgZmxvb2R5IG9wZXJhdGlvblxuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyh7XG5cdFx0XHRcdGRvQmFja2xpbmtzOiBpbnB1dC5iYWNrbGlua3MuaW5jbHVkZXMocGFnZU5hbWUpLFxuXHRcdFx0XHRkb0ltYWdldXNhZ2U6IGlucHV0LmltYWdldXNhZ2UuaW5jbHVkZXMocGFnZU5hbWUpLFxuXHRcdFx0XHQuLi5wYXJhbXMsXG5cdFx0XHR9KTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUudW5saW5rLmNhbGxiYWNrcy51bmxpbmtCYWNrbGlua3MpO1xuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLnVubGluay5jYWxsYmFja3MgPSB7XG5cdFx0ZGlzcGxheToge1xuXHRcdFx0YmFja2xpbmtzOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRcdGxldCBoYXZlY29udGVudCA9IGZhbHNlO1xuXHRcdFx0XHRsZXQgbGlzdDtcblx0XHRcdFx0bGV0IG5hbWVzcGFjZXM7XG5cdFx0XHRcdGxldCBpO1xuXHRcdFx0XHRpZiAoYXBpb2JqLnBhcmFtcy5pbWFnZSkge1xuXHRcdFx0XHRcdGNvbnN0IGltYWdldXNhZ2UgPSByZXNwb25zZS5xdWVyeS5pbWFnZXVzYWdlLnNvcnQoVHdpbmtsZS5zb3J0QnlOYW1lc3BhY2UpO1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgaW1hZ2V1c2FnZS5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Ly8gTGFiZWwgbWFkZSBieSBUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3Ncblx0XHRcdFx0XHRcdGxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGltYWdldXNhZ2VbaV0udGl0bGUsXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGxpc3QubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7tuS9v+eUqCcsICfmqpTmoYjkvb/nlKgnKSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0bmFtZXNwYWNlcyA9IFtdO1xuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCB2IG9mIFR3aW5rbGUuZ2V0UHJlZigndW5saW5rTmFtZXNwYWNlcycpKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWVzcGFjZXMucHVzaChcblx0XHRcdFx0XHRcdFx0XHR2ID09PSAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfvvIjmnaHnm67vvIknLCAn77yI5qKd55uu77yJJylcblx0XHRcdFx0XHRcdFx0XHRcdDogbXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJylbdl1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey6YCJ5oup55qE5ZG95ZCN56m66Ze077yaJywgJ+W3sumBuOaTh+eahOWRveWQjeepuumWk++8micpICsgbmFtZXNwYWNlcy5qb2luKCfjgIEnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlj6/lnKhUd2lua2xl5Y+C5pWw6K6+572u5Lit5pu05pS555u45YWz6YCJ6aG577yM6K+35Y+C6KeBW1tIOlRXL1BSRUZdXScsXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlgY/lpb3oqK3lrprkuK3mm7TmlLnnm7jpl5zpgbjpoIXvvIzoq4vlj4PopotbW0g6VFcvUFJFRl1dJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRpZiAocmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10gJiYgcmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10uaW1hZ2V1c2FnZSkge1xuXHRcdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDpcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65YmNJywgJ+mhr+ekuuWJjScpICtcblx0XHRcdFx0XHRcdFx0XHRcdG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIobGlzdC5sZW5ndGgpICtcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Liq5paH5Lu25L2/55So44CCJywgJ+WAi+aqlOahiOS9v+eUqOOAgicpLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo6YCJJywgJ+WFqOmBuCcpLFxuXHRcdFx0XHRcdFx0XHRldmVudDogKGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnaW1hZ2V1c2FnZScpKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo5LiN6YCJJywgJ+WFqOS4jemBuCcpLFxuXHRcdFx0XHRcdFx0XHRldmVudDogKGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnaW1hZ2V1c2FnZScpKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2ltYWdldXNhZ2UnLFxuXHRcdFx0XHRcdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0bGlzdCxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0aGF2ZWNvbnRlbnQgPSB0cnVlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+acquaJvuWIsOaWh+S7tuS9v+eUqOOAgicsICfmnKrmib7liLDmqpTmoYjkvb/nlKjjgIInKSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBiYWNrbGlua3MgPSByZXNwb25zZS5xdWVyeS5iYWNrbGlua3Muc29ydChUd2lua2xlLnNvcnRCeU5hbWVzcGFjZSk7XG5cdFx0XHRcdGlmIChiYWNrbGlua3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgYmFja2xpbmtzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdFx0XHQvLyBMYWJlbCBtYWRlIGJ5IFR3aW5rbGUuZ2VuZXJhdGVCYXRjaFBhZ2VMaW5rc1xuXHRcdFx0XHRcdFx0bGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYmFja2xpbmtzW2ldLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpk77lhaUnLCAn6YCj5YWlJyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0bmFtZXNwYWNlcyA9IFtdO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgdiBvZiBUd2lua2xlLmdldFByZWYoJ3VubGlua05hbWVzcGFjZXMnKSkge1xuXHRcdFx0XHRcdFx0bmFtZXNwYWNlcy5wdXNoKFxuXHRcdFx0XHRcdFx0XHR2ID09PSAnMCcgPyB3aW5kb3cud2dVTFMoJ++8iOadoeebru+8iScsICfvvIjmop3nm67vvIknKSA6IG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW3ZdXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey6YCJ5oup55qE5ZG95ZCN56m66Ze077yaJywgJ+W3sumBuOaTh+eahOWRveWQjeepuumWk++8micpICsgbmFtZXNwYWNlcy5qb2luKCfjgIEnKSxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3mm7TmlLnnm7jlhbPpgInpobnvvIzor7flj4Lop4FbW0g6VFcvUFJFRl1dJyxcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlgY/lpb3oqK3lrprkuK3mm7TmlLnnm7jpl5zpgbjpoIXvvIzoq4vlj4PopotbW0g6VFcvUFJFRl1dJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAocmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10gJiYgcmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10uYmFja2xpbmtzKSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65YmNJywgJ+mhr+ekuuWJjScpICtcblx0XHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGxpc3QubGVuZ3RoKSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuKrpk77lhaXjgIInLCAn5YCL6YCj5YWl44CCJyksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOmAiScsICflhajpgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS4jemAiScsICflhajkuI3pgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdiYWNrbGlua3MnLFxuXHRcdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGhhdmVjb250ZW50ID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw6ZO+5YWl44CCJywgJ+acquaJvuWIsOmAo+WFpeOAgicpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChoYXZlY29udGVudCkge1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYXBpb2JqLnBhcmFtcy5mb3JtLnJlbmRlcigpO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLldpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0XHRcdGZvciAoY29uc3QgbGluayBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAnYmFja2xpbmtzJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBsaW5rIG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICdpbWFnZXVzYWdlJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgb2xkdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZShvbGR0ZXh0KTtcblx0XHRcdGxldCBzdW1tYXJ5VGV4dCA9ICcnO1xuXHRcdFx0bGV0IHdhcm5pbmdTdHJpbmcgPSBmYWxzZTtcblx0XHRcdGxldCB0ZXh0O1xuXHRcdFx0Ly8gcmVtb3ZlIGltYWdlIHVzYWdlc1xuXHRcdFx0aWYgKHBhcmFtcy5kb0ltYWdldXNhZ2UpIHtcblx0XHRcdFx0dGV4dCA9IHlzYXJjaGl2ZXNfcGFnZVxuXHRcdFx0XHRcdC5jb21tZW50T3V0SW1hZ2UobXcuY29uZmlnLmdldCgnd2dUaXRsZScpLCB3aW5kb3cud2dVTFMoJ+azqOmHiicsICfms6jph4snKSlcblx0XHRcdFx0XHQuZ2V0VGV4dCgpO1xuXHRcdFx0XHQvLyBkaWQgd2UgYWN0dWFsbHkgbWFrZSBhbnkgY2hhbmdlcz9cblx0XHRcdFx0aWYgKHRleHQgPT09IG9sZHRleHQpIHtcblx0XHRcdFx0XHR3YXJuaW5nU3RyaW5nID0gd2luZG93LndnVUxTKCfmlofku7bkvb/nlKgnLCAn5qqU5qGI5L2/55SoJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSB3aW5kb3cud2dVTFMoJ+azqOmHiuaWh+S7tuS9v+eUqCcsICfms6jph4vmqpTmoYjkvb/nlKgnKTtcblx0XHRcdFx0XHRvbGR0ZXh0ID0gdGV4dDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gcmVtb3ZlIGJhY2tsaW5rc1xuXHRcdFx0aWYgKHBhcmFtcy5kb0JhY2tsaW5rcykge1xuXHRcdFx0XHR0ZXh0ID0geXNhcmNoaXZlc19wYWdlLnJlbW92ZUxpbmsoTW9yZWJpdHMucGFnZU5hbWVOb3JtKS5nZXRUZXh0KCk7XG5cdFx0XHRcdHRleHQgPSB5c2FyY2hpdmVzX3BhZ2UucmVtb3ZlVGVtcGxhdGUobXcuY29uZmlnLmdldCgnd2dUaXRsZScpKS5nZXRUZXh0KCk7XG5cdFx0XHRcdC8vIGRpZCB3ZSBhY3R1YWxseSBtYWtlIGFueSBjaGFuZ2VzP1xuXHRcdFx0XHRpZiAodGV4dCA9PT0gb2xkdGV4dCkge1xuXHRcdFx0XHRcdHdhcm5pbmdTdHJpbmcgPSB3YXJuaW5nU3RyaW5nXG5cdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+5YWl5oiW5paH5Lu25L2/55SoJywgJ+WPlua2iOmAo+WFpeaIluaqlOahiOS9v+eUqCcpXG5cdFx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+5YWlJywgJ+WPlua2iOmAo+WFpScpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gKHN1bW1hcnlUZXh0ID8gYCR7c3VtbWFyeVRleHR9IC8gYCA6ICcnKSArIHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+57uT5YiwJywgJ+WPlua2iOmAo+e1kOWIsCcpO1xuXHRcdFx0XHRcdG9sZHRleHQgPSB0ZXh0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAod2FybmluZ1N0cmluZykge1xuXHRcdFx0XHQvLyBub3RoaW5nIHRvIGRvIVxuXHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdC5lcnJvcihgJHt3aW5kb3cud2dVTFMoJ+acquiDveWcqOmhtemdouS4iuaJvuWIsCcsICfmnKrog73lnKjpoIHpnaLkuIrmib7liLAnKSArIHdhcm5pbmdTdHJpbmd944CCYCk7XG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0c3VtbWFyeVRleHQgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd77yaJywgJ+OAje+8micpICtcblx0XHRcdFx0XHRwYXJhbXMucmVhc29uXG5cdFx0XHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcywgcGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUudW5saW5rLCAndW5saW5rJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlZmx1ZmYuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlZmx1ZmYoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVmbHVmZi5qczogUmV2ZXJ0L3JvbGxiYWNrIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IExpbmtzIG9uIGNvbnRyaWJ1dGlvbnMsXG5cdCAqIHJlY2VudCBjaGFuZ2VzLCBoaXN0b3J5LCBhbmQgZGlmZiBwYWdlc1xuXHQgKiBBY3RpdmUgb246IERpZmYgcGFnZXMsIGhpc3RvcnkgcGFnZXMsXG5cdCAqIFNwZWNpYWw6UmVjZW50Q2hhbmdlcyhMaW5rZWQpLCBhbmQgU3BlY2lhbDpDb250cmlidXRpb25zXG5cdCAqL1xuXHQvKipcblx0ICogVHdpbmtsZWZsdWZmIHJldmVydCBhbmQgYW50aXZhbmRhbGlzbSB1dGlsaXR5XG5cdCAqL1xuXHRUd2lua2xlLmZsdWZmID0gKCkgPT4ge1xuXHRcdC8vIE9ubHkgcHJvY2VlZCBpZiB0aGUgdXNlciBjYW4gYWN0dWFsbHkgZWRpdCB0aGUgcGFnZSBpbiBxdWVzdGlvbi5cblx0XHQvLyB3Z0lzUHJvYmFibHlFZGl0YWJsZSBzaG91bGQgdGFrZVxuXHRcdC8vIGNhcmUgb2YgbmFtZXNwYWNlL2NvbnRlbnRNb2RlbCByZXN0cmljdGlvbnMgYXMgd2VsbCBhcyBleHBsaWNpdFxuXHRcdC8vIHByb3RlY3Rpb25zOyBpdCB3b24ndCB0YWtlIGNhcmUgb2YgY2FzY2FkaW5nIG9yIFRpdGxlQmxhY2tsaXN0LlxuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0lzUHJvYmFibHlFZGl0YWJsZScpKSB7XG5cdFx0XHQvLyB3Z0RpZmZPbGRJZCBpbmNsdWRlZCBmb3IgY2xhcml0eSBpbiBpZiBlbHNlIGxvb3Bcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpIHx8IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykpIHtcblx0XHRcdFx0Ly8gUmVsb2FkIGFsb25nc2lkZSB0aGUgcmV2aXNpb24gc2xpZGVyXG5cdFx0XHRcdG13Lmhvb2soJ3dpa2lwYWdlLmRpZmYnKS5hZGQoKCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MuZGlmZigpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICd2aWV3JyAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1JldmlzaW9uSWQnKSAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSAhPT0gbXcuY29uZmlnLmdldCgnd2dSZXZpc2lvbklkJylcblx0XHRcdCkge1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmFkZExpbmtzLm9sZGlkKCk7XG5cdFx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICdoaXN0b3J5Jykge1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmFkZExpbmtzLmhpc3RvcnkoKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IC0xKSB7XG5cdFx0XHRUd2lua2xlLmZsdWZmLnNraXBUYWxrID0gIVR3aW5rbGUuZ2V0UHJlZignb3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0Jyk7XG5cdFx0XHRUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSA9IFR3aW5rbGUuZ2V0UHJlZigncm9sbGJhY2tJblBsYWNlJyk7XG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ0NvbnRyaWJ1dGlvbnMnKSB7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MuY29udHJpYnV0aW9ucygpO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1JlY2VudGNoYW5nZXMnIHx8XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdSZWNlbnRjaGFuZ2VzbGlua2VkJ1xuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIFJlbG9hZCB3aXRoIHJlY2VudCBjaGFuZ2VzIHVwZGF0ZXNcblx0XHRcdFx0Ly8gc3RydWN0dXJlZENoYW5nZUZpbHRlcnMudWkuaW5pdGlhbGl6ZWQgaXMganVzdCBvbiBsb2FkXG5cdFx0XHRcdG13Lmhvb2soJ3dpa2lwYWdlLmNvbnRlbnQnKS5hZGQoKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRpZiAoaXRlbS5pcygnZGl2JykpIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MucmVjZW50Y2hhbmdlcygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyBBIGxpc3Qgb2YgdXNlcm5hbWVzLCB1c3VhbGx5IG9ubHkgYm90cywgdGhhdCB2YW5kYWxpc20gcmV2ZXJ0IGlzIGp1bXBlZFxuXHQvLyBvdmVyOyB0aGF0IGlzLCBpZiB2YW5kYWxpc20gcmV2ZXJ0IHdhcyBjaG9zZW4gb24gc3VjaCB1c2VybmFtZSwgdGhlbiBpdHNcblx0Ly8gdGFyZ2V0IGlzIG9uIHRoZSByZXZpc2lvbiBiZWZvcmUuICBUaGlzIGlzIGZvciBoYW5kbGluZyBxdWljayBib3RzIHRoYXRcblx0Ly8gbWFrZXMgZWRpdHMgc2Vjb25kcyBhZnRlciB0aGUgb3JpZ2luYWwgZWRpdCBpcyBtYWRlLiAgVGhpcyBvbmx5IGFmZmVjdHNcblx0Ly8gdmFuZGFsaXNtIHJvbGxiYWNrOyBmb3IgZ29vZCBmYWl0aCByb2xsYmFjaywgaXQgd2lsbCBzdG9wLCBpbmRpY2F0aW5nIGEgYm90XG5cdC8vIGhhcyBubyBmYWl0aCwgYW5kIGZvciBub3JtYWwgcm9sbGJhY2ssIGl0IHdpbGwgcm9sbGJhY2sgdGhhdCBlZGl0LlxuXHRUd2lua2xlLmZsdWZmLnRydXN0ZWRCb3RzID0gW107XG5cdFR3aW5rbGUuZmx1ZmYuc2tpcFRhbGsgPSBudWxsO1xuXHRUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSA9IG51bGw7XG5cdC8vIFN0cmluZyB0byBpbnNlcnQgd2hlbiBhIHVzZXJuYW1lIGlzIGhpZGRlblxuXHRUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWUgPSB3aW5kb3cud2dVTFMoJ+W3sumakOiXj+eahOeUqOaItycsICflt7LpmrHol4/nmoTkvb/nlKjogIUnKTtcblx0Ly8gQ29uc29saWRhdGVkIGNvbnN0cnVjdGlvbiBvZiBmbHVmZiBsaW5rc1xuXHRUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyID0ge1xuXHRcdHNwYW5UYWc6IChjb2xvciwgY29udGVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHNwYW4uc3R5bGUuY29sb3IgPSBjb2xvcjtcblx0XHRcdHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpO1xuXHRcdFx0cmV0dXJuIHNwYW47XG5cdFx0fSxcblx0XHRidWlsZExpbms6IChjb2xvciwgdGV4dCkgPT4ge1xuXHRcdFx0Y29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdGxpbmsuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5zcGFuVGFnKCdCbGFjaycsICdbJykpO1xuXHRcdFx0bGluay5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnNwYW5UYWcoY29sb3IsIHRleHQpKTtcblx0XHRcdGxpbmsuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5zcGFuVGFnKCdCbGFjaycsICddJykpO1xuXHRcdFx0bGluay5ocmVmID0gJyMnO1xuXHRcdFx0cmV0dXJuIGxpbms7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gW3ZhbmRhbD1udWxsXSAtIFVzZXJuYW1lIG9mIHRoZSBlZGl0b3IgYmVpbmcgcmV2ZXJ0ZWRcblx0XHQgKiBQcm92aWRlIGEgZmFsc2V5IHZhbHVlIGlmIHRoZSB1c2VybmFtZSBpcyBoaWRkZW4sIGRlZmF1bHRzIHRvIG51bGxcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IGlubGluZSAtIFRydWUgdG8gY3JlYXRlIHR3byBsaW5rcyBpbiBhIHNwYW4sIGZhbHNlXG5cdFx0ICogdG8gY3JlYXRlIHRocmVlIGxpbmtzIGluIGEgZGl2IChvcHRpb25hbClcblx0XHQgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IFtyZXY9d2dDdXJSZXZpc2lvbklkXSAtIFJldmlzaW9uIElEIGJlaW5nIHJldmVydGVkIChvcHRpb25hbClcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gW3BhZ2U9d2dQYWdlTmFtZV0gLSBQYWdlIGJlaW5nIHJldmVydGVkIChvcHRpb25hbClcblx0XHQgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gcmV2Tm9kZVxuXHRcdCAqL1xuXHRcdHJvbGxiYWNrTGlua3M6ICh2YW5kYWwsIGlubGluZSwgcmV2LCBwYWdlKSA9PiB7XG5cdFx0XHR2YW5kYWwgfHw9IG51bGw7XG5cdFx0XHRjb25zdCBlbGVtID0gaW5saW5lID8gJ3NwYW4nIDogJ2Rpdic7XG5cdFx0XHRjb25zdCByZXZOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtKTtcblx0XHRcdHJldiA9IE51bWJlci5wYXJzZUludChyZXYsIDEwKTtcblx0XHRcdGlmIChyZXYpIHtcblx0XHRcdFx0cmV2Tm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgYHR3LXJldmVydCR7cmV2fWApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV2Tm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R3LXJldmVydCcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgbm9ybU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcblx0XHRcdGNvbnN0IHZhbmROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Ryb25nJyk7XG5cdFx0XHRjb25zdCBub3JtTGluayA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuYnVpbGRMaW5rKCdTdGVlbEJsdWUnLCAn5Zue6YCAJyk7XG5cdFx0XHRjb25zdCB2YW5kTGluayA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuYnVpbGRMaW5rKCdSZWQnLCB3aW5kb3cud2dVTFMoJ+egtOWdjycsICfnoLTlo54nKSk7XG5cdFx0XHQkKG5vcm1MaW5rKS5vbignY2xpY2snLCAoZSkgPT4ge1xuXHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYucmV2ZXJ0KCdub3JtJywgdmFuZGFsLCByZXYsIHBhZ2UpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmRpc2FibGVMaW5rcyhyZXZOb2RlKTtcblx0XHRcdH0pO1xuXHRcdFx0JCh2YW5kTGluaykub24oJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLnJldmVydCgndmFuZCcsIHZhbmRhbCwgcmV2LCBwYWdlKTtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5kaXNhYmxlTGlua3MocmV2Tm9kZSk7XG5cdFx0XHR9KTtcblx0XHRcdHZhbmROb2RlLmFwcGVuZENoaWxkKHZhbmRMaW5rKTtcblx0XHRcdG5vcm1Ob2RlLmFwcGVuZENoaWxkKG5vcm1MaW5rKTtcblx0XHRcdGNvbnN0IHNlcGFyYXRvciA9IGlubGluZSA/ICcgJyA6ICcgfHwgJztcblx0XHRcdHJldk5vZGUuYXBwZW5kQ2hpbGQobm9ybU5vZGUpO1xuXHRcdFx0cmV2Tm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZXBhcmF0b3IpKTtcblx0XHRcdHJldk5vZGUuYXBwZW5kQ2hpbGQodmFuZE5vZGUpO1xuXHRcdFx0cmV0dXJuIHJldk5vZGU7XG5cdFx0fSxcblx0XHQvLyBCdWlsZCBbcmVzdG9yZSB0aGlzIHJldmlzaW9uXSBsaW5rc1xuXHRcdHJlc3RvcmVUaGlzUmV2aXNpb25MaW5rOiAocmV2aXNpb25SZWYsIGlubGluZSkgPT4ge1xuXHRcdFx0Ly8gSWYgbm90IGEgc3BlY2lmaWMgcmV2aXNpb24gbnVtYmVyLCBzaG91bGQgYmUgd2dEaWZmTmV3SWQvd2dEaWZmT2xkSWQvd2dSZXZpc2lvbklkXG5cdFx0XHRyZXZpc2lvblJlZiA9IHR5cGVvZiByZXZpc2lvblJlZiA9PT0gJ251bWJlcicgPyByZXZpc2lvblJlZiA6IG13LmNvbmZpZy5nZXQocmV2aXNpb25SZWYpO1xuXHRcdFx0Y29uc3QgZWxlbSA9IGlubGluZSA/ICdzcGFuJyA6ICdkaXYnO1xuXHRcdFx0Y29uc3QgcmV2ZXJ0VG9SZXZpc2lvbk5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW0pO1xuXHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbk5vZGUuc2V0QXR0cmlidXRlKCdpZCcsIGB0dy1yZXZlcnQtdG8tJHtyZXZpc2lvblJlZn1gKTtcblx0XHRcdHJldmVydFRvUmV2aXNpb25Ob2RlLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG5cdFx0XHRjb25zdCByZXZlcnRUb1JldmlzaW9uTGluayA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuYnVpbGRMaW5rKFxuXHRcdFx0XHQnU2FkZGxlQnJvd24nLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aBouWkjeatpOeJiOacrCcsICfmgaLlvqnmraTniYjmnKwnKVxuXHRcdFx0KTtcblx0XHRcdCQocmV2ZXJ0VG9SZXZpc2lvbkxpbmspLm9uKCdjbGljaycsIChlKSA9PiB7XG5cdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5yZXZlcnRUb1JldmlzaW9uKHJldmlzaW9uUmVmKTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKGlubGluZSkge1xuXHRcdFx0XHRyZXZlcnRUb1JldmlzaW9uTm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpKTtcblx0XHRcdH1cblx0XHRcdHJldmVydFRvUmV2aXNpb25Ob2RlLmFwcGVuZENoaWxkKHJldmVydFRvUmV2aXNpb25MaW5rKTtcblx0XHRcdHJldHVybiByZXZlcnRUb1JldmlzaW9uTm9kZTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmZsdWZmLmFkZExpbmtzID0ge1xuXHRcdGNvbnRyaWJ1dGlvbnM6ICgpID0+IHtcblx0XHRcdC8vICQoJ3NwLWNvbnRyaWJ1dGlvbnMtZm9vdGVyLWFub24tcmFuZ2UnKSByZWxpZXMgb24gdGhlIGZtYm94XG5cdFx0XHQvLyBpZCBpbiBbW01lZGlhV2lraTpTcC1jb250cmlidXRpb25zLWZvb3Rlci1hbm9uLXJhbmdlXV0gYW5kXG5cdFx0XHQvLyBpcyB1c2VkIHRvIHNob3cgcm9sbGJhY2svdmFuZGFsaXNtIGxpbmtzIGZvciBJUCByYW5nZXNcblx0XHRcdGNvbnN0IGlzUmFuZ2UgPSAhISRib2R5LmZpbmQoJyNzcC1jb250cmlidXRpb25zLWZvb3Rlci1hbm9uLXJhbmdlJylbMF07XG5cdFx0XHRpZiAobXcuY29uZmlnLmV4aXN0cygnd2dSZWxldmFudFVzZXJOYW1lJykgfHwgaXNSYW5nZSkge1xuXHRcdFx0XHQvLyBHZXQgdGhlIHVzZXJuYW1lIHRoZXNlIGNvbnRyaWJ1dGlvbnMgYXJlIGZvclxuXHRcdFx0XHRsZXQgdXNlcm5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnY29udHJpYnMnKSB8fFxuXHRcdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgIT09IHVzZXJuYW1lICYmXG5cdFx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3Nob3dSb2xsYmFja0xpbmtzJykuaW5jbHVkZXMoJ290aGVycycpKSB8fFxuXHRcdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgPT09IHVzZXJuYW1lICYmIFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnbWluZScpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCAkbGlzdCA9ICRib2R5XG5cdFx0XHRcdFx0XHQuZmluZCgnI213LWNvbnRlbnQtdGV4dCcpXG5cdFx0XHRcdFx0XHQuZmluZCgndWwgbGk6aGFzKHNwYW4ubXctdWN0b3ApOmhhcygubXctY2hhbmdlc2xpc3QtZGlmZiknKTtcblx0XHRcdFx0XHQkbGlzdC5lYWNoKChfa2V5LCBjdXJyZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQvLyByZXZpZCBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgaHJlZiBvZiBib3RoXG5cdFx0XHRcdFx0XHQvLyAubXctY2hhbmdlc2xpc3QtZGF0ZSBvciAubXctY2hhbmdlc2xpc3QtZGlmZlxuXHRcdFx0XHRcdFx0Y29uc3QgcGFnZSA9ICQoY3VycmVudCkuZmluZCgnLm13LWNvbnRyaWJ1dGlvbnMtdGl0bGUnKS50ZXh0KCk7XG5cdFx0XHRcdFx0XHQvLyBHZXQgdXNlcm5hbWUgZm9yIElQIHJhbmdlcyAod2dSZWxldmFudFVzZXJOYW1lIGlzIG51bGwpXG5cdFx0XHRcdFx0XHRpZiAoaXNSYW5nZSkge1xuXHRcdFx0XHRcdFx0XHQvLyBUaGUgOm5vdCBpcyBwb3NzaWJseSB1bm5lY2Vzc2FyeSwgYXMgaXQgYXBwZWFycyB0aGF0XG5cdFx0XHRcdFx0XHRcdC8vIC5tdy11c2VybGluayBpcyBzaW1wbHkgbm90IHByZXNlbnQgaWYgdGhlIHVzZXJuYW1lIGlzIGhpZGRlblxuXHRcdFx0XHRcdFx0XHR1c2VybmFtZSA9ICQoY3VycmVudCkuZmluZCgnLm13LXVzZXJsaW5rOm5vdCguaGlzdG9yeS1kZWxldGVkKScpLnRleHQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIEl0J3MgdW5saWtlbHksIGJ1dCB3ZSBjYW4ndCBlYXNpbHkgY2hlY2sgZm9yIHJldmRlbCdkIHVzZXJuYW1lc1xuXHRcdFx0XHRcdFx0Ly8gc2luY2Ugb25seSBhIHN0cm9uZyBlbGVtZW50IGlzIHByb3ZpZGVkLCB3aXRoIG5vIGVhc3kgc2VsZWN0b3Jcblx0XHRcdFx0XHRcdGN1cnJlbnQuYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucm9sbGJhY2tMaW5rcyh1c2VybmFtZSwgdHJ1ZSwgY3VycmVudC5kYXRhc2V0Lm13UmV2aWQsIHBhZ2UpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRyZWNlbnRjaGFuZ2VzOiAoKSA9PiB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUmVjZW50Y2hhbmdlcycgJiZcblx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3Nob3dSb2xsYmFja0xpbmtzJykuaW5jbHVkZXMoJ3JlY2VudGNoYW5nZXMnKSkgfHxcblx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdSZWNlbnRjaGFuZ2VzbGlua2VkJyAmJlxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygncmVjZW50Y2hhbmdlc2xpbmtlZCcpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIExhdGVzdCBhbmQgcmV2ZXJ0YWJsZSAobm90IHBhZ2UgY3JlYXRpb25zLCBsb2dzLCBjYXRlZ29yaXphdGlvbnMsIGV0Yy4pXG5cdFx0XHRcdGxldCAkbGlzdCA9ICRib2R5LmZpbmQoJy5tdy1jaGFuZ2VzbGlzdCAubXctY2hhbmdlc2xpc3QtbGFzdC5tdy1jaGFuZ2VzbGlzdC1zcmMtbXctZWRpdCcpO1xuXHRcdFx0XHQvLyBFeGNsdWRlIHRvcC1sZXZlbCBoZWFkZXIgaWYgXCJncm91cCBjaGFuZ2VzXCIgcHJlZmVyZW5jZSBpcyB1c2VkXG5cdFx0XHRcdC8vIGFuZCBmaW5kIG9ubHkgaW5kaXZpZHVhbCBsaW5lcyBvciBuZXN0ZWQgbGluZXNcblx0XHRcdFx0JGxpc3QgPSAkbGlzdFxuXHRcdFx0XHRcdC5ub3QoJy5tdy1yY2ZpbHRlcnMtdWktaGlnaGxpZ2h0cy1lbmhhbmNlZC10b3BsZXZlbCcpXG5cdFx0XHRcdFx0LmZpbmQoJy5tdy1jaGFuZ2VzbGlzdC1saW5lLWlubmVyLCB0ZC5tdy1lbmhhbmNlZC1yYy1uZXN0ZWQnKTtcblx0XHRcdFx0JGxpc3QuZWFjaCgoX2tleSwgY3VycmVudCkgPT4ge1xuXHRcdFx0XHRcdC8vIFRoZSA6bm90IGlzIHBvc3NpYmx5IHVubmVjZXNzYXJ5LCBhcyBpdCBhcHBlYXJzIHRoYXRcblx0XHRcdFx0XHQvLyAubXctdXNlcmxpbmsgaXMgc2ltcGx5IG5vdCBwcmVzZW50IGlmIHRoZSB1c2VybmFtZSBpcyBoaWRkZW5cblx0XHRcdFx0XHRjb25zdCB2YW5kYWwgPSAkKGN1cnJlbnQpLmZpbmQoJy5tdy11c2VybGluazpub3QoLmhpc3RvcnktZGVsZXRlZCknKS50ZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3QgaHJlZiA9ICQoY3VycmVudCkuZmluZCgnLm13LWNoYW5nZXNsaXN0LWRpZmYnKS5hdHRyKCdocmVmJyk7XG5cdFx0XHRcdFx0Y29uc3QgcmV2ID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdkaWZmJywgaHJlZik7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZSA9IGN1cnJlbnQuZGF0YXNldC50YXJnZXRQYWdlO1xuXHRcdFx0XHRcdGN1cnJlbnQuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yb2xsYmFja0xpbmtzKHZhbmRhbCwgdHJ1ZSwgcmV2LCBwYWdlKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aGlzdG9yeTogKCkgPT4ge1xuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnaGlzdG9yeScpKSB7XG5cdFx0XHRcdC8vIEFsbCByZXZzXG5cdFx0XHRcdGNvbnN0IGhpc3RMaXN0ID0gJGJvZHkuZmluZCgnI3BhZ2VoaXN0b3J5IGxpJykudG9BcnJheSgpO1xuXHRcdFx0XHQvLyBPbiBmaXJzdCBwYWdlIG9mIHJlc3VsdHMsIHNvIGFkZCByZXZlcnQvcm9sbGJhY2tcblx0XHRcdFx0Ly8gbGlua3MgdG8gdGhlIHRvcCByZXZpc2lvblxuXHRcdFx0XHRpZiAoISRib2R5LmZpbmQoJ2EubXctZmlyc3RsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgZmlyc3QgPSBoaXN0TGlzdC5zaGlmdCgpO1xuXHRcdFx0XHRcdGNvbnN0IHZhbmRhbCA9ICQoZmlyc3QpLmZpbmQoJy5tdy11c2VybGluazpub3QoLmhpc3RvcnktZGVsZXRlZCknKS50ZXh0KCk7XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZm9yIGZpcnN0IHVzZXJuYW1lIGRpZmZlcmVudCB0aGFuIHRoZSB0b3AgdXNlcixcblx0XHRcdFx0XHQvLyBvbmx5IGFwcGx5IHJvbGxiYWNrIGxpbmtzIGlmL3doZW4gZm91bmRcblx0XHRcdFx0XHQvLyBmb3IgZmFzdGVyIHRoYW4gZXZlcnlcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgaGlzdExpc3QpIHtcblx0XHRcdFx0XHRcdGlmICgkKGl0ZW0pLmZpbmQoJy5tdy11c2VybGluaycpLnRleHQoKSAhPT0gdmFuZGFsKSB7XG5cdFx0XHRcdFx0XHRcdGZpcnN0LmFwcGVuZENoaWxkKFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucm9sbGJhY2tMaW5rcyh2YW5kYWwsIHRydWUpKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIG9sZGlkXG5cdFx0XHRcdGZvciAoY29uc3QgcmV2IG9mIGhpc3RMaXN0KSB7XG5cdFx0XHRcdFx0Ly8gRnJvbSByZXN0b3JlVGhpc1JldmlzaW9uLCBub24tdHJhbnNmZXJhYmxlXG5cdFx0XHRcdFx0Ly8gSWYgdGhlIHRleHQgaGFzIGJlZW4gcmV2ZGVsJ2QsIGl0IGdldHMgd3JhcHBlZCBpbiBhIHNwYW4gd2l0aCAuaGlzdG9yeS1kZWxldGVkLFxuXHRcdFx0XHRcdC8vIGFuZCBocmVmIHdpbGwgYmUgdW5kZWZpbmVkIChhbmQgdGh1cyBvbGRpZCBpcyBOYU4pXG5cdFx0XHRcdFx0Y29uc3Qge2hyZWZ9ID0gcmV2LnF1ZXJ5U2VsZWN0b3IoJy5tdy1jaGFuZ2VzbGlzdC1kYXRlJyk7XG5cdFx0XHRcdFx0Y29uc3Qgb2xkaWQgPSBOdW1iZXIucGFyc2VJbnQobXcudXRpbC5nZXRQYXJhbVZhbHVlKCdvbGRpZCcsIGhyZWYpLCAxMCk7XG5cdFx0XHRcdFx0aWYgKCFOdW1iZXIuaXNOYU4ob2xkaWQpKSB7XG5cdFx0XHRcdFx0XHRyZXYuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluayhvbGRpZCwgdHJ1ZSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZGlmZjogKCkgPT4ge1xuXHRcdFx0Ly8gQXV0b2ZpbGwgdXNlciB0YWxrIGxpbmtzIG9uIGRpZmZzIHdpdGggdmFuYXJ0aWNsZSBmb3IgZWFzeSB3YXJuaW5nLCBidXQgZG9uJ3QgYXV0b3dhcm5cblx0XHRcdGNvbnN0IHdhcm5Gcm9tVGFsayA9ICh4dGl0bGUpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFsa0xpbmsgPSAkKGAjbXctZGlmZi0ke3h0aXRsZX0yIC5tdy11c2VydG9vbGxpbmtzIGFgKS5maXJzdCgpO1xuXHRcdFx0XHRpZiAodGFsa0xpbmsubGVuZ3RoKSB7XG5cdFx0XHRcdFx0bGV0IGV4dHJhUGFyYW1zID0gYHZhbmFydGljbGU9JHttdy51dGlsLnJhd3VybGVuY29kZShNb3JlYml0cy5wYWdlTmFtZU5vcm0pfSZub2F1dG93YXJuPXRydWVgO1xuXHRcdFx0XHRcdC8vIGRpZmZJRHMgZm9yIHZhbmFydGljbGVyZXZpZFxuXHRcdFx0XHRcdGV4dHJhUGFyYW1zICs9ICcmdmFuYXJ0aWNsZXJldmlkPSc7XG5cdFx0XHRcdFx0ZXh0cmFQYXJhbXMgKz0geHRpdGxlID09PSAnb3RpdGxlJyA/IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykgOiBtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpO1xuXHRcdFx0XHRcdGNvbnN0IGhyZWYgPSB0YWxrTGluay5hdHRyKCdocmVmJyk7XG5cdFx0XHRcdFx0aWYgKGhyZWYuaW5jbHVkZXMoJz8nKSkge1xuXHRcdFx0XHRcdFx0dGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9JiR7ZXh0cmFQYXJhbXN9YCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhbGtMaW5rLmF0dHIoJ2hyZWYnLCBgJHtocmVmfT8ke2V4dHJhUGFyYW1zfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdC8vIE9sZGVyIHJldmlzaW9uXG5cdFx0XHR3YXJuRnJvbVRhbGsoJ290aXRsZScpOyAvLyBBZGQgcXVpY2std2FybiBsaW5rIHRvIHVzZXIgdGFsayBsaW5rXG5cdFx0XHQvLyBEb24ndCBsb2FkIGlmIHRoZXJlJ3MgYSBzaW5nbGUgcmV2aXNpb24gb3Igd2VpcmQgZGlmZiAoY3VyIG9uIGxhdGVzdClcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpICYmIG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykgIT09IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykpIHtcblx0XHRcdFx0Ly8gQWRkIGEgW3Jlc3RvcmUgdGhpcyByZXZpc2lvbl0gbGluayB0byB0aGUgb2xkZXIgcmV2aXNpb25cblx0XHRcdFx0Y29uc3Qgb2xkVGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1vdGl0bGUxJykucGFyZW50Tm9kZTtcblx0XHRcdFx0Y29uc3QgcmV2ZXJ0VG9SZXZpc2lvbiA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucmVzdG9yZVRoaXNSZXZpc2lvbkxpbmsoJ3dnRGlmZk9sZElkJyk7XG5cdFx0XHRcdG9sZFRpdGxlLmluc2VydEJlZm9yZShyZXZlcnRUb1JldmlzaW9uLCBvbGRUaXRsZS5maXJzdENoaWxkKTtcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmV2ZXJ0U3VtbWFyeScpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRyZXZlcnRUb1JldmlzaW9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgfHwgJykpO1xuXHRcdFx0XHRcdGNvbnN0IHJldmVydHN1bW1hcnkgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAncmV2ZXJ0c3VtbWFyeScsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV2ZXJ0c3VtbWFyeS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nlm57pgIDnkIbnlLEnLCAn6YG45pOH5Zue6YCA55CG55SxJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0JChUd2lua2xlLmdldFByZWYoJ2N1c3RvbVJldmVydFN1bW1hcnknKSkuZWFjaCgoXywgZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV2ZXJ0c3VtbWFyeS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IGUubGFiZWwsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBlLnZhbHVlLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbi5hcHBlbmRDaGlsZChyZXZlcnRzdW1tYXJ5LnJlbmRlcigpLmNoaWxkTm9kZXNbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBOZXdlciByZXZpc2lvblxuXHRcdFx0d2FybkZyb21UYWxrKCdudGl0bGUnKTsgLy8gQWRkIHF1aWNrLXdhcm4gbGluayB0byB1c2VyIHRhbGsgbGlua1xuXHRcdFx0Ly8gQWRkIGVpdGhlciByZXN0b3JlIG9yIHJvbGxiYWNrIGxpbmtzIHRvIHRoZSBuZXdlciByZXZpc2lvblxuXHRcdFx0Ly8gRG9uJ3Qgc2hvdyBpZiB0aGVyZSdzIGEgc2luZ2xlIHJldmlzaW9uIG9yIHdlaXJkIGRpZmYgKHByZXYgb24gZmlyc3QpXG5cdFx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RpZmZlcmVuY2VzLW5leHRsaW5rJykpIHtcblx0XHRcdFx0Ly8gTm90IGxhdGVzdCByZXZpc2lvbiwgYWRkIFtyZXN0b3JlIHRoaXMgcmV2aXNpb25dIGxpbmsgdG8gbmV3ZXIgcmV2aXNpb25cblx0XHRcdFx0Y29uc3QgbmV3VGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1udGl0bGUxJykucGFyZW50Tm9kZTtcblx0XHRcdFx0bmV3VGl0bGUuaW5zZXJ0QmVmb3JlKFxuXHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucmVzdG9yZVRoaXNSZXZpc2lvbkxpbmsoJ3dnRGlmZk5ld0lkJyksXG5cdFx0XHRcdFx0bmV3VGl0bGUuZmlyc3RDaGlsZFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdkaWZmJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSAmJlxuXHRcdFx0XHQobXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSAhPT0gbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKSB8fFxuXHRcdFx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkaWZmZXJlbmNlcy1wcmV2bGluaycpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIE5vcm1hbGx5IC5tdy11c2VybGluayBpcyBhIGxpbmssIGJ1dCBpZiB0aGVcblx0XHRcdFx0Ly8gdXNlcm5hbWUgaXMgaGlkZGVuLCBpdCB3aWxsIGJlIGEgc3BhbiB3aXRoXG5cdFx0XHRcdC8vIC5oaXN0b3J5LWRlbGV0ZWQgYXMgd2VsbC4gV2hlbiBhIHN5c29wIHZpZXdzIHRoZVxuXHRcdFx0XHQvLyBoaWRkZW4gY29udGVudCwgdGhlIHNwYW4gY29udGFpbnMgdGhlIHVzZXJuYW1lIGluIGFcblx0XHRcdFx0Ly8gbGluayBlbGVtZW50LCB3aGljaCB3aWxsICpqdXN0KiBoYXZlXG5cdFx0XHRcdC8vIC5tdy11c2VybGluay4gVGhlIGJlbG93IHRodXMgZmluZHMgdGhlIGZpcnN0XG5cdFx0XHRcdC8vIGluc3RhbmNlIG9mIHRoZSBjbGFzcywgd2hpY2ggaWYgaGlkZGVuIGlzIHRoZSBzcGFuXG5cdFx0XHRcdC8vIGFuZCB0aHVzIHRleHQgcmV0dXJucyB1bmRlZmluZWQuIFRlY2huaWNhbGx5LCB0aGlzXG5cdFx0XHRcdC8vIGlzIGEgcGxhY2Ugd2hlcmUgc3lzb3BzICpjb3VsZCogaGF2ZSBtb3JlXG5cdFx0XHRcdC8vIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0byB0aGVtIChhcyBhYm92ZSwgdmlhXG5cdFx0XHRcdC8vICZ1bmhpZGU9MSksIHNpbmNlIHRoZSB1c2VybmFtZSB3aWxsIGJlIGF2YWlsYWJsZSBieVxuXHRcdFx0XHQvLyBjaGVja2luZyBhLm13LXVzZXJsaW5rIGluc3RlYWQsIGJ1dCByZXZlcnQoKSB3aWxsXG5cdFx0XHRcdC8vIG5lZWQgcmV3b3JraW5nIGFyb3VuZCB1c2VySGlkZGVuXG5cdFx0XHRcdGNvbnN0IHZhbmRhbCA9ICRib2R5LmZpbmQoJyNtdy1kaWZmLW50aXRsZTInKS5maW5kKCcubXctdXNlcmxpbmsnKVswXS50ZXh0O1xuXHRcdFx0XHRjb25zdCBudGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1udGl0bGUxJykucGFyZW50Tm9kZTtcblx0XHRcdFx0bnRpdGxlLmluc2VydEJlZm9yZShUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJvbGxiYWNrTGlua3ModmFuZGFsKSwgbnRpdGxlLmZpcnN0Q2hpbGQpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0b2xkaWQ6ICgpID0+IHtcblx0XHRcdC8vIEFkZCBhIFtyZXN0b3JlIHRoaXMgcmV2aXNpb25dIGxpbmsgb24gb2xkIHJldmlzaW9uc1xuXHRcdFx0Y29uc3QgdGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctcmV2aXNpb24taW5mbycpLnBhcmVudE5vZGU7XG5cdFx0XHR0aXRsZS5pbnNlcnRCZWZvcmUoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluaygnd2dSZXZpc2lvbklkJyksIHRpdGxlLmZpcnN0Q2hpbGQpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYuZGlzYWJsZUxpbmtzID0gKHBhcmVudE5vZGUpID0+IHtcblx0XHQvLyBBcnJheS5mcm9tIG5vdCBhdmFpbGFibGUgaW4gSUUxMSA6KFxuXHRcdCQocGFyZW50Tm9kZSlcblx0XHRcdC5jaGlsZHJlbigpXG5cdFx0XHQuZWFjaCgoX2ksIG5vZGUpID0+IHtcblx0XHRcdFx0bm9kZS5pbm5lckhUTUwgPSBub2RlLnRleHRDb250ZW50OyAvLyBGZWVscyBsaWtlIGNoZWF0aW5nXG5cdFx0XHRcdCQobm9kZSkuY3NzKCdmb250LXdlaWdodCcsICdub3JtYWwnKS5jc3MoJ2NvbG9yJywgJ2RhcmtncmF5Jyk7XG5cdFx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS5mbHVmZi5yZXZlcnQgPSAodHlwZSwgdmFuZGFsLCByZXYsIHBhZ2UpID0+IHtcblx0XHRpZiAobXcudXRpbC5pc0lQdjZBZGRyZXNzKHZhbmRhbCkpIHtcblx0XHRcdHZhbmRhbCA9IE1vcmViaXRzLnNhbml0aXplSVB2Nih2YW5kYWwpO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlbmFtZSA9IHBhZ2UgfHwgbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdGNvbnN0IHJldmlkID0gcmV2IHx8IG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpO1xuXHRcdGxldCBzdW1tYXJ5ID0gJyc7XG5cdFx0aWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdyZXZlcnRzdW1tYXJ5JylbMF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0c3VtbWFyeSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdyZXZlcnRzdW1tYXJ5JylbMF0udmFsdWU7XG5cdFx0fVxuXHRcdGlmIChUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSkge1xuXHRcdFx0Y29uc3Qgbm90aWZ5U3RhdHVzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0bXcubm90aWZ5KG5vdGlmeVN0YXR1cywge1xuXHRcdFx0XHRhdXRvSGlkZTogZmFsc2UsXG5cdFx0XHRcdHRpdGxlOiBg5Zue6YCAJHtwYWdlfWAsXG5cdFx0XHRcdHRhZzogYHR3aW5rbGVmbHVmZl8ke3Jldn1gLCAvLyBTaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGdpdmVuIGRpc2FibGVMaW5rXG5cdFx0XHR9KTtcblxuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQobm90aWZ5U3RhdHVzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWNvbnRlbnQtdGV4dCcpKTtcblx0XHRcdCRib2R5LmZpbmQoJyNjYXRsaW5rcycpLnJlbW92ZSgpO1xuXHRcdH1cblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR0eXBlLFxuXHRcdFx0dXNlcjogdmFuZGFsLFxuXHRcdFx0dXNlckhpZGRlbjogIXZhbmRhbCxcblx0XHRcdHBhZ2VuYW1lLFxuXHRcdFx0cmV2aWQsXG5cdFx0XHRzdW1tYXJ5LFxuXHRcdH07XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiBbJ2luZm8nLCAncmV2aXNpb25zJ10sXG5cdFx0XHR0aXRsZXM6IHBhZ2VuYW1lLFxuXHRcdFx0aW50ZXN0YWN0aW9uczogJ2VkaXQnLFxuXHRcdFx0cnZsaW1pdDogVHdpbmtsZS5nZXRQcmVmKCdyZXZlcnRNYXhSZXZpc2lvbnMnKSxcblx0XHRcdHJ2cHJvcDogWydpZHMnLCAndGltZXN0YW1wJywgJ3VzZXInXSxcblx0XHRcdGN1cnRpbWVzdGFtcDogJycsXG5cdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdHR5cGU6ICdjc3JmJyxcblx0XHR9O1xuXHRcdGNvbnN0IHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bovoPml6nkv67orqLniYjmnKzkv6Hmga8nLCAn5oqT5Y+W6LyD5pep5L+u6KiC54mI5pys6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUuZmx1ZmYuY2FsbGJhY2tzLm1haW5cblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYucmV2ZXJ0VG9SZXZpc2lvbiA9IChvbGRyZXYpID0+IHtcblx0XHRsZXQgc3VtbWFyeSA9ICcnO1xuXHRcdGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgncmV2ZXJ0c3VtbWFyeScpWzBdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHN1bW1hcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgncmV2ZXJ0c3VtbWFyeScpWzBdLnZhbHVlO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctY29udGVudC10ZXh0JykpO1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0cHJvcDogWydpbmZvJywgJ3JldmlzaW9ucyddLFxuXHRcdFx0dGl0bGVzOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRydmxpbWl0OiAxLFxuXHRcdFx0cnZzdGFydGlkOiBvbGRyZXYsXG5cdFx0XHRydnByb3A6IFsnaWRzJywgJ3VzZXInXSxcblx0XHRcdGZvcm1hdDogJ3htbCcsXG5cdFx0XHRjdXJ0aW1lc3RhbXA6ICcnLFxuXHRcdFx0bWV0YTogJ3Rva2VucycsXG5cdFx0XHR0eXBlOiAnY3NyZicsXG5cdFx0fTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5oqT5Y+W6L6D5pep5L+u6K6i54mI5pys5L+h5oGvJywgJ+aKk+WPlui8g+aXqeS/ruiogueJiOacrOizh+ioiicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy50b1JldmlzaW9uXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRyZXY6IG9sZHJldixcblx0XHRcdHN1bW1hcnksXG5cdFx0fTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYuY2FsbGJhY2tzID0ge1xuXHRcdHRvUmV2aXNpb246IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbERvYyA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGxhc3RyZXZpZCA9IE51bWJlci5wYXJzZUludCgkKHhtbERvYykuZmluZCgncGFnZScpLmF0dHIoJ2xhc3RyZXZpZCcpLCAxMCk7XG5cdFx0XHRjb25zdCB0b3VjaGVkID0gJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCd0b3VjaGVkJyk7XG5cdFx0XHRjb25zdCBsb2FkdGltZXN0YW1wID0gJCh4bWxEb2MpLmZpbmQoJ2FwaScpLmF0dHIoJ2N1cnRpbWVzdGFtcCcpO1xuXHRcdFx0Y29uc3QgY3NyZnRva2VuID0gJCh4bWxEb2MpLmZpbmQoJ3Rva2VucycpLmF0dHIoJ2NzcmZ0b2tlbicpO1xuXHRcdFx0Y29uc3QgcmV2ZXJ0VG9SZXZJRCA9IE51bWJlci5wYXJzZUludCgkKHhtbERvYykuZmluZCgncmV2JykuYXR0cigncmV2aWQnKSwgMTApO1xuXHRcdFx0Y29uc3QgcmV2ZXJ0VG9Vc2VyID0gJCh4bWxEb2MpLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXInKTtcblx0XHRcdGNvbnN0IHJldmVydFRvVXNlckhpZGRlbiA9IHR5cGVvZiAkKHhtbERvYykuZmluZCgncmV2JykuYXR0cigndXNlcmhpZGRlbicpID09PSAnc3RyaW5nJztcblx0XHRcdGlmIChyZXZlcnRUb1JldklEICE9PSBhcGlvYmoucGFyYW1zLnJldikge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aKk+WPluWIsOeahOS/ruiuoueJiOacrOS4juivt+axgueahOS/ruiuoueJiOacrOS4jeespu+8jOWPlua2iOOAgicsXG5cdFx0XHRcdFx0XHQn5oqT5Y+W5Yiw55qE5L+u6KiC54mI5pys6IiH6KuL5rGC55qE5L+u6KiC54mI5pys5LiN56ym77yM5Y+W5raI44CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3B0aW9uYWxfc3VtbWFyeSA9IHByb21wdChcblx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfor7fovpPlhaXlm57pgIDnkIbnlLHvvJonLCAn6KuL6Ly45YWl5Zue6YCA55CG55Sx77yaJyl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnN1bW1hcnlcblx0XHRcdCk7IC8vIHBhZGRlZCBvdXQgdG8gd2lkZW4gcHJvbXB0IGluIEZpcmVmb3hcblx0XHRcdGlmIChvcHRpb25hbF9zdW1tYXJ5ID09PSBudWxsKSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUseeUqOaIt+WPlua2iOOAgicsICfnlLHkvb/nlKjogIXlj5bmtojjgIInKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHN1bW1hcnkgPSBUd2lua2xlLmZsdWZmLmZvcm1hdFN1bW1hcnkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zue6YCA5Yiw55SxJFVTRVLlgZrlh7rnmoTkv67orqLniYjmnKwnLCAn5Zue6YCA5Yiw55SxJFVTRVLlgZrlh7rnmoTkv67oqILniYjmnKwnKSArIHJldmVydFRvUmV2SUQsXG5cdFx0XHRcdHJldmVydFRvVXNlckhpZGRlbiA/IG51bGwgOiByZXZlcnRUb1VzZXIsXG5cdFx0XHRcdG9wdGlvbmFsX3N1bW1hcnlcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAnZWRpdCcsXG5cdFx0XHRcdHRpdGxlOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRcdHN1bW1hcnksXG5cdFx0XHRcdHRhZ3M6IFR3aW5rbGUuY2hhbmdlVGFncyxcblx0XHRcdFx0dG9rZW46IGNzcmZ0b2tlbixcblx0XHRcdFx0dW5kbzogbGFzdHJldmlkLFxuXHRcdFx0XHR1bmRvYWZ0ZXI6IHJldmVydFRvUmV2SUQsXG5cdFx0XHRcdGJhc2V0aW1lc3RhbXA6IHRvdWNoZWQsXG5cdFx0XHRcdHN0YXJ0dGltZXN0YW1wOiBsb2FkdGltZXN0YW1wLFxuXHRcdFx0XHRtaW5vcjogVHdpbmtsZS5nZXRQcmVmKCdtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3InKS5pbmNsdWRlcygndG9yZXYnKSA/IHRydWUgOiB1bmRlZmluZWQsXG5cdFx0XHRcdGJvdDogdHJ1ZSxcblx0XHRcdH07XG5cdFx0XHQvLyBIYW5kbGUgd2F0Y2hpbmcsIHBvc3NpYmxlIGV4cGlyeVxuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hSZXZlcnRlZFBhZ2VzJykuaW5jbHVkZXMoJ3RvcmV2JykpIHtcblx0XHRcdFx0Y29uc3Qgd2F0Y2hPckV4cGlyeSA9IFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hSZXZlcnRlZEV4cGlyeScpO1xuXHRcdFx0XHRpZiAoIXdhdGNoT3JFeHBpcnkgfHwgd2F0Y2hPckV4cGlyeSA9PT0gJ25vJykge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICdub2NoYW5nZSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAod2F0Y2hPckV4cGlyeSA9PT0gJ2RlZmF1bHQnIHx8IHdhdGNoT3JFeHBpcnkgPT09ICdwcmVmZXJlbmNlcycpIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICd3YXRjaCc7XG5cdFx0XHRcdFx0Ly8gbnVtYmVyIGFsbG93ZWQgYnV0IG5vdCB1c2VkIGluIFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB3YXRjaE9yRXhwaXJ5ID09PSAnc3RyaW5nJyAmJiB3YXRjaE9yRXhwaXJ5ICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gd2F0Y2hPckV4cGlyeTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gJ+WbnumAgOWujOaIkCc7XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53lrZjlm57pgIDlhoXlrrknLCAn5YSy5a2Y5Zue6YCA5YWn5a65JyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy5jb21wbGV0ZSxcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gYXBpb2JqLnBhcmFtcztcblx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBvc3QoKTtcblx0XHR9LFxuXHRcdG1haW46IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbERvYyA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGlmICgkKHhtbERvYykuZmluZCgnYWN0aW9ucycpLmF0dHIoJ2VkaXQnKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5lcnJvcihcIlVuYWJsZSB0byBlZGl0IHRoZSBwYWdlLCBpdCdzIHByb2JhYmx5IHByb3RlY3RlZC5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGxhc3RyZXZpZCA9IE51bWJlci5wYXJzZUludCgkKHhtbERvYykuZmluZCgncGFnZScpLmF0dHIoJ2xhc3RyZXZpZCcpLCAxMCk7XG5cdFx0XHRjb25zdCB0b3VjaGVkID0gJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCd0b3VjaGVkJyk7XG5cdFx0XHRjb25zdCBsb2FkdGltZXN0YW1wID0gJCh4bWxEb2MpLmZpbmQoJ2FwaScpLmF0dHIoJ2N1cnRpbWVzdGFtcCcpO1xuXHRcdFx0Y29uc3QgY3NyZnRva2VuID0gJCh4bWxEb2MpLmZpbmQoJ3Rva2VucycpLmF0dHIoJ2NzcmZ0b2tlbicpO1xuXHRcdFx0Y29uc3QgcmV2cyA9ICQoeG1sRG9jKS5maW5kKCdyZXYnKTtcblx0XHRcdGNvbnN0IHtzdGF0ZWxlbX0gPSBhcGlvYmo7XG5cdFx0XHRjb25zdCB7cGFyYW1zfSA9IGFwaW9iajtcblx0XHRcdGlmIChyZXZzLmxlbmd0aCA8IDEpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfmsqHmnInlhbblroPkv67orqLniYjmnKzvvIzml6Dms5Xlm57pgIAnLCAn5rKS5pyJ5YW25a6D5L+u6KiC54mI5pys77yM54Sh5rOV5Zue6YCAJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBbdG9wXSA9IHJldnM7XG5cdFx0XHRjb25zdCBsYXN0dXNlciA9IHRvcC5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdGlmIChsYXN0cmV2aWQgPCBwYXJhbXMucmV2aWQpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0J+S7juacjeWKoeWZqOiOt+WPlueahOacgOaWsOS/ruiuoueJiOacrElEICcsXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0cmV2aWQpLFxuXHRcdFx0XHRcdFx0XHQnIOWwj+S6juebruWJjeaJgOaYvuekuueahOS/ruiuoueJiOacrElE44CC6L+Z5Y+v6IO95oSP5ZGz552A5b2T5YmN5L+u6K6i54mI5pys5bey6KKr5Yig6Zmk44CB5pyN5Yqh5Zmo5bu26L+f44CB5oiW5oqT5Y+W5Yiw5LqG5Z2P5o6J55qE5L+h5oGv44CC5Y+W5raI44CCJyxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdCflvp7kvLrmnI3lmajlj5blvpfnmoTmnIDmlrDkv67oqILniYjmnKxJRCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDlsI/mlrznm67liY3miYDpoa/npLrnmoTkv67oqILniYjmnKxJROOAgumAmeWPr+iDveaEj+WRs+iRl+eVtuWJjeS/ruiogueJiOacrOW3suiiq+WIqumZpOOAgeS8uuacjeWZqOW7tumBsuOAgeaIluaTt+WPluWIsOS6huWjnuaOieeahOizh+ioiuOAguWPlua2iOOAgicsXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBVc2VkIGZvciB1c2VyLWZhY2luZyBhbGVydHMsIG1lc3NhZ2VzLCBldGMuLCBub3QgZWRpdHMgb3Igc3VtbWFyaWVzXG5cdFx0XHRsZXQgdXNlck5vcm0gPSBwYXJhbXMudXNlciB8fCBUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWU7XG5cdFx0XHRsZXQgaW5kZXggPSAxO1xuXHRcdFx0aWYgKHBhcmFtcy5yZXZpZCA9PT0gbGFzdHJldmlkKSB7XG5cdFx0XHRcdC8vIEV4cGVjdGVkIHJldmlzaW9uIGlzIHRoZSBzYW1lLCBzbyB0aGUgdXNlcnMgbXVzdCBtYXRjaDtcblx0XHRcdFx0Ly8gdGhpcyBhbGxvd3Mgc3lzb3BzIHRvIGtub3cgd2hldGhlciB0aGUgdXNlcnMgYXJlIHRoZSBzYW1lXG5cdFx0XHRcdHBhcmFtcy51c2VyID0gbGFzdHVzZXI7XG5cdFx0XHRcdHVzZXJOb3JtID0gcGFyYW1zLnVzZXIgfHwgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0J+itpuWRiicsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6K6i54mI5pysICcsXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0cmV2aWQpLFxuXHRcdFx0XHRcdFx0XHQnIOS4juaIkeS7rOeahOS/ruiuoueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLnJldmlkKSxcblx0XHRcdFx0XHRcdFx0J+S4jeWQjCcsXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6KiC54mI5pysICcsXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0cmV2aWQpLFxuXHRcdFx0XHRcdFx0XHQnIOiIh+aIkeWAkeeahOS/ruiogueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLnJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDkuI3lkIwnLFxuXHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKGxhc3R1c2VyID09PSBwYXJhbXMudXNlcikge1xuXHRcdFx0XHRcdHN3aXRjaCAocGFyYW1zLnR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ3ZhbmQnOlxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyh3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSwgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyA5paw5L+u6K6i54mI5pys55SxICcsICfmnIDmlrDkv67oqILniYjmnKznlLEgJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOWboOaIkeS7rOWBh+WumuegtOWdj++8jOe7p+e7reWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOWboOaIkeWAkeWBh+WumuegtOWjnu+8jOe5vOe6jOWbnumAgOaTjeS9nOOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybign5o+Q56S6JywgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyA5paw5L+u6K6i54mI5pys55SxICcsICfmnIDmlrDkv67oqILniYjmnKznlLEgJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDlgZrlh7rvvIzkvYbmiJHku6zov5jmmK/kuI3lm57pgIDkuobjgIInLCAnIOWBmuWHuu+8jOS9huaIkeWAkemChOaYr+S4jeWbnumAgOS6huOAgicpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRwYXJhbXMudHlwZSA9PT0gJ3ZhbmQnICYmIC8vIE9rYXkgdG8gdGVzdCBvbiB1c2VyIHNpbmNlIGl0IHdpbGwgZWl0aGVyIGZhaWwgb3Igc3lzb3Agd2lsbCBjb3JyZWN0bHkgYWNjZXNzIGl0XG5cdFx0XHRcdFx0Ly8gQmVzaWRlcywgbm9uZSBvZiB0aGUgdHJ1c3RlZCBib3RzIGFyZSBnb2luZyB0byBiZSByZXZkZWwnZFxuXHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYudHJ1c3RlZEJvdHMuaW5jbHVkZXModG9wLmdldEF0dHJpYnV0ZSgndXNlcicpKSAmJlxuXHRcdFx0XHRcdHJldnMubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRcdHJldnNbMV0uZ2V0QXR0cmlidXRlKCdyZXZpZCcpID09PSBwYXJhbXMucmV2aWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67orqLniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCfvvIzkuIDkuKrlj6/kv6HnmoTmnLrlmajkurrlgZrlh7rvvIzkvYbkuYvliY3nmoTniYjmnKzooqvorqTkuLrmmK/noLTlnY/vvIznu6fnu63lm57pgIDmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdFx0J+acgOaWsOS/ruiogueJiOacrOeUsSAnLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0dXNlciksXG5cdFx0XHRcdFx0XHRcdFx0J++8jOS4gOWAi+WPr+S/oeeahOapn+WZqOS6uuWBmuWHuu+8jOS9huS5i+WJjeeahOeJiOacrOiiq+iqjeeCuuaYr+egtOWjnu+8jOe5vOe6jOWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGluZGV4ID0gMjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67orqLniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCcg5YGa5Ye677yM5omA5Lul6L+Z5Liq5L+u6K6i54mI5pys5Y+v6IO95bey57uP6KKr5Zue6YCA5LqG77yM5Y+W5raI5Zue6YCA5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67oqILniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCcg5YGa5Ye677yM5omA5Lul6YCZ5YCL5L+u6KiC54mI5pys5Y+v6IO95bey57aT6KKr5Zue6YCA5LqG77yM5Y+W5raI5Zue6YCA5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5mbHVmZi50cnVzdGVkQm90cy5pbmNsdWRlcyhwYXJhbXMudXNlcikpIHtcblx0XHRcdFx0c3dpdGNoIChwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbmQnOlxuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8od2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksIFtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIblr7kgJywgJ+Wwh+WwjSAnKSxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCcg5omn6KGM56C05Z2P5Zue6YCA77yM6L+Z5piv5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq677yM5oiR5Lus5YGH5a6a5oKo6KaB5Zue6YCA5YmN5LiA5Liq5L+u6K6i54mI5pys44CCJyxcblx0XHRcdFx0XHRcdFx0XHQnIOWft+ihjOegtOWjnuWbnumAgO+8jOmAmeaYr+S4gOWAi+WPr+S/oeeahOapn+WZqOS6uu+8jOaIkeWAkeWBh+WumuaCqOimgeWbnumAgOWJjeS4gOWAi+S/ruiogueJiOacrOOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0aW5kZXggPSAyO1xuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXIgPSByZXZzWzFdLmdldEF0dHJpYnV0ZSgndXNlcicpO1xuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPSByZXZzWzFdLmdldEF0dHJpYnV0ZSgndXNlcmhpZGRlbicpID09PSAnJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8qIGNhc2UgJ25vcm0nOiAqL1xuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb250ID0gY29uZmlybShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpgInmi6nkuobluLjop4Tlm57pgIDvvIzkvYbmnIDmlrDkv67mlLnmmK/nlLHkuIDkuKrlj6/kv6HnmoTmnLrlmajkurrvvIgnLFxuXHRcdFx0XHRcdFx0XHRcdCfpgbjmk4fkuobluLjopo/lm57pgIDvvIzkvYbmnIDmlrDkv67mlLnmmK/nlLHkuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrvvIgnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdHVzZXJOb3JtICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn77yJ5YGa5Ye655qE44CC56Gu5a6a5Lul5Zue6YCA5YmN5LiA5Liq5L+u6K6i54mI5pys77yM5Y+W5raI5Lul5Zue6YCA5py65Zmo5Lq655qE5L+u5pS5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdCfvvInlgZrlh7rnmoTjgILnorrlrprku6Xlm57pgIDliY3kuIDlgIvkv67oqILniYjmnKzvvIzlj5bmtojku6Xlm57pgIDmqZ/lmajkurrnmoTkv67mlLknXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGlmIChjb250KSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLCBbXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIblr7kgJywgJ+Wwh+WwjSAnKSxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgdXNlck5vcm0pLFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCcg5omn6KGM5bi46KeE5Zue6YCA77yM6L+Z5piv5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq677yM5Z+65LqO56Gu6K6k77yM5oiR5Lus5bCG5Zue6YCA5YmN5LiA5Liq5L+u6K6i54mI5pys44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCcg5Z+36KGM5bi46KaP5Zue6YCA77yM6YCZ5piv5LiA5YCL5Y+v5L+h55qE5qmf5Zmo5Lq677yM5Z+65pa856K66KqN77yM5oiR5YCR5bCH5Zue6YCA5YmN5LiA5YCL5L+u6KiC54mI5pys44CCJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0XHRpbmRleCA9IDI7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy51c2VyID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPSByZXZzWzFdLmdldEF0dHJpYnV0ZSgndXNlcmhpZGRlbicpID09PSAnJztcblx0XHRcdFx0XHRcdFx0dXNlck5vcm0gPSBwYXJhbXMudXNlciB8fCBUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWU7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybign5o+Q56S6JywgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5a+5ICcsICflsIflsI0gJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOaJp+ihjOW4uOinhOWbnumAgO+8jOi/meaYr+S4gOS4quWPr+S/oeeahOacuuWZqOS6uu+8jOWfuuS6juehruiupO+8jOaIkeS7rOS7jeWwhuWbnumAgOi/meS4quS/ruiuoueJiOacrOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWft+ihjOW4uOimj+WbnumAgO+8jOmAmeaYr+S4gOWAi+WPr+S/oeeahOapn+WZqOS6uu+8jOWfuuaWvOeiuuiqje+8jOaIkeWAkeS7jeWwh+WbnumAgOmAmeWAi+S/ruiogueJiOacrOOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0XHRsZXQgY291bnQgPSAwO1xuXHRcdFx0Zm9yIChsZXQgaSA9IGluZGV4OyBpIDwgcmV2cy5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHQrK2NvdW50O1xuXHRcdFx0XHRpZiAocmV2c1tpXS5nZXRBdHRyaWJ1dGUoJ3VzZXInKSAhPT0gcGFyYW1zLnVzZXIpIHtcblx0XHRcdFx0XHRmb3VuZCA9IGk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoW1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5LmL5YmN55qE5L+u6K6i54mI5pys77yM5Y+v6IO9ICcsICfmnKrmib7liLDkuYvliY3nmoTkv67oqILniYjmnKzvvIzlj6/og70gJyksXG5cdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQnIOaYr+WUr+S4gOi0oeeMruiAhe+8jOaIlui/meS4queUqOaIt+i/nue7reWBmuWHuuS6hui2hei/hyAnLFxuXHRcdFx0XHRcdFx0JyDmmK/llK/kuIDosqLnjbvogIXvvIzmiJbpgJnlgIvnlKjmiLbpgKPnuozlgZrlh7rkuobotoXpgY4gJ1xuXHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihUd2lua2xlLmdldFByZWYoJ3JldmVydE1heFJldmlzaW9ucycpKSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmrKHnvJbovpHjgIInLCAnIOasoee3qOi8r+OAgicpLFxuXHRcdFx0XHRdKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjb3VudCkge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfplJnor68nLCAn6Yyv6KqkJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aIkeS7rOWwhuimgeWbnumAgDDkuKrkv67orqLniYjmnKzvvIzov5nmsqHmnInmhI/kuYnvvIzmiYDku6Xlj5bmtojlm57pgIDmk43kvZzjgILlj6/og73mmK/lm6DkuLrov5nkuKrkv67orqLniYjmnKzlt7Lnu4/ooqvlm57pgIDvvIzkvYbkv67orqLniYjmnKxJROS7jeaYr+S4gOagt+eahOOAgicsXG5cdFx0XHRcdFx0XHQn5oiR5YCR5bCH6KaB5Zue6YCAMOWAi+S/ruiogueJiOacrO+8jOmAmeaykuacieaEj+e+qe+8jOaJgOS7peWPlua2iOWbnumAgOaTjeS9nOOAguWPr+iDveaYr+WboOeCuumAmeWAi+S/ruiogueJiOacrOW3sue2k+iiq+WbnumAgO+8jOS9huS/ruiogueJiOacrElE5LuN5piv5LiA5qij55qE44CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZ29vZF9yZXZpc2lvbiA9IHJldnNbZm91bmRdO1xuXHRcdFx0bGV0IHVzZXJIYXNBbHJlYWR5Q29uZmlybWVkQWN0aW9uID0gZmFsc2U7XG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgIT09ICd2YW5kJyAmJiBjb3VudCA+IDEpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0dXNlck5vcm0gK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDov57nu63lgZrlh7rkuoYgJywgJyDpgKPnuozlgZrlh7rkuoYgJykgK1xuXHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGNvdW50KSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOasoee8lui+ke+8jOaYr+WQpuimgeWFqOmDqOWbnumAgO+8nycsICcg5qyh57eo6Lyv77yM5piv5ZCm6KaB5YWo6YOo5Zue6YCA77yfJylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKCfmj5DnpLonLCB3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nCcsICfkvb/nlKjogIXlj5bmtojmk43kvZwnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHVzZXJIYXNBbHJlYWR5Q29uZmlybWVkQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhcmFtcy5jb3VudCA9IGNvdW50O1xuXHRcdFx0cGFyYW1zLmdvb2RpZCA9IGdvb2RfcmV2aXNpb24uZ2V0QXR0cmlidXRlKCdyZXZpZCcpO1xuXHRcdFx0cGFyYW1zLmdvb2R1c2VyID0gZ29vZF9yZXZpc2lvbi5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdHBhcmFtcy5nb29kdXNlckhpZGRlbiA9IGdvb2RfcmV2aXNpb24uZ2V0QXR0cmlidXRlKCd1c2VyaGlkZGVuJykgPT09ICcnO1xuXHRcdFx0c3RhdGVsZW0uc3RhdHVzKFtcblx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIoY291bnQpKSxcblx0XHRcdFx0d2luZG93LndnVUxTKCcg5Liq5L+u6K6i54mI5pys5LmL5YmN55SxICcsICcg5YCL5L+u6KiC54mI5pys5LmL5YmN55SxICcpLFxuXHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLmdvb2R1c2VySGlkZGVuID8gVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lIDogcGFyYW1zLmdvb2R1c2VyKSxcblx0XHRcdFx0d2luZG93LndnVUxTKCcg5YGa5Ye655qE5L+u6K6i54mI5pysICcsICcg5YGa5Ye655qE5L+u6KiC54mI5pysICcpLFxuXHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLmdvb2RpZCksXG5cdFx0XHRdKTtcblx0XHRcdGxldCBzdW1tYXJ5O1xuXHRcdFx0bGV0IGV4dHJhX3N1bW1hcnk7XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ3ZhbmQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSBUd2lua2xlLmZsdWZmLmZvcm1hdFN1bW1hcnkoXG5cdFx0XHRcdFx0XHRg5Zue6YCAJFVTRVLlgZrlh7rnmoQke3BhcmFtcy5jb3VudH0ke3dpbmRvdy53Z1VMUygn5qyh57yW6L6R77yM5Yiw55SxJywgJ+asoee3qOi8r++8jOWIsOeUsScpfSR7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5nb29kdXNlckhpZGRlbiA/IFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSA6IHBhcmFtcy5nb29kdXNlclxuXHRcdFx0XHRcdFx0fSR7d2luZG93LndnVUxTKCflgZrlh7rnmoTmnIDlkI7kv67orqLniYjmnKwgJywgJ+WBmuWHuueahOacgOW+jOS/ruiogueJiOacrCAnKX1gLFxuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPyBudWxsIDogcGFyYW1zLnVzZXJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvKiBjYXNlICdub3JtJzogKi9cblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ29mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQnKSkge1xuXHRcdFx0XHRcdFx0ZXh0cmFfc3VtbWFyeSA9IHByb21wdChcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCflj6/pgInnmoTnvJbovpHmkZjopoHvvJonLCAn5Y+v6YG455qE57eo6Lyv5pGY6KaB77yaJyl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCxcblx0XHRcdFx0XHRcdFx0cGFyYW1zLnN1bW1hcnlcblx0XHRcdFx0XHRcdCk7IC8vIHBhZGRlZCBvdXQgdG8gd2lkZW4gcHJvbXB0IGluIEZpcmVmb3hcblx0XHRcdFx0XHRcdGlmIChleHRyYV9zdW1tYXJ5ID09PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raI5pON5L2c44CCJywgJ+S9v+eUqOiAheWPlua2iOaTjeS9nOOAgicpKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dXNlckhhc0FscmVhZHlDb25maXJtZWRBY3Rpb24gPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzdW1tYXJ5ID0gVHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5KFxuXHRcdFx0XHRcdFx0YOWbnumAgCRVU0VS5YGa5Ye655qEJHtwYXJhbXMuY291bnR9JHt3aW5kb3cud2dVTFMoJ+asoee8lui+kScsICfmrKHnt6jovK8nKX1gLFxuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPyBudWxsIDogcGFyYW1zLnVzZXIsXG5cdFx0XHRcdFx0XHRleHRyYV9zdW1tYXJ5XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdjb25maXJtT25GbHVmZicpICYmXG5cdFx0XHRcdCF1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiAmJlxuXHRcdFx0XHQhY29uZmlybSh3aW5kb3cud2dVTFMoJ+WbnumAgOmhtemdou+8muaCqOehruWumuWQl++8nycsICflm57pgIDpoIHpnaLvvJrmgqjnorrlrprll47vvJ8nKSlcblx0XHRcdCkge1xuXHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIERlY2lkZSB3aGV0aGVyIHRvIG5vdGlmeSB0aGUgdXNlciBvbiBzdWNjZXNzXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFUd2lua2xlLmZsdWZmLnNraXBUYWxrICYmXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignb3BlblRhbGtQYWdlJykuaW5jbHVkZXMocGFyYW1zLnR5cGUpICYmXG5cdFx0XHRcdCFwYXJhbXMudXNlckhpZGRlbiAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgIT09IHBhcmFtcy51c2VyXG5cdFx0XHQpIHtcblx0XHRcdFx0cGFyYW1zLm5vdGlmeVVzZXIgPSB0cnVlO1xuXHRcdFx0XHQvLyBQYXNzIGFsb25nIHRvIHRoZSB3YXJuIG1vZHVsZVxuXHRcdFx0XHRwYXJhbXMudmFudGltZXN0YW1wID0gdG9wLmdldEF0dHJpYnV0ZSgndGltZXN0YW1wJyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAnZWRpdCcsXG5cdFx0XHRcdHRpdGxlOiBwYXJhbXMucGFnZW5hbWUsXG5cdFx0XHRcdHN1bW1hcnksXG5cdFx0XHRcdHRhZ3M6IFR3aW5rbGUuY2hhbmdlVGFncyxcblx0XHRcdFx0dG9rZW46IGNzcmZ0b2tlbixcblx0XHRcdFx0dW5kbzogbGFzdHJldmlkLFxuXHRcdFx0XHR1bmRvYWZ0ZXI6IHBhcmFtcy5nb29kaWQsXG5cdFx0XHRcdGJhc2V0aW1lc3RhbXA6IHRvdWNoZWQsXG5cdFx0XHRcdHN0YXJ0dGltZXN0YW1wOiBsb2FkdGltZXN0YW1wLFxuXHRcdFx0XHRtaW5vcjogVHdpbmtsZS5nZXRQcmVmKCdtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3InKS5pbmNsdWRlcyhwYXJhbXMudHlwZSkgPyB0cnVlIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRib3Q6IHRydWUsXG5cdFx0XHR9O1xuXHRcdFx0Ly8gSGFuZGxlIHdhdGNoaW5nLCBwb3NzaWJsZSBleHBpcnlcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoUmV2ZXJ0ZWRQYWdlcycpLmluY2x1ZGVzKHBhcmFtcy50eXBlKSkge1xuXHRcdFx0XHRjb25zdCB3YXRjaE9yRXhwaXJ5ID0gVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFJldmVydGVkRXhwaXJ5Jyk7XG5cdFx0XHRcdGlmICghd2F0Y2hPckV4cGlyeSB8fCB3YXRjaE9yRXhwaXJ5ID09PSAnbm8nKSB7XG5cdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ID0gJ25vY2hhbmdlJztcblx0XHRcdFx0fSBlbHNlIGlmICh3YXRjaE9yRXhwaXJ5ID09PSAnZGVmYXVsdCcgfHwgd2F0Y2hPckV4cGlyeSA9PT0gJ3ByZWZlcmVuY2VzJykge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICdwcmVmZXJlbmNlcyc7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ID0gJ3dhdGNoJztcblx0XHRcdFx0XHQvLyBudW1iZXIgYWxsb3dlZCBidXQgbm90IHVzZWQgaW4gVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXNcblx0XHRcdFx0XHRpZiAodHlwZW9mIHdhdGNoT3JFeHBpcnkgPT09ICdzdHJpbmcnICYmIHdhdGNoT3JFeHBpcnkgIT09ICd5ZXMnKSB7XG5cdFx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3RleHBpcnkgPSB3YXRjaE9yRXhwaXJ5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSkge1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHBhcmFtcy5wYWdlbmFtZTtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9ICflm57pgIDlrozmiJAnO1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2Y5Zue6YCA5YaF5a65JywgJ+WEsuWtmOWbnumAgOWFp+WuuScpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5jYWxsYmFja3MuY29tcGxldGUsXG5cdFx0XHRcdHN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdH0sXG5cdFx0Y29tcGxldGU6IChhcGlvYmopID0+IHtcblx0XHRcdC8vIFRPRE8gTW9zdCBvZiB0aGlzIGlzIGNvcHktcGFzdGVkIGZyb20gTW9yZWJpdHMud2lraS5wYWdlI2ZuU2F2ZVN1Y2Nlc3MuIFVuaWZ5IGl0XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmouZ2V0WE1MKCk7XG5cdFx0XHRjb25zdCAkZWRpdCA9ICQoeG1sKS5maW5kKCdlZGl0Jyk7XG5cdFx0XHRpZiAoJCh4bWwpLmZpbmQoJ2NhcHRjaGEnKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S4jeiDveWbnumAgO+8jOWboOacjeWKoeWZqOimgeaxguaCqOi+k+WFpemqjOivgeeggeOAgicsICfkuI3og73lm57pgIDvvIzlm6DkvLrmnI3lmajopoHmsYLmgqjovLjlhaXpqZforYnnorzjgIInKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmICgkZWRpdC5hdHRyKCdub2NoYW5nZScpID09PSAnJykge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+imgeWbnumAgOWIsOeahOeJiOacrOS4juW9k+WJjeeJiOacrOebuOWQjO+8jOayoeS7gOS5iOimgeWBmueahCcsXG5cdFx0XHRcdFx0XHQn6KaB5Zue6YCA5Yiw55qE54mI5pys6IiH55uu5YmN54mI5pys55u45ZCM77yM5rKS5LuA6bq86KaB5YGa55qEJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0Y29uc3Qge3BhcmFtc30gPSBhcGlvYmo7XG5cdFx0XHRcdGlmIChwYXJhbXMubm90aWZ5VXNlciAmJiAhcGFyYW1zLnVzZXJIaWRkZW4pIHtcblx0XHRcdFx0XHQvLyBub3RpZnlVc2VyIG9ubHkgZnJvbSBtYWluLCBub3QgZnJvbSB0b1JldmlzaW9uXG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8od2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksIFtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5byA5ZCv55So5oi3ICcsICfplovllZ/kvb/nlKjogIUgJyksXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLnVzZXIpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6K6o6K666aG1JywgJyDnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRjb25zdCB3aW5kb3dRdWVyeSA9IHtcblx0XHRcdFx0XHRcdHRpdGxlOiBgVXNlciB0YWxrOiR7cGFyYW1zLnVzZXJ9YCxcblx0XHRcdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHRcdFx0cHJldmlldzogJ3llcycsXG5cdFx0XHRcdFx0XHR2YW5hcnRpY2xlOiBwYXJhbXMucGFnZW5hbWUucmVwbGFjZSgvXy9nLCAnICcpLFxuXHRcdFx0XHRcdFx0dmFuYXJ0aWNsZXJldmlkOiBwYXJhbXMucmV2aWQsXG5cdFx0XHRcdFx0XHR2YW50aW1lc3RhbXA6IHBhcmFtcy52YW50aW1lc3RhbXAsXG5cdFx0XHRcdFx0XHR2YW5hcnRpY2xlZ29vZHJldmlkOiBwYXJhbXMuZ29vZGlkLFxuXHRcdFx0XHRcdFx0dHlwZTogcGFyYW1zLnR5cGUsXG5cdFx0XHRcdFx0XHRjb3VudDogcGFyYW1zLmNvdW50LFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0c3dpdGNoIChUd2lua2xlLmdldFByZWYoJ3VzZXJUYWxrUGFnZU1vZGUnKSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAndGFiJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4obXcudXRpbC5nZXRVcmwoJycsIHdpbmRvd1F1ZXJ5KSwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnYmxhbmsnOlxuXHRcdFx0XHRcdFx0XHR3aW5kb3cub3Blbihcblx0XHRcdFx0XHRcdFx0XHRtdy51dGlsLmdldFVybCgnJywgd2luZG93UXVlcnkpLFxuXHRcdFx0XHRcdFx0XHRcdCdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRcdCdub29wZW5lcixub3JlZmVycmVyLGxvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHQvKiBjYXNlICd3aW5kb3cnOiAqL1xuXHRcdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwoJycsIHdpbmRvd1F1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93JyA/ICdfYmxhbmsnIDogJ3R3aW5rbGV3YXJud2luZG93Jyxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93J1xuXHRcdFx0XHRcdFx0XHRcdFx0PyAnbm9vcGVuZXIsbm9yZWZlcnJlciwnXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICcnICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbG9jYXRpb249bm8sdG9vbGJhcj1ubyxzdGF0dXM9bm8sZGlyZWN0b3JpZXM9bm8sc2Nyb2xsYmFycz15ZXMsd2lkdGg9MTIwMCxoZWlnaHQ9ODAwJ1xuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHQvLyBJZiBidWlsdEluU3RyaW5nIGNvbnRhaW5zIHRoZSBzdHJpbmcgXCIkVVNFUlwiLCBpdCB3aWxsIGJlIHJlcGxhY2VkXG5cdC8vIGJ5IGFuIGFwcHJvcHJpYXRlIHVzZXIgbGluayBpZiBhIHVzZXIgbmFtZSBpcyBwcm92aWRlZFxuXHRUd2lua2xlLmZsdWZmLmZvcm1hdFN1bW1hcnkgPSAoYnVpbHRJblN0cmluZywgdXNlck5hbWUsIGN1c3RvbVN0cmluZykgPT4ge1xuXHRcdGxldCByZXN1bHQgPSBidWlsdEluU3RyaW5nO1xuXHRcdC8vIGFwcGVuZCB1c2VyJ3MgY3VzdG9tIHJlYXNvblxuXHRcdGlmIChjdXN0b21TdHJpbmcpIHtcblx0XHRcdHJlc3VsdCArPSBg77yaJHtNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoY3VzdG9tU3RyaW5nKX1gO1xuXHRcdH1cblx0XHQvLyBmaW5kIG51bWJlciBvZiBVVEYtOCBieXRlcyB0aGUgcmVzdWx0aW5nIHN0cmluZyB0YWtlcyB1cCwgYW5kIHBvc3NpYmx5IGFkZFxuXHRcdC8vIGEgY29udHJpYnV0aW9ucyBvciBjb250cmlidXRpb25zK3RhbGsgbGluayBpZiBpdCBkb2Vzbid0IHB1c2ggdGhlIGVkaXQgc3VtbWFyeVxuXHRcdC8vIG92ZXIgdGhlIDQ5OS1ieXRlIGxpbWl0XG5cdFx0aWYgKC9cXCRVU0VSLy50ZXN0KGJ1aWx0SW5TdHJpbmcpKSB7XG5cdFx0XHRpZiAodXNlck5hbWUpIHtcblx0XHRcdFx0Y29uc3QgcmVzdWx0TGVuID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHJlc3VsdC5yZXBsYWNlKCckVVNFUicsICcnKSkpLmxlbmd0aDtcblx0XHRcdFx0Y29uc3QgY29udHJpYnNMaW5rID0gYFtbU3BlY2lhbDpDb250cmlidXRpb25zLyR7dXNlck5hbWV9fCR7dXNlck5hbWV9XV1gO1xuXHRcdFx0XHRjb25zdCBjb250cmlic0xlbiA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjb250cmlic0xpbmspKS5sZW5ndGg7XG5cdFx0XHRcdGlmIChyZXN1bHRMZW4gKyBjb250cmlic0xlbiA8PSA0OTkpIHtcblx0XHRcdFx0XHRjb25zdCB0YWxrTGluayA9IGDvvIhbW1VzZXIgdGFsazoke3VzZXJOYW1lfSR7d2luZG93LndnVUxTKCd86K6o6K66XV3vvIknLCAnfOiojuirll1d77yJJyl9YDtcblx0XHRcdFx0XHRpZiAocmVzdWx0TGVuICsgY29udHJpYnNMZW4gKyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodGFsa0xpbmspKS5sZW5ndGggPD0gNDk5KSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBNb3JlYml0cy5zdHJpbmcuc2FmZVJlcGxhY2UocmVzdWx0LCAnJFVTRVInLCBjb250cmlic0xpbmsgKyB0YWxrTGluayk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShyZXN1bHQsICckVVNFUicsIGNvbnRyaWJzTGluayk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlc3VsdCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShyZXN1bHQsICckVVNFUicsIHVzZXJOYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVzdWx0ID0gTW9yZWJpdHMuc3RyaW5nLnNhZmVSZXBsYWNlKHJlc3VsdCwgJyRVU0VSJywgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5mbHVmZiwgJ2ZsdWZmJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmF0Y2hkZWxldGUuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlYmF0Y2hkZWxldGUoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGViYXRjaGRlbGV0ZS5qczogQmF0Y2ggZGVsZXRlIG1vZHVsZSAoc3lzb3BzIG9ubHkpXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkQtYmF0Y2hcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBub24tYXJ0aWNsZXMsIGFuZCBTcGVjaWFsOlByZWZpeEluZGV4XG5cdCAqL1xuXHRUd2lua2xlLmJhdGNoZGVsZXRlID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wICYmXG5cdFx0XHQoKG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpICYmIG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPiAwKSB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnIHx8XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdCcm9rZW5SZWRpcmVjdHMnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmibnliKAnLCAn5om55YiqJyksXG5cdFx0XHRcdCd0dy1iYXRjaCcsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk5q2k5YiG57G75oiW6aG16Z2i5Lit55qE5omA5pyJ6ZO+5o6lJywgJ+WIqumZpOatpOWIhumhnuaIlumggemdouS4reeahOaJgOaciemAo+e1kCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZSA9IHt9O1xuXHQvLyBIYXMgdGhlIHN1YnBhZ2VzIGxpc3QgYmVlbiBsb2FkZWQ/XG5cdGxldCBzdWJwYWdlc0xvYWRlZDtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRzdWJwYWdlc0xvYWRlZCA9IGZhbHNlO1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCA0MDApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aJuemHj+WIoOmZpCcsICfmibnmrKHliKrpmaQnKSk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjYmF0Y2hkZWxldGUnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk6aG16Z2iJywgJ+WIqumZpOmggemdoicpLFxuXHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfcGFnZScsXG5cdFx0XHRcdFx0dmFsdWU6ICdkZWxldGUnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+WIoOmZpOWFs+iBlOeahOiuqOiuuumhte+8iOeUqOaIt+iuqOiuuumhtemZpOWklu+8iScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn5Yiq6Zmk6Zec6IGv55qE6KiO6KuW6aCB77yI5L2/55So6ICF6KiO6KuW6aCB6Zmk5aSW77yJJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZV90YWxrJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2RlbGV0ZV90YWxrJyxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5Yiw5bey5Yig6aG16Z2i55qE6YeN5a6a5ZCR6aG1JywgJ+WIqumZpOWIsOW3suWIqumggemdoueahOmHjeaWsOWwjuWQkemggemdoicpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfcmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2RlbGV0ZV9yZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTlt7LliKDpobXpnaLnmoTlrZDpobXpnaInLCAn5Yiq6Zmk5bey5Yiq6aCB6Z2i55qE5a2Q6aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZV9zdWJwYWdlcycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrLnRvZ2dsZVN1YnBhZ2VzLFxuXHRcdFx0XHRcdFx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5bey5Yig5a2Q6aG16Z2i55qE6K6o6K666aG1JywgJ+WIqumZpOW3suWIquWtkOmggemdoueahOiojuirlumggScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfc3VicGFnZV90YWxrcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfc3VicGFnZV90YWxrcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+WIoOmZpOWIsOW3suWIoOWtkOmhtemdoueahOmHjeWumuWQkemhtScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQn5Yiq6Zmk5Yiw5bey5Yiq5a2Q6aCB6Z2i55qE6YeN5paw5bCO5ZCR6aCB6Z2iJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfc3VicGFnZV9yZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflj5bmtojmiYDmnInlt7LliKDpobXpnaLnmoTpk77lhaXvvIjku4XlpITnkIbmnaHnm67lkb3lkI3nqbrpl7TvvIknLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+WPlua2iOaJgOacieW3suWIqumggemdoueahOmAo+WFpe+8iOWDheiZleeQhuaineebruWRveWQjeepuumWk++8iSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICd1bmxpbmtfc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAndW5saW5rX3N1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WPlua2iOmTvuWFpe+8iOS7heWkhOeQhuadoeebruWRveWQjeepuumXtO+8iScsICflj5bmtojpgKPlhaXvvIjlg4XomZXnkIbmop3nm67lkb3lkI3nqbrplpPvvIknKSxcblx0XHRcdFx0XHRuYW1lOiAndW5saW5rX3BhZ2UnLFxuXHRcdFx0XHRcdHZhbHVlOiAndW5saW5rJyxcblx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+mZpOaWh+S7tuS9v+eUqO+8iOaJgOacieWRveWQjeepuumXtO+8iScsICfnp7vpmaTmqpTmoYjkvb/nlKjvvIjmiYDmnInlkb3lkI3nqbrplpPvvIknKSxcblx0XHRcdFx0XHRuYW1lOiAndW5saW5rX2ZpbGUnLFxuXHRcdFx0XHRcdHZhbHVlOiAndW5saW5rX2ZpbGUnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NvbW1vbl9yZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfluLjnlKjnkIbnlLHvvJonLFxuXHRcdFx0c3R5bGU6ICd3aWR0aDogODUlOycsXG5cdFx0XHRsaXN0OiBUd2lua2xlLmJhdGNoZGVsZXRlLmRlbGV0ZXJlYXNvbmxpc3QsXG5cdFx0XHRldmVudDogVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay5jaGFuZ2VfY29tbW9uX3JlYXNvbixcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHRzaXplOiA3NSxcblx0XHR9KTtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdHByb3A6ICdyZXZpc2lvbnN8aW5mb3xpbWFnZWluZm8nLFxuXHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbicsXG5cdFx0XHRydnByb3A6ICdzaXplfHVzZXInLFxuXHRcdH07XG5cdFx0Ly8gT24gY2F0ZWdvcmllc1xuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxNCkge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ2NhdGVnb3J5bWVtYmVycyc7XG5cdFx0XHRxdWVyeS5nY210aXRsZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdHF1ZXJ5LmdjbWxpbWl0ID0gVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpO1xuXHRcdFx0Ly8gT24gU3BlY2lhbDpQcmVmaXhJbmRleFxuXHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1ByZWZpeGluZGV4Jykge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ2FsbHBhZ2VzJztcblx0XHRcdHF1ZXJ5LmdhcGxpbWl0ID0gVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpO1xuXHRcdFx0aWYgKG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncHJlZml4JykpIHtcblx0XHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCduYW1lc3BhY2UnKTtcblx0XHRcdFx0cXVlcnkuZ2FwcHJlZml4ID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdwcmVmaXgnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxldCBwYXRoU3BsaXQgPSBkZWNvZGVVUklDb21wb25lbnQobG9jYXRpb24ucGF0aG5hbWUpLnNwbGl0KCcvJyk7XG5cdFx0XHRcdGlmIChwYXRoU3BsaXQubGVuZ3RoIDwgMyB8fCBwYXRoU3BsaXRbMl0gIT09ICdTcGVjaWFsOuWJjee8gOe0ouW8lScpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGl0bGVTcGxpdCA9IHBhdGhTcGxpdFszXS5zcGxpdCgnOicpO1xuXHRcdFx0XHRxdWVyeS5nYXBuYW1lc3BhY2UgPSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpW3RpdGxlU3BsaXRbMF0udG9Mb3dlckNhc2UoKV07XG5cdFx0XHRcdGlmICh0aXRsZVNwbGl0Lmxlbmd0aCA8IDIgfHwgcXVlcnkuZ2FwbmFtZXNwYWNlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRxdWVyeS5nYXBuYW1lc3BhY2UgPSAwOyAvLyBhcnRpY2xlIG5hbWVzcGFjZVxuXHRcdFx0XHRcdHF1ZXJ5LmdhcHByZWZpeCA9IHBhdGhTcGxpdC5zcGxpY2UoMykuam9pbignLycpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhdGhTcGxpdCA9IHBhdGhTcGxpdC5zcGxpY2UoNCk7XG5cdFx0XHRcdFx0cGF0aFNwbGl0LnNwbGljZSgwLCAwLCB0aXRsZVNwbGl0LnNwbGljZSgxKS5qb2luKCc6JykpO1xuXHRcdFx0XHRcdHF1ZXJ5LmdhcHByZWZpeCA9IHBhdGhTcGxpdC5qb2luKCcvJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIE9uIFNwZWNpYWw6QnJva2VuUmVkaXJlY3RzXG5cdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQnJva2VuUmVkaXJlY3RzJykge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ3F1ZXJ5cGFnZSc7XG5cdFx0XHRxdWVyeS5ncXBwYWdlID0gJ0Jyb2tlblJlZGlyZWN0cyc7XG5cdFx0XHRxdWVyeS5ncXBsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHRcdC8vIE9uIG5vcm1hbCBwYWdlc1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnbGlua3MnO1xuXHRcdFx0cXVlcnkudGl0bGVzID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0cXVlcnkuZ3BsbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXR1c2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdHN0YXR1c2Rpdi5zdHlsZS5wYWRkaW5nID0gJzE1cHgnOyAvLyBqdXN0IHNvIGl0IGRvZXNuJ3QgbG9vayBicm9rZW5cblx0XHRXaW5kb3cuc2V0Q29udGVudChzdGF0dXNkaXYpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KHN0YXR1c2Rpdik7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzID0ge307XG5cdFx0Y29uc3Qgc3RhdGVsZW0gPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5oqT5Y+W6aG16Z2i5YiX6KGoJywgJ+aKk+WPlumggemdouWIl+ihqCcpKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCmJywgJ+i8ieWFpeS4reKApicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2UnKS5maWx0ZXIoJzpub3QoW21pc3NpbmddKScpOyAvLyA6bm90KFtpbWFnZXJlcG9zaXRvcnk9XCJzaGFyZWRcIl0pXG5cdFx0XHRcdCRwYWdlcy5lYWNoKChfaW5kZXgsIHBhZ2UpID0+IHtcblx0XHRcdFx0XHRjb25zdCAkcGFnZSA9ICQocGFnZSk7XG5cdFx0XHRcdFx0Y29uc3QgbnMgPSAkcGFnZS5hdHRyKCducycpO1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJHBhZ2UuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCBpc1JlZGlyID0gJHBhZ2UuYXR0cigncmVkaXJlY3QnKSA9PT0gJyc7XG5cdFx0XHRcdFx0Y29uc3QgJGVkaXRwcm90ID0gJHBhZ2UuZmluZCgncHJbdHlwZT1cImVkaXRcIl1bbGV2ZWw9XCJzeXNvcFwiXScpO1xuXHRcdFx0XHRcdGNvbnN0IGlzUHJvdGVjdGVkID0gJGVkaXRwcm90Lmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0Y29uc3Qgc2l6ZSA9ICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3NpemUnKTtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IFtdO1xuXHRcdFx0XHRcdGlmIChpc1JlZGlyKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKHdpbmRvdy53Z1VMUygn6YeN5a6a5ZCRJywgJ+mHjeaWsOWwjuWQkScpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGlzUHJvdGVjdGVkKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFqOS/neaKpO+8jCcsICflhajkv53orbfvvIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0KCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiBgJHtuZXcgTW9yZWJpdHMuZGF0ZSgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykpLmNhbGVuZGFyKCd1dGMnKX0gKFVUQylgKSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChucyA9PT0gJzYnKSB7XG5cdFx0XHRcdFx0XHQvLyBtaW1pYyB3aGF0IGRlbGltYWdlcyB1c2VkIHRvIHNob3cgZm9yIGZpbGVzXG5cdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S4iuS8oOiAhe+8micsICfkuIrlgrPogIXvvJonKSArICRwYWdlLmZpbmQoJ2lpJykuYXR0cigndXNlcicpLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjue8lui+ke+8micsICfmnIDlvoznt6jovK/vvJonKSArICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXInKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKHNpemUpICsgd2luZG93LndnVUxTKCflrZfoioInLCAn5L2N5YWD57WEJykpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzW3RpdGxlXSA9IHtcblx0XHRcdFx0XHRcdGxhYmVsOiB0aXRsZSArIChtZXRhZGF0YS5sZW5ndGggPyBg77yIJHttZXRhZGF0YS5qb2luKCfvvIwnKX3vvIlgIDogJycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgZm9ybV8gPSBhcGlvYmoucGFyYW1zLmZvcm07XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b6F5Yig6Zmk6aG16Z2iJywgJ+W+heWIqumZpOmggemdoicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybV8uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajpgIknLCAn5YWo6YG4JyksXG5cdFx0XHRcdFx0ZXZlbnQ6ICgpID0+IHtcblx0XHRcdFx0XHRcdCQocmVzdWx0KVxuXHRcdFx0XHRcdFx0XHQuZmluZCgnaW5wdXRbbmFtZT1wYWdlc106bm90KDpjaGVja2VkKScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfLCBlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZS5jbGljaygpOyAvLyBjaGVjayBpdCwgYW5kIGludm9rZSBjbGljayBldmVudCBzbyB0aGF0IHN1Ymdyb3VwIGNhbiBiZSBzaG93blxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdC8vIENoZWNrIGFueSB1bmNoZWNrZWQgc3VicGFnZXMgdG9vXG5cdFx0XHRcdFx0XHQkYm9keS5maW5kKCdpbnB1dFtuYW1lPVwicGFnZXMuc3VicGFnZXNcIl0nKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo5LiN6YCJJywgJ+WFqOS4jemBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHQkKHJlc3VsdClcblx0XHRcdFx0XHRcdFx0LmZpbmQoJ2lucHV0W25hbWU9cGFnZXNdOmNoZWNrZWQnKVxuXHRcdFx0XHRcdFx0XHQuZWFjaCgoXywgZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGUuY2xpY2soKTsgLy8gdW5jaGVjayBpdCwgYW5kIGludm9rZSBjbGljayBldmVudCBzbyB0aGF0IHN1Ymdyb3VwIGNhbiBiZSBoaWRkZW5cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Zm9ybV8uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlcycsXG5cdFx0XHRcdFx0aWQ6ICd0dy1kYmF0Y2gtcGFnZXMnLFxuXHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdGxpc3Q6IE9iamVjdC52YWx1ZXMoVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcykubWFwKChlKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBmb3JtXy5yZW5kZXIoKTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5XaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICdwYWdlcycpKSB7XG5cdFx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHN0YXRlbGVtXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRjb25zdCBnZW5lcmF0ZUFycm93TGlua3MgPSAoY2hlY2tib3gpID0+IHtcblx0XHRjb25zdCBsaW5rID0gTW9yZWJpdHMuaHRtbE5vZGUoJ2EnLCAnID4nKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndHctZGJhdGNoLXBhZ2UtbGluaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgbXcudXRpbC5nZXRVcmwoY2hlY2tib3gudmFsdWUpKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdGNoZWNrYm94Lm5leHRFbGVtZW50U2libGluZy5hcHBlbmQobGluayk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdCA9IChmb3JtKSA9PiB7XG5cdFx0Ly8gVXBkYXRlIHRoZSBsaXN0IG9mIGNoZWNrZWQgcGFnZXMgaW4gVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcyBvYmplY3Rcblx0XHRjb25zdCBlbGVtZW50cyA9IGZvcm0uZWxlbWVudHMucGFnZXM7XG5cdFx0aWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHtcblx0XHRcdC8vIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBwYWdlc1xuXHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG5cdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXNbZWxlbWVudC52YWx1ZV0uY2hlY2tlZCA9IGVsZW1lbnQuY2hlY2tlZDtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuXHRcdFx0Ly8gaWYgdGhlcmUgaXMganVzdCBvbmUgcGFnZVxuXHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1tlbGVtZW50cy52YWx1ZV0uY2hlY2tlZCA9IGVsZW1lbnRzLmNoZWNrZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdG5hbWU6ICdwYWdlcycsXG5cdFx0XHRpZDogJ3R3LWRiYXRjaC1wYWdlcycsXG5cdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdGxpc3Q6IE9iamVjdC52YWx1ZXMoVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcykubWFwKChlKSA9PiB7XG5cdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0fSksXG5cdFx0fSkucmVuZGVyKCk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuZGVsZXRlcmVhc29ubGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fpgInmi6knLCAn6KuL6YG45pOHJyksXG5cdFx0XHR2YWx1ZTogJycsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnRzbvvJrljp/kvZzogIXmj5Dor7fliKDpmaTmiJbmuIXnqbrpobXpnaLvvIzkuJTpobXpnaLljp/kvZzogIXku4XmnInkuIDkuronLFxuXHRcdFx0XHQnRzbvvJrljp/kvZzogIXmj5Doq4vliKrpmaTmiJbmuIXnqbrpoIHpnaLvvIzkuJTpoIHpnaLljp/kvZzogIXlg4XmnInkuIDkuronXG5cdFx0XHQpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNTRCNHNnxHNl1d77ya5Y6f5L2c6ICF5o+Q6K+35Yig6Zmk5oiW5riF56m66aG16Z2i77yM5LiU6aG16Z2i5Y6f5L2c6ICF5LuF5pyJ5LiA5Lq6Jyxcblx0XHRcdFx0J1tbTElCOkNTRCNHNnxHNl1d77ya5Y6f5L2c6ICF5o+Q6KuL5Yiq6Zmk5oiW5riF56m66aCB6Z2i77yM5LiU6aCB6Z2i5Y6f5L2c6ICF5YOF5pyJ5LiA5Lq6J1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdHOe+8muWtpOeri+mhtemdou+8jOavlOWmguayoeacieS4u+mhtemdoueahOiuqOiuuumhteOAgeaMh+WQkeepuumhtemdoueahOmHjeWumuWQkeetiScsXG5cdFx0XHRcdCdHOe+8muWtpOeri+mggemdou+8jOavlOWmguaykuacieS4u+mggemdoueahOiojuirlumggeOAgeaMh+WQkeepuumggemdoueahOmHjeaWsOWwjuWQkeetiSdcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCdbW0xJQjpDU0QjRzl8RzldXe+8muWtpOeri+mhtemdoicsICdbW0xJQjpDU0QjRzl8RzldXe+8muWtpOeri+mggemdoicpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnUjHvvJrkuI3og73lj5HmjKXlrp7pmYXkvZznlKjnmoTph43lrprlkJHjgIInLCAnUjHvvJrkuI3og73nmbzmj67lr6bpmpvkvZznlKjnmoTph43lrprlkJHjgIInKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW0xJQjpDU0QjUjF8UjFdXe+8muS4jeiDveWPkeaMpeWunumZheS9nOeUqOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdbW0xJQjpDU0QjUjF8UjFdXe+8muS4jeiDveeZvOaPruWvpumam+S9nOeUqOeahOmHjeWumuWQkeOAgidcblx0XHRcdCksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnUjLvvJrlkI3np7DkuI7lr7zlkJHnm67moIfku6PooajkuovniankuI3kuIDoh7TmiJbkuI3lrozlhajkuIDoh7TnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHQnUjLvvJrlkI3nqLHoiIflsI7lkJHnm67mqJnku6PooajkuovniankuI3kuIDoh7TmiJbkuI3lrozlhajkuIDoh7TnmoTph43lrprlkJHjgIInXG5cdFx0XHQpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNTRCNSMnxSMl1d77ya5ZCN56ew5LiO5a+85ZCR55uu5qCH5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJyxcblx0XHRcdFx0J1tbTElCOkNTRCNSMnxSMl1d77ya5ZCN56ix6IiH5bCO5ZCR55uu5qiZ5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5paH5Lu2JywgJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5qqU5qGIJyksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tMSUI6Q1NEI0Y0fEY0XV3vvJrlj6/ooqvmm7/ku6PnmoTlkIjnkIbkvb/nlKjmlofku7YnLFxuXHRcdFx0XHQnW1tMSUI6Q1NEI0Y0fEY0XV3vvJrlj6/ooqvmm7/ku6PnmoTlkIjnkIbkvb/nlKjmqpTmoYgnXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J0Y177ya5rKh5pyJ6KKr5p2h55uu5L2/55So55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu244CB5rKh5pyJ5aGr5YaZ5Lu75L2V5ZCI55CG5L2/55So5L6d5o2u55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu2Jyxcblx0XHRcdFx0J0Y177ya5rKS5pyJ6KKr5qKd55uu5L2/55So55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGI44CB5rKS5pyJ5aGr5a+r5Lu75L2V5ZCI55CG5L2/55So5L6d5pOa55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGIJ1xuXHRcdFx0KSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW0xJQjpDU0QjRjV8RjVdXe+8muayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tuOAgeayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7ticsXG5cdFx0XHRcdCdbW0xJQjpDU0QjRjV8RjVdXe+8muaykuacieiiq+aineebruS9v+eUqOeahOmdnuiHqueUseeJiOasiuaqlOahiOOAgeaykuacieWhq+Wvq+S7u+S9leWQiOeQhuS9v+eUqOS+neaTmueahOmdnuiHqueUseeJiOasiuaqlOahiCdcblx0XHRcdCksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnTzHvvJrnlKjmiLfor7fmsYLliKDpmaToh6rlt7HnmoTnlKjmiLfpobXmiJblhbblrZDpobXpnaInLFxuXHRcdFx0XHQnTzHvvJrkvb/nlKjogIXoq4vmsYLliKrpmaToh6rlt7HnmoTkvb/nlKjogIXpoIHpnaLmiJblhbblrZDpoIHpnaInXG5cdFx0XHQpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNTRCNPMXxPMV1d77ya55So5oi36K+35rGC5Yig6Zmk6Ieq5bex55qEW1tIZWxwOueUqOaIt+mhtXznlKjmiLfpobVdXeaIluWFtuWtkOmhtemdouOAgicsXG5cdFx0XHRcdCdbW0xJQjpDU0QjTzF8TzFdXe+8muS9v+eUqOiAheiri+axguWIqumZpOiHquW3seeahFtbSGVscDrnlKjmiLfpobV85L2/55So6ICF6aCB6Z2iXV3miJblhbblrZDpoIHpnaLjgIInXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnTzLvvJrnqbrnmoTliIbnsbvvvIjmsqHmnInmnaHnm67kuZ/msqHmnInlrZDliIbnsbvvvIknLCAnTzLvvJrnqbrnmoTliIbpoZ7vvIjmspLmnInmop3nm67kuZ/mspLmnInlrZDliIbpoZ7vvIknKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW0xJQjpDU0QjTzJ8TzJdXe+8muepuueahOWIhuexu++8iOayoeacieadoeebruS5n+ayoeacieWtkOWIhuexu++8ieOAgicsXG5cdFx0XHRcdCdbW0xJQjpDU0QjTzJ8TzJdXe+8muepuueahOWIhumhnu+8iOaykuacieaineebruS5n+aykuacieWtkOWIhumhnu+8ieOAgidcblx0XHRcdCksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCdPM++8muW6n+W8g+iNieeovycsICdPM++8muW7ouajhOiNieeovycpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygnW1tMSUI6Q1NEI08zfE8zXV3vvJrlup/lvIPojYnnqL/jgIInLCAnW1tMSUI6Q1NEI08zfE8zXV3vvJrlu6Lmo4TojYnnqL/jgIInKSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrLmNoYW5nZV9jb21tb25fcmVhc29uID0gKGUpID0+IHtcblx0XHRpZiAoZS50YXJnZXQuZm9ybS5yZWFzb24udmFsdWUgIT09ICcnKSB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnJlYXNvbi52YWx1ZSA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihlLnRhcmdldC5mb3JtLnJlYXNvbi52YWx1ZSk7XG5cdFx0fVxuXHRcdGUudGFyZ2V0LmZvcm0ucmVhc29uLnZhbHVlICs9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdGUudGFyZ2V0LnZhbHVlID0gJyc7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2sudG9nZ2xlU3VicGFnZXMgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGxldCBuZXdQYWdlTGlzdDtcblx0XHRpZiAoZS50YXJnZXQuY2hlY2tlZCkge1xuXHRcdFx0Zm9ybS5kZWxldGVfc3VicGFnZV9yZWRpcmVjdHMuY2hlY2tlZCA9IGZvcm0uZGVsZXRlX3JlZGlyZWN0cy5jaGVja2VkO1xuXHRcdFx0Zm9ybS5kZWxldGVfc3VicGFnZV90YWxrcy5jaGVja2VkID0gZm9ybS5kZWxldGVfdGFsay5jaGVja2VkO1xuXHRcdFx0Zm9ybS51bmxpbmtfc3VicGFnZXMuY2hlY2tlZCA9IGZvcm0udW5saW5rX3BhZ2UuY2hlY2tlZDtcblx0XHRcdC8vIElmIGxpc3RzIG9mIHN1YnBhZ2VzIHdlcmUgYWxyZWFkeSBsb2FkZWQgb25jZSwgdGhleSBhcmVcblx0XHRcdC8vIGF2YWlsYWJsZSB3aXRob3V0IHVzZSBvZiBhbnkgQVBJIGNhbGxzXG5cdFx0XHRpZiAoc3VicGFnZXNMb2FkZWQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBlbCBvZiBUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IGJhY2sgdGhlIHN1Ymdyb3VwIGZyb20gc3ViZ3JvdXBfLCB3aGVyZSB3ZSBzYXZlZCBpdFxuXHRcdFx0XHRcdGlmIChlbC5zdWJncm91cCA9PT0gbnVsbCAmJiBlbC5zdWJncm91cF8pIHtcblx0XHRcdFx0XHRcdGVsLnN1Ymdyb3VwID0gZWwuc3ViZ3JvdXBfO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRuZXdQYWdlTGlzdCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdChmb3JtKTtcblx0XHRcdFx0JGJvZHkuZmluZCgnI3R3LWRiYXRjaC1wYWdlcycpLnJlcGxhY2VXaXRoKG5ld1BhZ2VMaXN0KTtcblx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMobmV3UGFnZUxpc3QsICdwYWdlcycpKSB7XG5cdFx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzLnN1YnBhZ2VzJykpIHtcblx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIFByb2NlZWQgd2l0aCBBUEkgY2FsbHMgdG8gZ2V0IGxpc3Qgb2Ygc3VicGFnZXNcblx0XHRcdGNvbnN0IGxvYWRpbmdUZXh0ID0gYDxzdHJvbmcgaWQ9XCJkYmF0Y2gtc3VicGFnZS1sb2FkaW5nXCI+JHt3aW5kb3cud2dVTFMoJ+WKoOi9veS4rS4uLicsICfovInlhaXkuK0uLi4nKX08L3N0cm9uZz5gO1xuXHRcdFx0JChlLnRhcmdldCkuYWZ0ZXIobG9hZGluZ1RleHQpO1xuXHRcdFx0Y29uc3QgcGFnZXMgPSAkKGZvcm0ucGFnZXMpXG5cdFx0XHRcdC5tYXAoKF9pLCBlbCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBlbC52YWx1ZTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmdldCgpO1xuXHRcdFx0Y29uc3Qgc3VicGFnZUxpc3RlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbigpO1xuXHRcdFx0c3VicGFnZUxpc3Rlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHRzdWJwYWdlTGlzdGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHN1YnBhZ2VMaXN0ZXIucnVuKFxuXHRcdFx0XHQocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBwYWdlVGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYWdlTmFtZSk7XG5cdFx0XHRcdFx0Ly8gTm8gbmVlZCB0byBsb29rIGZvciBzdWJwYWdlcyBpbiBtYWluL2ZpbGUvbWVkaWF3aWtpIHNwYWNlXG5cdFx0XHRcdFx0aWYgKFswLCA2LCA4XS5pbmNsdWRlcyhwYWdlVGl0bGUubmFtZXNwYWNlKSkge1xuXHRcdFx0XHRcdFx0c3VicGFnZUxpc3Rlci53b3JrZXJTdWNjZXNzKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjojrflj5YgJywgJ+ato+WcqOWPluW+lyAnKSArIHBhZ2VOYW1lICsgd2luZG93LndnVUxTKCcg55qE5a2Q6aG16Z2iJywgJyDnmoTlrZDpoIHpnaInKSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdFx0XHRcdFx0Z2VuZXJhdG9yOiAnYWxscGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRydnByb3A6ICdzaXplJyxcblx0XHRcdFx0XHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbicsXG5cdFx0XHRcdFx0XHRcdGdhcHByZWZpeDogYCR7cGFnZVRpdGxlLnRpdGxlfS9gLFxuXHRcdFx0XHRcdFx0XHRnYXBuYW1lc3BhY2U6IHBhZ2VUaXRsZS5uYW1lc3BhY2UsXG5cdFx0XHRcdFx0XHRcdGdhcGxpbWl0OiAnbWF4Jyxcblx0XHRcdFx0XHRcdFx0cGFnZU5hbWVGdWxsOiBwYWdlTmFtZSwgLy8gTm90IHVzZWQgYnkgQVBJLCBidXQgYWRkZWQgZm9yIGFjY2VzcyBpbiBvblN1Y2Nlc3MoKVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLnJlc3BvbnNlWE1MO1xuXHRcdFx0XHRcdFx0XHRjb25zdCAkcGFnZXMgPSAkKHhtbCkuZmluZCgncGFnZScpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdWJwYWdlTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHQkcGFnZXMuZWFjaCgoX2luZGV4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgJHBhZ2UgPSAkKHBhZ2UpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5zID0gJHBhZ2UuYXR0cignbnMnKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aXRsZSA9ICRwYWdlLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNSZWRpciA9ICRwYWdlLmF0dHIoJ3JlZGlyZWN0JykgPT09ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0ICRlZGl0cHJvdCA9ICRwYWdlLmZpbmQoJ3ByW3R5cGU9XCJlZGl0XCJdW2xldmVsPVwic3lzb3BcIl0nKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBpc1Byb3RlY3RlZCA9ICRlZGl0cHJvdC5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNpemUgPSAkcGFnZS5maW5kKCdyZXYnKS5hdHRyKCdzaXplJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbWV0YWRhdGEgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNSZWRpcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaCgncmVkaXJlY3QnKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGlzUHJvdGVjdGVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFqOS/neaKpO+8jCcsICflhajkv53orbfvvIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBgJHtuZXcgTW9yZWJpdHMuZGF0ZSgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykpLmNhbGVuZGFyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1dGMnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9IChVVEMpYCkgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+H5pyfJywgJ+mBjuacnycpXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAobnMgPT09ICc2Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gbWltaWMgd2hhdCBkZWxpbWFnZXMgdXNlZCB0byBzaG93IGZvciBmaWxlc1xuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuIrkvKDogIXvvJonLCAn5LiK5YKz6ICF77yaJykgKyAkcGFnZS5maW5kKCdpaScpLmF0dHIoJ3VzZXInKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnIDlkI7nvJbovpHvvJonLCAn5pyA5b6M57eo6Lyv77yaJykgKyAkcGFnZS5maW5kKCdyZXYnKS5hdHRyKCd1c2VyJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhLnB1c2gobXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihzaXplKSArIHdpbmRvdy53Z1VMUygn5a2X6IqCJywgJ+S9jeWFg+e1hCcpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0c3VicGFnZUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogdGl0bGUgKyAobWV0YWRhdGEubGVuZ3RoID8gYCAoJHttZXRhZGF0YS5qb2luKCc7ICcpfSlgIDogJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGlmIChzdWJwYWdlTGlzdC5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBwYWdlTmFtZV8gPSBhcGlvYmoucXVlcnkucGFnZU5hbWVGdWxsO1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXNbcGFnZU5hbWVfXS5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnZGJhdGNoLXN1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdDogc3VicGFnZUxpc3QsXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRzdWJwYWdlTGlzdGVyLndvcmtlclN1Y2Nlc3MoKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRudWxsIC8qIHN0YXR1c0VsZW1lbnQgKi8sXG5cdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHN1YnBhZ2VMaXN0ZXIud29ya2VyRmFpbHVyZSgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gTGlzdCAnZW0gb24gdGhlIGludGVyZmFjZVxuXHRcdFx0XHRcdG5ld1BhZ2VMaXN0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0KGZvcm0pO1xuXHRcdFx0XHRcdCRib2R5LmZpbmQoJyN0dy1kYmF0Y2gtcGFnZXMnKS5yZXBsYWNlV2l0aChuZXdQYWdlTGlzdCk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMobmV3UGFnZUxpc3QsICdwYWdlcycpKSB7XG5cdFx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzLnN1YnBhZ2VzJykpIHtcblx0XHRcdFx0XHRcdGdlbmVyYXRlQXJyb3dMaW5rcyhjaGVja2JveCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN1YnBhZ2VzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHQvLyBSZW1vdmUgXCJMb2FkaW5nLi4uIFwiIHRleHRcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjZGJhdGNoLXN1YnBhZ2UtbG9hZGluZycpLnJlbW92ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdGZvciAoY29uc3QgZWwgb2YgVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcykge1xuXHRcdFx0XHRpZiAoZWwuc3ViZ3JvdXApIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgc3ViZ3JvdXAgYWZ0ZXIgc2F2aW5nIGl0cyBjb250ZW50cyBpbiBzdWJncm91cF9cblx0XHRcdFx0XHQvLyBzbyB0aGF0IGl0IGNhbiBiZSByZXRyaWV2ZWQgZWFzaWx5IGlmIHVzZXIgZGVjaWRlcyB0b1xuXHRcdFx0XHRcdC8vIGRlbGV0ZSB0aGUgc3VicGFnZXMgYWdhaW5cblx0XHRcdFx0XHRlbC5zdWJncm91cF8gPSBlbC5zdWJncm91cDtcblx0XHRcdFx0XHRlbC5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG5ld1BhZ2VMaXN0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0KGZvcm0pO1xuXHRcdFx0JGJvZHkuZmluZCgnI3R3LWRiYXRjaC1wYWdlcycpLnJlcGxhY2VXaXRoKG5ld1BhZ2VMaXN0KTtcblx0XHRcdGZvciAoY29uc3QgY2hlY2tib3ggb2YgTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKG5ld1BhZ2VMaXN0LCAncGFnZXMnKSkge1xuXHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5om56YeP5Yig6Zmk5bey5a6M5oiQJywgJ+aJueasoeWIqumZpOW3suWujOaIkCcpO1xuXHRcdGNvbnN0IGZvcm0gPSBldmVudC50YXJnZXQ7XG5cdFx0Y29uc3QgbnVtUHJvdGVjdGVkID0gJChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ3BhZ2VzJykpLmZpbHRlcigoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRyZXR1cm4gZWxlbWVudC5jaGVja2VkICYmIGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmNvbG9yID09PSAncmVkJztcblx0XHR9KS5sZW5ndGg7XG5cdFx0aWYgKFxuXHRcdFx0bnVtUHJvdGVjdGVkID4gMCAmJlxuXHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5q2j6KaB5Yig6ZmkICcsICfmgqjmraPopoHliKrpmaQgJykgK1xuXHRcdFx0XHRcdG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIobnVtUHJvdGVjdGVkKSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5Liq5YWo5L+d5oqk6aG16Z2i77yM5oKo56Gu5a6a5ZCX77yfJywgJyDlgIvlhajkv53orbfpoIHpnaLvvIzmgqjnorrlrprll47vvJ8nKVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlcyA9IGZvcm0uZ2V0Q2hlY2tlZCgncGFnZXMnKTtcblx0XHRjb25zdCBzdWJwYWdlcyA9IGZvcm0uZ2V0Q2hlY2tlZCgncGFnZXMuc3VicGFnZXMnKTtcblx0XHRjb25zdCByZWFzb24gPSBmb3JtLnJlYXNvbi52YWx1ZTtcblx0XHRjb25zdCBkZWxldGVfcGFnZSA9IGZvcm0uZGVsZXRlX3BhZ2UuY2hlY2tlZDtcblx0XHRsZXQgZGVsZXRlX3RhbGs7XG5cdFx0bGV0IGRlbGV0ZV9yZWRpcmVjdHM7XG5cdFx0bGV0IGRlbGV0ZV9zdWJwYWdlcztcblx0XHRsZXQgZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzO1xuXHRcdGxldCBkZWxldGVfc3VicGFnZV90YWxrcztcblx0XHRsZXQgdW5saW5rX3N1YnBhZ2VzO1xuXHRcdGlmIChkZWxldGVfcGFnZSkge1xuXHRcdFx0ZGVsZXRlX3RhbGsgPSBmb3JtLmRlbGV0ZV90YWxrLmNoZWNrZWQ7XG5cdFx0XHRkZWxldGVfcmVkaXJlY3RzID0gZm9ybS5kZWxldGVfcmVkaXJlY3RzLmNoZWNrZWQ7XG5cdFx0XHRkZWxldGVfc3VicGFnZXMgPSBmb3JtLmRlbGV0ZV9zdWJwYWdlcy5jaGVja2VkO1xuXHRcdFx0aWYgKGRlbGV0ZV9zdWJwYWdlcykge1xuXHRcdFx0XHRkZWxldGVfc3VicGFnZV9yZWRpcmVjdHMgPSBmb3JtLmRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cy5jaGVja2VkO1xuXHRcdFx0XHRkZWxldGVfc3VicGFnZV90YWxrcyA9IGZvcm0uZGVsZXRlX3N1YnBhZ2VfdGFsa3MuY2hlY2tlZDtcblx0XHRcdFx0dW5saW5rX3N1YnBhZ2VzID0gZm9ybS51bmxpbmtfc3VicGFnZXMuY2hlY2tlZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgdW5saW5rX3BhZ2UgPSBmb3JtLnVubGlua19wYWdlLmNoZWNrZWQ7XG5cdFx0Y29uc3QgdW5saW5rX2ZpbGUgPSBmb3JtLnVubGlua19maWxlLmNoZWNrZWQ7XG5cdFx0aWYgKCFyZWFzb24pIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOmcgOimgee7meWHuuS4gOS4queQhueUsScsICfmgqjpnIDopoHntablh7rkuIDlgIvnkIbnlLEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGViYXRjaGRlbGV0ZScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRpZiAoIXBhZ2VzKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeacieimgeWIoOmZpOeahOWGheWuue+8jOS4reatoicsICfmspLmnInopoHliKrpmaTnmoTlhaflrrnvvIzkuK3mraInKVxuXHRcdFx0KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZURlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRkZWxldGVfcGFnZVxuXHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iJywgJ+ato+WcqOWIqumZpOmggemdoicpXG5cdFx0XHRcdDogd2luZG93LndnVUxTKCfmraPlnKjlkK/liqjopoHmsYLnmoTku7vliqEnLCAn5q2j5Zyo5ZWf5YuV6KaB5rGC55qE5Lu75YuZJylcblx0XHQpO1xuXHRcdHBhZ2VEZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHQvLyB3ZSBvbmx5IG5lZWQgdGhlIGluaXRpYWwgc3RhdHVzIGxpbmVzIGlmIHdlJ3JlIGRlbGV0aW5nIHRoZSBwYWdlcyBpbiB0aGUgcGFnZXMgYXJyYXlcblx0XHRwYWdlRGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgZGVsZXRlX3BhZ2UpO1xuXHRcdHBhZ2VEZWxldGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRwYWdlRGVsZXRlci5ydW4oXG5cdFx0XHQocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdHBhZ2U6IHBhZ2VOYW1lLFxuXHRcdFx0XHRcdGRlbGV0ZV9wYWdlLFxuXHRcdFx0XHRcdGRlbGV0ZV90YWxrLFxuXHRcdFx0XHRcdGRlbGV0ZV9yZWRpcmVjdHMsXG5cdFx0XHRcdFx0dW5saW5rX3BhZ2UsXG5cdFx0XHRcdFx0dW5saW5rX2ZpbGU6IHVubGlua19maWxlICYmIG5ldyBSZWdFeHAoYF4ke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpgLCAnaScpLnRlc3QocGFnZU5hbWUpLFxuXHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHRwYWdlRGVsZXRlcixcblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOmhtemdoiAnLCAn5q2j5Zyo5Yiq6Zmk6aCB6Z2iICcpICsgcGFnZU5hbWVcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRpZiAoZGVsZXRlX3BhZ2UpIHtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufe+8iOaJuemHj++8iWApO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnN1cHByZXNzUHJvdGVjdFdhcm5pbmcoKTtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UuZGVsZXRlUGFnZShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kb0V4dHJhcywgcGFnZURlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMoeXNhcmNoaXZlc19wYWdlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0aWYgKGRlbGV0ZV9zdWJwYWdlcykge1xuXHRcdFx0XHRcdGNvbnN0IHN1YnBhZ2VEZWxldGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjliKDpmaTlrZDpobXpnaInLCAn5q2j5Zyo5Yiq6Zmk5a2Q6aCB6Z2iJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHN1YnBhZ2VEZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdFx0XHRzdWJwYWdlRGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgdHJ1ZSk7XG5cdFx0XHRcdFx0c3VicGFnZURlbGV0ZXIuc2V0UGFnZUxpc3Qoc3VicGFnZXMpO1xuXHRcdFx0XHRcdHN1YnBhZ2VEZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0XHRcdFx0cGFnZTogcGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZV9wYWdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRkZWxldGVfdGFsazogZGVsZXRlX3N1YnBhZ2VfdGFsa3MsXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZV9yZWRpcmVjdHM6IGRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cyxcblx0XHRcdFx0XHRcdFx0dW5saW5rX3BhZ2U6IHVubGlua19zdWJwYWdlcyxcblx0XHRcdFx0XHRcdFx0dW5saW5rX2ZpbGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRyZWFzb24sXG5cdFx0XHRcdFx0XHRcdHBhZ2VEZWxldGVyOiBzdWJwYWdlRGVsZXRlcixcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjliKDpmaTlrZDpobXpnaIgJywgJ+ato+WcqOWIqumZpOWtkOmggemdoiAnKSArIHBhZ2VOYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEVkaXRTdW1tYXJ5KGAke3JlYXNvbn3vvIjmibnph4/vvIlgKTtcblx0XHRcdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc3VwcHJlc3NQcm90ZWN0V2FybmluZygpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmRlbGV0ZVBhZ2UoVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMsIHBhZ2VEZWxldGVyLndvcmtlckZhaWx1cmUpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MgPSB7XG5cdFx0Ly8gdGhpcyBzdHVwaWQgcGFyYW1ldGVyIG5hbWUgaXMgYSB0ZW1wb3JhcnkgdGhpbmcgdW50aWwgSSBpbXBsZW1lbnQgYW4gb3ZlcmhhdWxcblx0XHQvLyBvZiBNb3JlYml0cy53aWtpLiogY2FsbGJhY2sgcGFyYW1ldGVyc1xuXHRcdGRvRXh0cmFzOiAodGhpbmdXaXRoUGFyYW1ldGVycykgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gdGhpbmdXaXRoUGFyYW1ldGVycy5wYXJlbnRcblx0XHRcdFx0PyB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudC5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKVxuXHRcdFx0XHQ6IHRoaW5nV2l0aFBhcmFtZXRlcnMuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyB0aGUgaW5pdGlhbCBiYXRjaCBvcGVyYXRpb24ncyBqb2IgaXMgdG8gZGVsZXRlIHRoZSBwYWdlLCBhbmQgdGhhdCBoYXNcblx0XHRcdC8vIHN1Y2NlZWRlZCBieSBub3dcblx0XHRcdHBhcmFtcy5wYWdlRGVsZXRlci53b3JrZXJTdWNjZXNzKHRoaW5nV2l0aFBhcmFtZXRlcnMpO1xuXHRcdFx0bGV0IHF1ZXJ5O1xuXHRcdFx0bGV0IHlzYXJjaGl2ZXNfYXBpO1xuXHRcdFx0aWYgKHBhcmFtcy51bmxpbmtfcGFnZSkge1xuXHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlID0ge307XG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRsaXN0OiAnYmFja2xpbmtzJyxcblx0XHRcdFx0XHRibGZpbHRlcnJlZGlyOiAnbm9ucmVkaXJlY3RzJyxcblx0XHRcdFx0XHRibG5hbWVzcGFjZTogWzBdLFxuXHRcdFx0XHRcdGJsdGl0bGU6IHBhcmFtcy5wYWdlLFxuXHRcdFx0XHRcdGJsbGltaXQ6ICdtYXgnLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6ZO+5YWlJywgJ+ato+WcqOWPluW+l+mAo+WFpScpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLnVubGlua0JhY2tsaW5rc01haW5cblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLnVubGlua19maWxlKSB7XG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRsaXN0OiAnaW1hZ2V1c2FnZScsXG5cdFx0XHRcdFx0aXV0aXRsZTogcGFyYW1zLnBhZ2UsXG5cdFx0XHRcdFx0aXVsaW1pdDogJ21heCcsIC8vIDUwMCBpcyBtYXggZm9yIG5vcm1hbCB1c2VycywgNTAwMCBmb3IgYm90cyBhbmQgc3lzb3BzXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0eXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjojrflj5bmlofku7bpk77lhaUnLCAn5q2j5Zyo5Y+W5b6X5qqU5qGI6YCj5YWlJyksXG5cdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MudW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5kZWxldGVfcGFnZSkge1xuXHRcdFx0XHRpZiAocGFyYW1zLmRlbGV0ZV9yZWRpcmVjdHMpIHtcblx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHRpdGxlczogcGFyYW1zLnBhZ2UsXG5cdFx0XHRcdFx0XHRwcm9wOiAncmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdHJkbGltaXQ6ICdtYXgnLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6YeN5a6a5ZCRJywgJ+ato+WcqOWPluW+l+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kZWxldGVSZWRpcmVjdHNNYWluXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMuZGVsZXRlX3RhbGspIHtcblx0XHRcdFx0XHRjb25zdCBwYWdlVGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYXJhbXMucGFnZSk7XG5cdFx0XHRcdFx0aWYgKHBhZ2VUaXRsZSAmJiBwYWdlVGl0bGUubmFtZXNwYWNlICUgMiA9PT0gMCAmJiBwYWdlVGl0bGUubmFtZXNwYWNlICE9PSAyKSB7XG5cdFx0XHRcdFx0XHRwYWdlVGl0bGUubmFtZXNwYWNlKys7IC8vIG5vdyBwYWdlVGl0bGUgaXMgdGhlIHRhbGsgcGFnZSB0aXRsZSFcblx0XHRcdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRcdHRpdGxlczogcGFnZVRpdGxlLnRvVGV4dCgpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOajgOafpeiuqOiuuumhtemdouaYr+WQpuWtmOWcqCcsICfmraPlnKjmqqLmn6XoqI7oq5bpoIHpnaLmmK/lkKblrZjlnKgnKSxcblx0XHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLmRlbGV0ZVRhbGtcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMudGFsa1BhZ2UgPSBwYWdlVGl0bGUudG9UZXh0KCk7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkZWxldGVSZWRpcmVjdHNNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgncmQnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWRpcmVjdERlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk5YiwICcsICfmraPlnKjliKrpmaTliLAgJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6YeN5a6a5ZCRJywgJyDnmoTph43mlrDlsI7lkJEnKVxuXHRcdFx0KTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpCAnLCAn5q2j5Zyo5Yiq6ZmkICcpICsgcGFnZU5hbWVcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdGBbW0xJQjpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+aMh+WQkeW3suWIoOmhtemdouKAnCcsICfmjIflkJHlt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfigJ3nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0J+OAjeeahOmHjeaWsOWwjuWQkSdcblx0XHRcdFx0XHQpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmRlbGV0ZVBhZ2UocmVkaXJlY3REZWxldGVyLndvcmtlclN1Y2Nlc3MsIHJlZGlyZWN0RGVsZXRlci53b3JrZXJGYWlsdXJlKTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0ZGVsZXRlVGFsazogKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLnJlc3BvbnNlWE1MO1xuXHRcdFx0Y29uc3QgZXhpc3RzID0gJCh4bWwpLmZpbmQoJ3BhZ2U6bm90KFttaXNzaW5nXSknKS5sZW5ndGggPiAwO1xuXHRcdFx0aWYgKCFleGlzdHMpIHtcblx0XHRcdFx0Ly8gbm8gdGFsayBwYWdlOyBmb3JnZXQgYWJvdXQgaXRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdGFwaW9iai5wYXJhbXMudGFsa1BhZ2UsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iICcsICfmraPlnKjliKrpmaTpoIHpnaIgJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6K6o6K666aG1JywgJyDnmoToqI7oq5bpoIEnKVxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdGBbW0xJQjpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+W3suWIoOmhtemdouKAnCcsICflt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn4oCd55qEW1tIZWxwOuiuqOiuuumhtXzorqjorrrpobVdXScsXG5cdFx0XHRcdFx0J+OAjeeahFtbSGVscDroqI7oq5bpoIF86KiO6KuW6aCBXV0nXG5cdFx0XHRcdCl9YFxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS5kZWxldGVQYWdlKCk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3NNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgnYmwnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdFx0YOato+WcqOWPlua2iOWIsCAke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOmTvuWFpScsICcg55qE6YCj5YWlJyl9YFxuXHRcdFx0KTtcblx0XHRcdHVubGlua2VyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHVubGlua2VyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRg5q2j5Zyo5Y+W5raIICR7cGFnZU5hbWV9JHt3aW5kb3cud2dVTFMoJyDkuIrnmoTpk77lhaUnLCAnIOS4iueahOmAo+WFpScpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdC4uLmFwaW9iai5wYXJhbXMsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHBhcmFtcy50aXRsZSA9IHBhZ2VOYW1lO1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIgPSB1bmxpbmtlcjtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy51bmxpbmtCYWNrbGlua3MpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdC8vIHdlIHByb2JhYmx5IGp1c3QgZGVsZXRlZCBpdCwgYXMgYSByZWN1cnNpdmUgYmFja2xpbmtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCB0ZXh0O1xuXHRcdFx0aWYgKHBhcmFtcy50aXRsZSBpbiBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlKSB7XG5cdFx0XHRcdHRleHQgPSBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlW3BhcmFtcy50aXRsZV07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb2xkX3RleHQgPSB0ZXh0O1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UodGV4dCk7XG5cdFx0XHR0ZXh0ID0geXNhcmNoaXZlc19wYWdlLnJlbW92ZUxpbmsocGFyYW1zLnBhZ2UpLmdldFRleHQoKTtcblx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGVbcGFyYW1zLnRpdGxlXSA9IHRleHQ7XG5cdFx0XHRpZiAodGV4dCA9PT0gb2xkX3RleHQpIHtcblx0XHRcdFx0Ly8gTm90aGluZyB0byBkbywgcmV0dXJuXG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJTdWNjZXNzKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOWIsOW3suWIoOmhtemdoicsICflj5bmtojliLDlt7LliKrpoIHpnaInKSArIHBhcmFtcy5wYWdlICsgd2luZG93LndnVUxTKCfnmoTpk77lhaUnLCAn55qE6YCj5YWlJylcblx0XHRcdCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2V0TWF4Q29uZmxpY3RSZXRyaWVzKDEwKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcywgcGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUpO1xuXHRcdH0sXG5cdFx0dW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgnaXUnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdFx0YOato+WcqOWPlua2iOWIsCAke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOmTvuWFpScsICcg55qE6YCj5YWlJyl9YFxuXHRcdFx0KTtcblx0XHRcdHVubGlua2VyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHVubGlua2VyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRg5Y+W5raIICR7cGFnZU5hbWV9JHt3aW5kb3cud2dVTFMoJyDnmoTmlofku7bkvb/nlKgnLCAnIOeahOaqlOahiOS9v+eUqCcpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdC4uLmFwaW9iai5wYXJhbXMsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHBhcmFtcy50aXRsZSA9IHBhZ2VOYW1lO1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIgPSB1bmxpbmtlcjtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy51bmxpbmtJbWFnZUluc3RhbmNlcyk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHVubGlua0ltYWdlSW5zdGFuY2VzOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGlmICghcGFnZW9iai5leGlzdHMoKSkge1xuXHRcdFx0XHQvLyB3ZSBwcm9iYWJseSBqdXN0IGRlbGV0ZWQgaXQsIGFzIGEgcmVjdXJzaXZlIGJhY2tsaW5rXG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJTdWNjZXNzKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbWFnZSA9IHBhcmFtcy5wYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OmApLCAnJyk7XG5cdFx0XHRsZXQgdGV4dDtcblx0XHRcdGlmIChwYXJhbXMudGl0bGUgaW4gVHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZSkge1xuXHRcdFx0XHR0ZXh0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZVtwYXJhbXMudGl0bGVdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG9sZF90ZXh0ID0gdGV4dDtcblx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0dGV4dCA9IHlzYXJjaGl2ZXNfcGFnZVxuXHRcdFx0XHQuY29tbWVudE91dEltYWdlKGltYWdlLCB3aW5kb3cud2dVTFMoJ+WboOaWh+S7tuW3suWIoO+8jOaVheazqOinoycsICflm6DmqpTmoYjlt7LliKrvvIzmlYXoqLvop6MnKSlcblx0XHRcdFx0LmdldFRleHQoKTtcblx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGVbcGFyYW1zLnRpdGxlXSA9IHRleHQ7XG5cdFx0XHRpZiAodGV4dCA9PT0gb2xkX3RleHQpIHtcblx0XHRcdFx0cGFnZW9ialxuXHRcdFx0XHRcdC5nZXRTdGF0dXNFbGVtZW50KClcblx0XHRcdFx0XHQuZXJyb3IoXG5cdFx0XHRcdFx0XHRg5ZyoICR7cGFnZW9iai5nZXRQYWdlTmFtZSgpfSDkuIrlj5bmtoggJHtpbWFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOaWh+S7tuS9v+eUqOWksei0pScsICcg55qE5qqU5qGI5L2/55So5aSx5pWXJyl9YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOS9v+eUqOW3suiiq+WIoOmZpOaWh+S7ticsICflj5bmtojkvb/nlKjlt7LooqvliKrpmaTmqpTmoYgnKSArXG5cdFx0XHRcdFx0aW1hZ2UgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn77yM5Zug5Li677yaJywgJ++8jOWboOeCuu+8micpICtcblx0XHRcdFx0XHRwYXJhbXMucmVhc29uXG5cdFx0XHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNldE1heENvbmZsaWN0UmV0cmllcygxMCk7XG5cdFx0XHRwYWdlb2JqLnNhdmUocGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MsIHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmJhdGNoZGVsZXRlLCAnYmF0Y2hkZWxldGUnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmF0Y2h1bmRlbGV0ZS5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGViYXRjaHVuZGVsZXRlKCQpIHtcblx0LyoqXG5cdCAqIHR3aW5rbGViYXRjaHVuZGVsZXRlLmpzOiBCYXRjaCB1bmRlbGV0ZSBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiVW5kLWJhdGNoXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcgdXNlciBhbmQgcHJvamVjdCBwYWdlc1xuXHQgKi9cblx0VHdpbmtsZS5iYXRjaHVuZGVsZXRlID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdCFNb3JlYml0cy51c2VySXNTeXNvcCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnVzZXIgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSAhPT0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKS5wcm9qZWN0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS5iYXRjaHVuZGVsZXRlLmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfmibnlpI0nLCAn5om55b6pJyksXG5cdFx0XHQndHctYmF0Y2gtdW5kZWwnLFxuXHRcdFx0d2luZG93LndnVUxTKCflj43liKDpmaTpobXpnaInLCAn5Y+N5Yiq6Zmk6aCB6Z2iJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQwMCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmibnph4/lj43liKDpmaQnLCAn5om55qyh5Y+N5Yiq6ZmkJykpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyNiYXRjaHVuZGVsZXRlJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5iYXRjaHVuZGVsZXRlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Iul5a2Y5Zyo5bey5Yig6Zmk55qE6K6o6K666aG177yM5Lmf5oGi5aSNJywgJ+iLpeWtmOWcqOW3suWIqumZpOeahOiojuirlumgge+8jOS5n+aBouW+qScpLFxuXHRcdFx0XHRcdG5hbWU6ICd1bmRlbF90YWxrJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3VuZGVsX3RhbGsnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdGxhYmVsOiAn55CG55Sx77yaJyxcblx0XHRcdHNpemU6IDYwLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHN0YXR1c2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdHN0YXR1c2Rpdi5zdHlsZS5wYWRkaW5nID0gJzE1cHgnOyAvLyBqdXN0IHNvIGl0IGRvZXNuJ3QgbG9vayBicm9rZW5cblx0XHRXaW5kb3cuc2V0Q29udGVudChzdGF0dXNkaXYpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KHN0YXR1c2Rpdik7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGdlbmVyYXRvcjogJ2xpbmtzJyxcblx0XHRcdHByb3A6ICdpbmZvJyxcblx0XHRcdGlucHJvcDogJ3Byb3RlY3Rpb24nLFxuXHRcdFx0dGl0bGVzOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRncGxsaW1pdDogVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpLFxuXHRcdH07XG5cdFx0Y29uc3Qgc3RhdGVsZW0gPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5oqT5Y+W6aG16Z2i5YiX6KGoJywgJ+aKk+WPlumggemdouWIl+ihqCcpKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCmJywgJ+i8ieWFpeS4reKApicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2VbbWlzc2luZ10nKTtcblx0XHRcdFx0Y29uc3QgbGlzdCA9IFtdO1xuXHRcdFx0XHQkcGFnZXMuZWFjaCgoX2luZGV4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgJHBhZ2UgPSAkKHBhZ2UpO1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJHBhZ2UuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCAkZWRpdHByb3QgPSAkcGFnZS5maW5kKCdwclt0eXBlPVwiY3JlYXRlXCJdW2xldmVsPVwic3lzb3BcIl0nKTtcblx0XHRcdFx0XHRjb25zdCBpc1Byb3RlY3RlZCA9ICRlZGl0cHJvdC5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdGxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRsYWJlbDpcblx0XHRcdFx0XHRcdFx0dGl0bGUgK1xuXHRcdFx0XHRcdFx0XHQoaXNQcm90ZWN0ZWRcblx0XHRcdFx0XHRcdFx0XHQ/IGDvvIgke3dpbmRvdy53Z1VMUygn5YWo5L+d5oqk77yMJywgJ+WFqOS/neitt++8jCcpfSR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGAke25ldyBNb3JlYml0cy5kYXRlKCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSkuY2FsZW5kYXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1dGMnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfSAoVVRDKSR7d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJyl9YFxuXHRcdFx0XHRcdFx0XHRcdFx0fe+8iWBcblx0XHRcdFx0XHRcdFx0XHQ6ICcnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiB0aXRsZSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRzdHlsZTogaXNQcm90ZWN0ZWQgPyAnY29sb3I6ICNmMDAnIDogJycsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvoXmgaLlpI3pobXpnaInLCAn5b6F5oGi5b6p6aCB6Z2iJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajpgIknLCAn5YWo6YG4JyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAncGFnZXMnKSkucHJvcCgnY2hlY2tlZCcsIHRydWUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajkuI3pgIknLCAn5YWo5LiN6YG4JyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAncGFnZXMnKSkucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZXMnLFxuXHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdGxpc3QsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGFwaW9iai5wYXJhbXMuZm9ybS5yZW5kZXIoKTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5XaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFx0fSxcblx0XHRcdHN0YXRlbGVtXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOW3suWujOaIkCcsICflj43liKrpmaTlt7LlrozmiJAnKTtcblx0XHRjb25zdCBudW1Qcm90ZWN0ZWQgPSAkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQsICdwYWdlcycpKS5maWx0ZXIoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQuY2hlY2tlZCAmJiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZy5zdHlsZS5jb2xvciA9PT0gJ3JlZCc7XG5cdFx0fSkubGVuZ3RoO1xuXHRcdGlmIChcblx0XHRcdG51bVByb3RlY3RlZCA+IDAgJiZcblx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOato+imgeWPjeWIoOmZpCAnLCAn5oKo5q2j6KaB5Y+N5Yiq6ZmkICcpICtcblx0XHRcdFx0XHRudW1Qcm90ZWN0ZWQgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOS4quWFqOS/neaKpOmhtemdou+8jOaCqOehruWumuWQl++8nycsICcg5YCL5YWo5L+d6K236aCB6Z2i77yM5oKo56K65a6a5ZeO77yfJylcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZXMgPSBldmVudC50YXJnZXQuZ2V0Q2hlY2tlZCgncGFnZXMnKTtcblx0XHRjb25zdCByZWFzb24gPSBldmVudC50YXJnZXQucmVhc29uLnZhbHVlO1xuXHRcdGNvbnN0IHVuZGVsX3RhbGsgPSBldmVudC50YXJnZXQucmVhc29uLnZhbHVlO1xuXHRcdGlmICghcmVhc29uKSB7XG5cdFx0XHRtdy5ub3RpZnkoJ+aCqOmcgOimgeaMh+WumueQhueUseOAgicsIHtcblx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHR0YWc6ICd0d2lua2xlYmF0Y2h1bmRlbGV0ZScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChldmVudC50YXJnZXQpO1xuXHRcdGlmICghcGFnZXMpIHtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0d2luZG93LndnVUxTKCfplJnor68nLCAn6Yyv6KqkJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5rKh5LuA5LmI6KaB5Y+N5Yig6Zmk55qE77yM5Y+W5raI5pON5L2cJywgJ+aykuS7gOm6vOimgeWPjeWIqumZpOeahO+8jOWPlua2iOaTjeS9nCcpXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlVW5kZWxldGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKHdpbmRvdy53Z1VMUygn5Y+N5Yig6Zmk6aG16Z2iJywgJ+WPjeWIqumZpOmggemdoicpKTtcblx0XHRwYWdlVW5kZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRwYWdlVW5kZWxldGVyLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHRwYWdlVW5kZWxldGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRwYWdlVW5kZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0cGFnZTogcGFnZU5hbWUsXG5cdFx0XHRcdHVuZGVsX3RhbGssXG5cdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0cGFnZVVuZGVsZXRlcixcblx0XHRcdH07XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflj43liKDpmaTpobXpnaInLCAn5Y+N5Yiq6Zmk6aCB6Z2iJykgKyBwYWdlTmFtZVxuXHRcdFx0KTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRFZGl0U3VtbWFyeShgJHtyZWFzb259ICjmibnph48pYCk7XG5cdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnN1cHByZXNzUHJvdGVjdFdhcm5pbmcoKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRNYXhSZXRyaWVzKDMpOyAvLyB0ZW1wb3JhcnkgaW5jcmVhc2UgZnJvbSAyIHRvIG1ha2UgYmF0Y2h1bmRlbGV0ZSBtb3JlIGxpa2VseSB0byBzdWNjZWVkXG5cdFx0XHR5c2FyY2hpdmVzX3BhZ2UudW5kZWxldGVQYWdlKFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMsIHBhZ2VVbmRlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MgPSB7XG5cdFx0Ly8gdGhpcyBzdHVwaWQgcGFyYW1ldGVyIG5hbWUgaXMgYSB0ZW1wb3JhcnkgdGhpbmcgdW50aWwgSSBpbXBsZW1lbnQgYW4gb3ZlcmhhdWxcblx0XHQvLyBvZiBNb3JlYml0cy53aWtpLiogY2FsbGJhY2sgcGFyYW1ldGVyc1xuXHRcdGRvRXh0cmFzOiAodGhpbmdXaXRoUGFyYW1ldGVycykgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gdGhpbmdXaXRoUGFyYW1ldGVycy5wYXJlbnRcblx0XHRcdFx0PyB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudC5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKVxuXHRcdFx0XHQ6IHRoaW5nV2l0aFBhcmFtZXRlcnMuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyB0aGUgaW5pdGlhbCBiYXRjaCBvcGVyYXRpb24ncyBqb2IgaXMgdG8gZGVsZXRlIHRoZSBwYWdlLCBhbmQgdGhhdCBoYXNcblx0XHRcdC8vIHN1Y2NlZWRlZCBieSBub3dcblx0XHRcdHBhcmFtcy5wYWdlVW5kZWxldGVyLndvcmtlclN1Y2Nlc3ModGhpbmdXaXRoUGFyYW1ldGVycyk7XG5cdFx0XHRsZXQgcXVlcnk7XG5cdFx0XHRsZXQgeXNhcmNoaXZlc19hcGk7XG5cdFx0XHRpZiAocGFyYW1zLnVuZGVsX3RhbGspIHtcblx0XHRcdFx0Y29uc3QgdGFsa3BhZ2VuYW1lID0gbmV3IG13LlRpdGxlKHBhcmFtcy5wYWdlKS5nZXRUYWxrUGFnZSgpLmdldFByZWZpeGVkVGV4dCgpO1xuXHRcdFx0XHRpZiAodGFsa3BhZ2VuYW1lICE9PSBwYXJhbXMucGFnZSkge1xuXHRcdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0cHJvcDogJ2RlbGV0ZWRyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdFx0ZHJ2cHJvcDogJ2lkcycsXG5cdFx0XHRcdFx0XHRkcnZsaW1pdDogMSxcblx0XHRcdFx0XHRcdHRpdGxlczogdGFsa3BhZ2VuYW1lLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ajgOafpeiuqOiuuumhteeahOW3suWIoOeJiOacrCcsICfmqqLmn6XoqI7oq5bpoIHnmoTlt7LliKrniYjmnKwnKSxcblx0XHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFx0VHdpbmtsZS5iYXRjaHVuZGVsZXRlLmNhbGxiYWNrcy51bmRlbGV0ZVRhbGtcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMudGFsa1BhZ2UgPSB0YWxrcGFnZW5hbWU7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR1bmRlbGV0ZVRhbGs6IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGV4aXN0cyA9ICQoeG1sKS5maW5kKCdwYWdlOm5vdChbbWlzc2luZ10pJykubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGRlbHJldnMgPSAkKHhtbCkuZmluZCgncmV2JykuYXR0cigncmV2aWQnKTtcblx0XHRcdGlmIChleGlzdHMgfHwgIWRlbHJldnMpIHtcblx0XHRcdFx0Ly8gcGFnZSBleGlzdHMgb3IgaGFzIG5vIGRlbGV0ZWQgcmV2aXNpb25zOyBmb3JnZXQgYWJvdXQgaXRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdGFwaW9iai5wYXJhbXMudGFsa1BhZ2UsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Y+N5Yig6ZmkJywgJ+ato+WcqOWPjeWIqumZpCcpICsgYXBpb2JqLnBhcmFtcy5wYWdlICsgd2luZG93LndnVUxTKCfnmoTorqjorrrpobUnLCAn55qE6KiO6KuW6aCBJylcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOKAnCcsICflj43liKrpmaTjgIwnKSArXG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5wYWdlICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+KAneeahFtbSGVscDrorqjorrrpobV86K6o6K666aG1XV0nLCAn44CN55qEW1tIZWxwOuiojuirlumggXzoqI7oq5bpoIFdXScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlLnVuZGVsZXRlUGFnZSgpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZSwgJ2JhdGNodW5kZWxldGUnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGViYXRjaHByb3RlY3QuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlYmF0Y2hwcm90ZWN0KCQpIHtcblx0LyoqXG5cdCAqIHR3aW5rbGViYXRjaHByb3RlY3QuanM6IEJhdGNoIHByb3RlY3QgbW9kdWxlIChzeXNvcHMgb25seSlcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiUC1iYXRjaFwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nIHByb2plY3QgcGFnZXMgYW5kIHVzZXIgcGFnZXM7XG5cdCAqIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgY2F0ZWdvcmllczsgU3BlY2lhbDpQcmVmaXhJbmRleFxuXHQgKi9cblx0VHdpbmtsZS5iYXRjaHByb3RlY3QgPSAoKSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgJiZcblx0XHRcdCgobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSA+IDAgJiYgWzIsIDRdLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpKSB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxNCB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFjaywgJ+aJueS/nScsICd0dy1wYmF0Y2gnLCAn5om56YeP5L+d5oqk6ZO+5Ye66aG16Z2iJyk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC51bmxpbmtDYWNoZSA9IHt9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoJ+aJueS/nScpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3RlckxpbmsoJ+S/neaKpOadoeS+iycsICdMSUI6UFJPVCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5biu5Yqp5paH5qGjJywgJ+W5q+WKqeaWh+aqlCcpLCAnSDpUVy9ET0Mj5L+d5oqkJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfpl67popjlj43ppognLCAn5ZWP6aGM5Y+N6aWLJyksICdIVDpUVycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUuee8lui+keS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdlZGl0bW9kaWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnZWRpdG1vZGlmeScsXG5cdFx0XHRcdFx0dG9vbHRpcDogJ+S7hemZkOeOsOaciemhtemdouOAgicsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRuYW1lOiAnZWRpdGxldmVsJyxcblx0XHRcdGxhYmVsOiAn57yW6L6R5p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bGV2ZWwsXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdlZGl0ZXhwaXJ5Jyxcblx0XHRcdGxhYmVsOiAn57uI5q2i5pe26Ze077yaJyxcblx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3RocywgLy8gRGVmYXVsdCAoMiBkYXlzKSBzZXQgYWZ0ZXIgcmVuZGVyXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbW9kaWZ5LFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICfkv67mlLnnp7vliqjkv53miqQnLFxuXHRcdFx0XHRcdHZhbHVlOiAnbW92ZW1vZGlmeScsXG5cdFx0XHRcdFx0bmFtZTogJ21vdmVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDnjrDmnInpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVsZXZlbCcsXG5cdFx0XHRsYWJlbDogJ+enu+WKqOadg+mZkO+8micsXG5cdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZWxldmVsLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHQvLyBBdXRvY29uZmlybWVkIGlzIHJlcXVpcmVkIGZvciBhIG1vdmUsIHJlZHVuZGFudFxuXHRcdFx0XHQocHJvdExldmVsKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHByb3RMZXZlbC52YWx1ZSAhPT0gJ2F1dG9jb25maXJtZWQnO1xuXHRcdFx0XHR9XG5cdFx0XHQpLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVleHBpcnknLFxuXHRcdFx0bGFiZWw6ICfnu4jmraLml7bpl7TvvJonLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZW5ndGhzLCAvLyBEZWZhdWx0ICgyIGRheXMpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5kaXNhYmxlZCA9ICFldmVudC50YXJnZXQuY2hlY2tlZDtcblx0XHRcdFx0ZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlZXhwaXJ5LmRpc2FibGVkID1cblx0XHRcdFx0XHQhZXZlbnQudGFyZ2V0LmNoZWNrZWQgfHwgZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlbGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5zdHlsZS5jb2xvciA9IGV2ZW50LnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVleHBpcnkuc3R5bGUuY29sb3IgPSBldmVudC50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUueWIm+W7uuS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDkuI3lrZjlnKjnmoTpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWxldmVsJyxcblx0XHRcdGxhYmVsOiAn5Yib5bu65p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5jcmVhdGVsZXZlbCxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWV4cGlyeScsXG5cdFx0XHRsYWJlbDogJ+e7iOatouaXtumXtO+8micsXG5cdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudC50YXJnZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmRvQ3VzdG9tRXhwaXJ5KGV2ZW50LnRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsIC8vIERlZmF1bHQgKGluZGVmaW5pdGUpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdGxhYmVsOiAnJywgLy8gaG9yaXpvbnRhbCBydWxlXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvIjkv53miqTml6Xlv5fvvIknLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdHJ2cHJvcDogJ3NpemV8dXNlcicsXG5cdFx0XHRpbnByb3A6ICdwcm90ZWN0aW9uJyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH07XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDE0KSB7XG5cdFx0XHQvLyBjYXRlZ29yaWVzXG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnY2F0ZWdvcnltZW1iZXJzJztcblx0XHRcdHF1ZXJ5LmdjbXRpdGxlID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0cXVlcnkuZ2NtbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnKSB7XG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnYWxscGFnZXMnO1xuXHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID1cblx0XHRcdFx0bXcudXRpbC5nZXRQYXJhbVZhbHVlKCduYW1lc3BhY2UnKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbbmFtZT1uYW1lc3BhY2VdJylbMF0udmFsdWU7XG5cdFx0XHRxdWVyeS5nYXBwcmVmaXggPVxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ByZWZpeCcpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9cHJlZml4XScpWzBdLnZhbHVlO1xuXHRcdFx0cXVlcnkuZ2FwbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdsaW5rcyc7XG5cdFx0XHRxdWVyeS50aXRsZXMgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRxdWVyeS5ncGxsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdHVzZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0c3RhdHVzZGl2LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdFdpbmRvdy5zZXRDb250ZW50KHN0YXR1c2Rpdik7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoc3RhdHVzZGl2KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdGNvbnN0IHN0YXRlbGVtID0gbmV3IE1vcmViaXRzLnN0YXR1cygn5oqT5Y+W6aG16Z2i5YiX6KGoJyk7XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHQn5Yqg6L295Lit4oCm4oCmJyxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0KGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0XHRjb25zdCBwYWdlcyA9IChyZXNwb25zZS5xdWVyeSAmJiByZXNwb25zZS5xdWVyeS5wYWdlcykgfHwgW107XG5cdFx0XHRcdGNvbnN0IGxpc3QgPSBbXTtcblx0XHRcdFx0cGFnZXMuc29ydChUd2lua2xlLnNvcnRCeU5hbWVzcGFjZSk7XG5cdFx0XHRcdGZvciAoY29uc3QgcGFnZSBvZiBwYWdlcykge1xuXHRcdFx0XHRcdGNvbnN0IG1ldGFkYXRhID0gW107XG5cdFx0XHRcdFx0Y29uc3QgbWlzc2luZyA9ICEhcGFnZS5taXNzaW5nO1xuXHRcdFx0XHRcdGxldCBlZGl0UHJvdDtcblx0XHRcdFx0XHRpZiAobWlzc2luZykge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaCgn6aG16Z2i5LiN5a2Y5ZyoJyk7XG5cdFx0XHRcdFx0XHRlZGl0UHJvdCA9IHBhZ2UucHJvdGVjdGlvblxuXHRcdFx0XHRcdFx0XHQuZmlsdGVyKChwcm90ZWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHByb3RlY3Rpb24udHlwZSA9PT0gJ2NyZWF0ZScgJiYgcHJvdGVjdGlvbi5sZXZlbCA9PT0gJ3N5c29wJztcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0LnBvcCgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAocGFnZS5yZWRpcmVjdCkge1xuXHRcdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKCfph43lrprlkJEnKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChwYWdlLm5zID09PSA2KSB7XG5cdFx0XHRcdFx0XHRcdG1ldGFkYXRhLnB1c2goYOS4iuS8oOiAhe+8miR7cGFnZS5pbWFnZWluZm9bMF0udXNlcn1gLCBg5pyA5ZCO57yW6L6R6ICF77yaJHtwYWdlLnJldmlzaW9uc1swXS51c2VyfWApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChgJHttdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKHBhZ2UucmV2aXNpb25zWzBdLnNpemUpfeWtl+iKgmApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWRpdFByb3QgPSBwYWdlLnByb3RlY3Rpb25cblx0XHRcdFx0XHRcdFx0LmZpbHRlcigocHJvdGVjdGlvbikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwcm90ZWN0aW9uLnR5cGUgPT09ICdlZGl0JyAmJiBwcm90ZWN0aW9uLmxldmVsID09PSAnc3lzb3AnO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQucG9wKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChlZGl0UHJvdCkge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChcblx0XHRcdFx0XHRcdFx0YCR7bWlzc2luZyA/ICfnmb3nurgnIDogJyd95YWo5L+d5oqkJHtcblx0XHRcdFx0XHRcdFx0XHRlZGl0UHJvdC5leHBpcnkgPT09ICdpbmZpbml0eSdcblx0XHRcdFx0XHRcdFx0XHRcdD8gJ++8iOawuOS5he+8iSdcblx0XHRcdFx0XHRcdFx0XHRcdDogYO+8iCR7bmV3IE1vcmViaXRzLmRhdGUoZWRpdFByb3QuZXhwaXJ5KS5jYWxlbmRhcigndXRjJyl9IChVVEMp6L+H5pyf77yJYFxuXHRcdFx0XHRcdFx0XHR9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3Qge3RpdGxlfSA9IHBhZ2U7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdGxhYmVsOiB0aXRsZSArIChtZXRhZGF0YS5sZW5ndGggPiAwID8gYCAoJHttZXRhZGF0YS5qb2luKCc7ICcpfSlgIDogJycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHN0eWxlOiBlZGl0UHJvdCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6ICflvoXkv53miqTpobXpnaInLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YWo6YCJJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YWo5LiN6YCJJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlcycsXG5cdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0bGlzdCxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0XHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0XHRcdC8vIFNldCBkZWZhdWx0c1xuXHRcdFx0XHRyZXN1bHQuZWRpdGV4cGlyeS52YWx1ZSA9ICcyIGRheXMnO1xuXHRcdFx0XHRyZXN1bHQubW92ZWV4cGlyeS52YWx1ZSA9ICcyIGRheXMnO1xuXHRcdFx0XHRyZXN1bHQuY3JlYXRlZXhwaXJ5LnZhbHVlID0gJ2luZmluaXR5Jztcblx0XHRcdFx0Zm9yIChjb25zdCBsaW5rcyBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAn5Liq6aG16Z2iJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQXJyb3dMaW5rcyhsaW5rcyk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRzdGF0ZWxlbVxuXHRcdCk7XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jdXJyZW50UHJvdGVjdENvdW50ZXIgPSAwO1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jdXJyZW50cHJvdGVjdG9yID0gMDtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5om56YeP5L+d5oqk5a6M5oiQJztcblx0XHRjb25zdCBmb3JtID0gZXZlbnQudGFyZ2V0O1xuXHRcdGNvbnN0IG51bVByb3RlY3RlZCA9ICQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGZvcm0sICfkuKrpobXpnaInKSkuZmlsdGVyKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBlbGVtZW50LmNoZWNrZWQgJiYgZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcuc3R5bGUuY29sb3IgPT09ICcjZjAwJztcblx0XHR9KS5sZW5ndGg7XG5cdFx0aWYgKFxuXHRcdFx0bnVtUHJvdGVjdGVkID4gMCAmJlxuXHRcdFx0IWNvbmZpcm0oYOaCqOWNs+WwhuWvuSR7bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihudW1Qcm90ZWN0ZWQpfeS4quWFqOS/neaKpOmhtemdoui/m+ihjOaTjeS9nOOAguaCqOehruWumuWQl++8n2ApXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRpZiAoIWlucHV0LnJlYXNvbikge1xuXHRcdFx0bXcubm90aWZ5KCfmgqjlv4Xpobvnu5nlh7rkuIDkuKrnkIbnlLHjgIInLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJhdGNocHJvdGVjdCcsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRpZiAoaW5wdXQucGFnZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoJ0Vycm9yJywgJ+W+heS/neaKpOmhtemdouS4jeWtmOWcqO+8jOeoi+W6j+e7iOatoicpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBiYXRjaE9wZXJhdGlvbiA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbign5bqU55So5L+d5oqk6K6+572uJyk7XG5cdFx0YmF0Y2hPcGVyYXRpb24uc2V0T3B0aW9uKCdjaHVua1NpemUnLCBUd2lua2xlLmdldFByZWYoJ2JhdGNoQ2h1bmtzJykpO1xuXHRcdGJhdGNoT3BlcmF0aW9uLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHRiYXRjaE9wZXJhdGlvbi5zZXRQYWdlTGlzdChpbnB1dC5wYWdlcyk7XG5cdFx0YmF0Y2hPcGVyYXRpb24ucnVuKChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0dGl0bGVzOiBwYWdlTmFtZSxcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdGDmraPlnKjmo4Dmn6XpobXpnaLigJwke3BhZ2VOYW1lfeKAneaYr+WQpuWtmOWcqGAsXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFja3MubWFpbixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0YmF0Y2hPcGVyYXRpb24ud29ya2VyRmFpbHVyZVxuXHRcdFx0KTtcblx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHtcblx0XHRcdFx0cGFnZTogcGFnZU5hbWUsXG5cdFx0XHRcdGJhdGNoT3BlcmF0aW9uLFxuXHRcdFx0XHQuLi5pbnB1dCxcblx0XHRcdH07XG5cdFx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmNhbGxiYWNrcyA9IHtcblx0XHRtYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0aWYgKHJlc3BvbnNlLnF1ZXJ5Lm5vcm1hbGl6ZWQpIHtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5wYWdlID0gcmVzcG9uc2UucXVlcnkubm9ybWFsaXplZFswXS50bztcblx0XHRcdH1cblx0XHRcdGNvbnN0IGV4aXN0cyA9ICFyZXNwb25zZS5xdWVyeS5wYWdlc1swXS5taXNzaW5nO1xuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoYXBpb2JqLnBhcmFtcy5wYWdlLCBg5q2j5Zyo5L+d5oqkJHthcGlvYmoucGFyYW1zLnBhZ2V9YCk7XG5cdFx0XHRsZXQgdGFrZW5BY3Rpb24gPSBmYWxzZTtcblx0XHRcdGlmIChleGlzdHMgJiYgYXBpb2JqLnBhcmFtcy5lZGl0bW9kaWZ5KSB7XG5cdFx0XHRcdHBhZ2Uuc2V0RWRpdFByb3RlY3Rpb24oYXBpb2JqLnBhcmFtcy5lZGl0bGV2ZWwsIGFwaW9iai5wYXJhbXMuZWRpdGV4cGlyeSk7XG5cdFx0XHRcdHRha2VuQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChleGlzdHMgJiYgYXBpb2JqLnBhcmFtcy5tb3ZlbW9kaWZ5KSB7XG5cdFx0XHRcdHBhZ2Uuc2V0TW92ZVByb3RlY3Rpb24oYXBpb2JqLnBhcmFtcy5tb3ZlbGV2ZWwsIGFwaW9iai5wYXJhbXMubW92ZWV4cGlyeSk7XG5cdFx0XHRcdHRha2VuQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmICghZXhpc3RzICYmIGFwaW9iai5wYXJhbXMuY3JlYXRlbW9kaWZ5KSB7XG5cdFx0XHRcdHBhZ2Uuc2V0Q3JlYXRlUHJvdGVjdGlvbihhcGlvYmoucGFyYW1zLmNyZWF0ZWxldmVsLCBhcGlvYmoucGFyYW1zLmNyZWF0ZWV4cGlyeSk7XG5cdFx0XHRcdHRha2VuQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmICghdGFrZW5BY3Rpb24pIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0YOato+WcqOS/neaKpOKAnCR7YXBpb2JqLnBhcmFtcy5wYWdlfWAsXG5cdFx0XHRcdFx0YOKAnemhtemdoiR7ZXhpc3RzID8gJ+WtmOWcqCcgOiAn5LiN5a2Y5ZyoJ33vvJvml6Dkuovlj6/lgZrvvIzot7Pov4dgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuYmF0Y2hPcGVyYXRpb24ud29ya2VyRmFpbHVyZShhcGlvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KGFwaW9iai5wYXJhbXMucmVhc29uKTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS5wcm90ZWN0KGFwaW9iai5wYXJhbXMuYmF0Y2hPcGVyYXRpb24ud29ya2VyU3VjY2VzcywgYXBpb2JqLnBhcmFtcy5iYXRjaE9wZXJhdGlvbi53b3JrZXJGYWlsdXJlKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmJhdGNocHJvdGVjdCwgJ2JhdGNocHJvdGVjdCcpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWNsb3NlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWNsb3NlKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiB0d2lua2xlY2xvc2UuanM6IFhGRCBjbG9zaW5nIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IExpbmtzIGFmdGVyIHNlY3Rpb24gaGVhZGluZ1xuXHQgKiBBY3RpdmUgb246IEFmRCBkYXRlZCBhcmNoaXZlIHBhZ2VzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBUd2lua2xlQ29uZmlnXG5cdCAqL1xuXHRUd2lua2xlLmNsb3NlID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdFR3aW5rbGUuZ2V0UHJlZignWGZkQ2xvc2UnKSA9PT0gJ2hpZGUnIHx8XG5cdFx0XHQhL17mnInlhb3moaPmoYjppoYoW18gXXRhbGspPzrlrZjlup/orqjorrpcXC/orrDlvZUoPzpcXC9cXGQrKXszfSQvLnRlc3QobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRtdy5ob29rKCd3aWtpcGFnZS5jb250ZW50JykuYWRkKChpdGVtKSA9PiB7XG5cdFx0XHRpZiAoaXRlbS5hdHRyKCdpZCcpID09PSAnbXctY29udGVudC10ZXh0Jykge1xuXHRcdFx0XHRUd2lua2xlLmNsb3NlLmFkZExpbmtzKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuYWRkTGlua3MgPSAoKSA9PiB7XG5cdFx0Y29uc3Qgc3BhblRhZyA9IChjb2xvciwgY29udGVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHNwYW4uc3R5bGUuY29sb3IgPSBjb2xvcjtcblx0XHRcdHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpO1xuXHRcdFx0cmV0dXJuIHNwYW47XG5cdFx0fTtcblx0XHQkYm9keVxuXHRcdFx0LmZpbmQoXG5cdFx0XHRcdCdoMTpoYXMoLm13LWhlYWRsaW5lKSxoMjpoYXMoLm13LWhlYWRsaW5lKSxoMzpoYXMoLm13LWhlYWRsaW5lKSxoNDpoYXMoLm13LWhlYWRsaW5lKSxoNTpoYXMoLm13LWhlYWRsaW5lKSxoNjpoYXMoLm13LWhlYWRsaW5lKScsXG5cdFx0XHRcdCcjYm9keUNvbnRlbnQnXG5cdFx0XHQpXG5cdFx0XHQuZWFjaCgoaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0ZWxlbWVudC5kYXRhc2V0LnNlY3Rpb24gPSBpbmRleCArIDE7XG5cdFx0XHR9KTtcblx0XHRjb25zdCBzZWxlY3RvciA9ICc6aGFzKC5tdy1oZWFkbGluZSBhOm9ubHktb2YtdHlwZSk6bm90KDpoYXMoKyBkaXYuTmF2RnJhbWUpKSc7XG5cdFx0Y29uc3QgdGl0bGVzID0gJGJvZHkuZmluZCgnI2JvZHlDb250ZW50JykuZmluZChgaDIke3NlbGVjdG9yfTpub3QoOmhhcygrIHAgKyBoMykpLCBoMyR7c2VsZWN0b3J9YCk7IC8vIHJlYWxseSBuZWVkcyB0byB3b3JrIG9uXG5cdFx0Y29uc3QgZGVsTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0cm9uZycpO1xuXHRcdGNvbnN0IGRlbExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0ZGVsTGluay5hcHBlbmRDaGlsZChzcGFuVGFnKCdCbGFjaycsICdbJykpO1xuXHRcdGRlbExpbmsuYXBwZW5kQ2hpbGQoc3BhblRhZygnUmVkJywgd2luZG93LndnVUxTKCflhbPpl63orqjorronLCAn6Zec6ZaJ6KiO6KuWJykpKTtcblx0XHRkZWxMaW5rLmFwcGVuZENoaWxkKHNwYW5UYWcoJ0JsYWNrJywgJ10nKSk7XG5cdFx0ZGVsTm9kZS5hcHBlbmRDaGlsZChkZWxMaW5rKTtcblx0XHRmb3IgKGNvbnN0IGN1cnJlbnQgb2YgdGl0bGVzKSB7XG5cdFx0XHRjb25zdCBoZWFkbGluZWhyZWYgPSAkKGN1cnJlbnQpLmZpbmQoJy5tdy1oZWFkbGluZSBhJykuYXR0cignaHJlZicpO1xuXHRcdFx0aWYgKGhlYWRsaW5laHJlZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGxldCB0aXRsZSA9IG51bGw7XG5cdFx0XHRcdGlmIChoZWFkbGluZWhyZWYuaW5jbHVkZXMoJ3JlZGxpbms9MScpKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBoZWFkbGluZWhyZWYuc2xpY2UoMTksIC0yMik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgbSA9IGhlYWRsaW5laHJlZi5tYXRjaCgvXFwvd2lraVxcLyhbXj9dKykvLCAnJDEnKTtcblx0XHRcdFx0XHRpZiAobSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0WywgdGl0bGVdID0gbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRpdGxlICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBkZWNvZGVVUklDb21wb25lbnQodGl0bGUpO1xuXHRcdFx0XHRcdHRpdGxlID0gdGl0bGUucmVwbGFjZSgvXy9nLCAnICcpOyAvLyBOb3JtYWxpemUgZm9yIHVzaW5nIGluIGludGVyZmFjZSBhbmQgc3VtbWFyeVxuXHRcdFx0XHRcdGNvbnN0IHBhZ2Vub3RleGlzdCA9ICQoY3VycmVudCkuZmluZCgnLm13LWhlYWRsaW5lIGEnKS5oYXNDbGFzcygnbmV3Jyk7XG5cdFx0XHRcdFx0Y29uc3Qge3NlY3Rpb259ID0gY3VycmVudC5kYXRhc2V0O1xuXHRcdFx0XHRcdGNvbnN0IFtub2RlXSA9IGN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCgnLm13LWhlYWRsaW5lJyk7XG5cdFx0XHRcdFx0bm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpKTtcblx0XHRcdFx0XHRjb25zdCB0bXBOb2RlID0gZGVsTm9kZS5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRcdFx0dG1wTm9kZS5maXJzdENoaWxkLmhyZWYgPSBgIyR7c2VjdGlvbn1gO1xuXHRcdFx0XHRcdCQodG1wTm9kZS5maXJzdENoaWxkKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrKHRpdGxlLCBzZWN0aW9uLCBwYWdlbm90ZXhpc3QpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQodG1wTm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdC8vIEtlZXAgdGhpcyBzeW5jaHJvbml6ZWQgd2l0aCB7e2RlbGh9fVxuXHRUd2lua2xlLmNsb3NlLmNvZGVzID0gW1xuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfor7fmsYLml6DmlYgnLCAn6KuL5rGC54Sh5pWIJyksXG5cdFx0XHR2YWx1ZToge1xuXHRcdFx0XHRpcjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+axguaXoOaViCcsICfoq4vmsYLnhKHmlYgnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0cmVwOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YeN5aSN5o+Q5Ye677yM5peg5pWIJywgJ+mHjeikh+aPkOWHuu+8jOeEoeaViCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuZToge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ebruagh+mhtemdouaIluaWh+S7tuS4jeWtmOWcqO+8jOaXoOaViCcsICfnm67mqJnpoIHpnaLmiJbmqpTmoYjkuI3lrZjlnKjvvIznhKHmlYgnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bnE6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DliKDogIXmnKrojrflj5bmj5DliKDotYTmoLzvvIzml6DmlYgnLCAn5o+Q5Yiq6ICF5pyq5Y+W5b6X5o+Q5Yiq6LOH5qC877yM54Sh5pWIJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiAn5L+d55WZJyxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGs6IHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/neeVmScsXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzazoge1xuXHRcdFx0XHRcdGxhYmVsOiAn5b+r6YCf5L+d55WZJyxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0dGs6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmoLml7bkv53nlZnvvIzmlLnmjILnu7TmiqTmqKHmnb/vvIjlhbPms6jluqbnrYnvvIknLCAn5pqr5pmC5L+d55WZ77yM5pS55o6b57at6K235qih5p2/77yI6Zec5rOo5bqm562J77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5pqC5pe25L+d55WZJywgJ+aaq+aZguS/neeVmScpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRycjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+axgueQhueUsea2iOWksScsICfoq4vmsYLnkIbnlLHmtojlpLEnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpID09PSAnbm9uYWRtaW5vbmx5Jyxcblx0XHRcdFx0fSxcblx0XHRcdFx0ZGFuOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig5ZCO6YeN5bu6JywgJ+WIquW+jOmHjeW7uicpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0ZDoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdkZWwnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpID09PSAnYWxsJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0aWM6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm77lg4/lm6DkvrXmnYPooqvliKAnLCAn5ZyW5YOP5Zug5L615qyK6KKr5YiqJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpCcsICflv6vpgJ/liKrpmaQnKSxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdHNkOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b+r6YCf5Yig6ZmkJywgJ+W/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxzc2Q6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DmnaXmupDmiJbokZfkvZzmnYPkv6Hmga/vvIzlv6vpgJ/liKDpmaQnLCAn54Sh5L6G5rqQ5oiW54mI5qyK6LOH6KiK77yM5b+r6YCf5Yiq6ZmkJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0c3ZnOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey5pS555SoU1ZH5Zu+5b2i77yM5b+r6YCf5Yig6ZmkJywgJ+W3suaUueeUqFNWR+WcluW9ou+8jOW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRyZXA6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpJrmrKHooqvliKDpmaTvvIzmnaHnm67plIHlrponLCAn5aSa5qyh6KKr5Yiq6Zmk77yM5qKd55uu6Y6W5a6aJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WFtuS7luWkhOeQhuaWueazlScsICflhbbku5bomZXnkIbmlrnms5UnKSxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGM6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazkuqTkvrXmnYMnLCAn6L2J5Lqk5L615qyKJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnbm9vcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHI6IHtcblx0XHRcdFx0XHRsYWJlbDogJ+mHjeWumuWQkScsXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjcjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIhuexu+mHjeWumuWQkScsICfliIbpoZ7ph43lrprlkJEnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG06IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vliqgnLCAn56e75YuVJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtZXJnZToge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W5tuWFpScsICfkvbXlhaUnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1lcmdlYXBwcm92ZWQ6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhYHorrjlubblhaUnLCAn5YWB6Kix5L215YWlJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuYzoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoOWFseivhuaaguaXtuS/neeVmScsICfnhKHlhbHorZjmmqvmmYLkv53nlZknKSxcblx0XHRcdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCfml6DlhbHor4YnLCAn54Sh5YWx6K2YJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2sgPSAodGl0bGUsIHNlY3Rpb24sIG5vb3ApID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDQxMCwgMjAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoYOWFs+mXreWtmOW6n+iuqOiuuiBcXHUwMEI3ICR7dGl0bGV9YCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluaygn5a2Y5bqf6K6o6K666K6+572uJywgJ0g6VFcvUFJFRiPlhbPpl63lrZjlup/orqjorronKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluaygnVHdpbmtsZeW4ruWKqScsICdIOlRXL0RPQyPlhbPpl63lrZjlup/orqjorronKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdGxhYmVsOiAn5aSE55CG57uT5p6c77yaJyxcblx0XHRcdG5hbWU6ICdzdWJfZ3JvdXAnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suY2hhbmdlX2NvZGUsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdzZHJlYXNvbicsXG5cdFx0XHRsYWJlbDogJ+mAn+WIoOeQhueUse+8micsXG5cdFx0XHR0b29sdGlwOiAn55So5LqO5Yig6Zmk5pel5b+X77yM5L2/55Soe3tkZWxldGV9feeahOWPguaVsOagvOW8j++8jOS+i+WmgiBBMSDmiJYgQTF8RzEnLFxuXHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAncmVtYXJrJyxcblx0XHRcdGxhYmVsOiAn6KGl5YWF6K+05piO77yaJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICflj6rlhbPpl63orqjorrrvvIzkuI3ov5vooYzlhbbku5bmk43kvZwnLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm9vcCcsXG5cdFx0XHRcdFx0bmFtZTogJ25vb3AnLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9vcGVyYXRpb24sXG5cdFx0XHRcdFx0Y2hlY2tlZDogbm9vcCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0aWYgKG5ldyBtdy5UaXRsZSh0aXRsZSkubmFtZXNwYWNlICUgMiA9PT0gMCAmJiBuZXcgbXcuVGl0bGUodGl0bGUpLm5hbWVzcGFjZSAhPT0gMikge1xuXHRcdFx0Ly8gaGlkZSBvcHRpb24gZm9yIHVzZXIgcGFnZXMsIHRvIGF2b2lkIGFjY2lkZW50YWxseSBkZWxldGluZyB1c2VyIHRhbGsgcGFnZVxuXHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfliKDpmaTlhbPogZTnmoTorqjorrrpobUnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICd0YWxrcGFnZScsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogJ+WIoOmZpOaXtumZhOW4puWIoOmZpOatpOmhtemdoueahOiuqOiuuumhteOAgicsXG5cdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAn5Yig6Zmk6YeN5a6a5ZCR6aG1Jyxcblx0XHRcdFx0XHR2YWx1ZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0bmFtZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0dG9vbHRpcDogJ+WIoOmZpOWIsOatpOmhteeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRldmVudDogKGUpID0+IHtcblx0XHRcdFx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Y29uc3QgW3N1Yl9ncm91cF0gPSByZXN1bHQucXVlcnlTZWxlY3RvckFsbCgnc2VsZWN0Jyk7IC8vIGhhY2tcblx0XHRjb25zdCByZXN1bHREYXRhID0ge1xuXHRcdFx0dGl0bGUsXG5cdFx0XHRzZWN0aW9uOiBOdW1iZXIucGFyc2VJbnQoc2VjdGlvbiwgMTApLFxuXHRcdFx0bm9vcCxcblx0XHR9O1xuXHRcdCQocmVzdWx0KS5kYXRhKCdyZXN1bHREYXRhJywgcmVzdWx0RGF0YSk7XG5cdFx0Ly8gd29ya2VyIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgY29tYm8gYm94IGVudHJpZXNcblx0XHRjb25zdCBjcmVhdGVFbnRyaWVzID0gKGNvbnRlbnRzLCBjb250YWluZXIpID0+IHtcblx0XHRcdGZvciAoY29uc3QgW2l0ZW1LZXksIGl0ZW1Qcm9wZXJ0aWVzXSBvZiBPYmplY3QuZW50cmllcyhjb250ZW50cykpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gdHlwZW9mIGl0ZW1LZXkgPT09ICdzdHJpbmcnID8gaXRlbUtleSA6IGl0ZW1Qcm9wZXJ0aWVzLnZhbHVlO1xuXHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogYCR7a2V5fe+8miR7aXRlbVByb3BlcnRpZXMubGFiZWx9YCxcblx0XHRcdFx0XHR2YWx1ZToga2V5LFxuXHRcdFx0XHRcdHNlbGVjdGVkOiBpdGVtUHJvcGVydGllcy5zZWxlY3RlZCxcblx0XHRcdFx0XHRkaXNhYmxlZDpcblx0XHRcdFx0XHRcdChUd2lua2xlLmdldFByZWYoJ1hmZENsb3NlJykgIT09ICdhbGwnICYmIGl0ZW1Qcm9wZXJ0aWVzLmFkbWlub25seSkgfHwgaXRlbVByb3BlcnRpZXMuZGlzYWJsZWQsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBlbGVtUmVuZGVyZWQgPSBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWxlbS5yZW5kZXIoKSk7XG5cdFx0XHRcdCQoZWxlbVJlbmRlcmVkKS5kYXRhKCdtZXNzYWdlRGF0YScsIGl0ZW1Qcm9wZXJ0aWVzKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS5jbG9zZS5jb2Rlcykge1xuXHRcdFx0bGV0IG9wdGdyb3VwID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0bGFiZWw6IGdyb3VwLmtleSxcblx0XHRcdH0pO1xuXHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5yZW5kZXIoKTtcblx0XHRcdHN1Yl9ncm91cC5hcHBlbmRDaGlsZChvcHRncm91cCk7XG5cdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdGNyZWF0ZUVudHJpZXMoZ3JvdXAudmFsdWUsIG9wdGdyb3VwKTtcblx0XHR9XG5cdFx0Y29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldmVudC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5zdWJfZ3JvdXAuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suY2hhbmdlX29wZXJhdGlvbiA9IChlKSA9PiB7XG5cdFx0Y29uc3Qgbm9vcCA9IGUudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0Y29uc3QgY29kZSA9IGUudGFyZ2V0LmZvcm0uc3ViX2dyb3VwLnZhbHVlO1xuXHRcdGNvbnN0IG1lc3NhZ2VEYXRhID0gJChlLnRhcmdldC5mb3JtLnN1Yl9ncm91cCkuZmluZChgb3B0aW9uW3ZhbHVlPVwiJHtjb2RlfVwiXWApLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0Y29uc3Qge3RhbGtwYWdlfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3Qge3JlZGlyZWN0c30gPSBlLnRhcmdldC5mb3JtO1xuXHRcdGlmIChub29wIHx8IG1lc3NhZ2VEYXRhLmFjdGlvbiA9PT0gJ2tlZXAnKSB7XG5cdFx0XHRpZiAodGFsa3BhZ2UpIHtcblx0XHRcdFx0dGFsa3BhZ2UuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZWRpcmVjdHMuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRhbGtwYWdlKSB7XG5cdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9jb2RlID0gKGUpID0+IHtcblx0XHRjb25zdCByZXN1bHREYXRhID0gJChlLnRhcmdldC5mb3JtKS5kYXRhKCdyZXN1bHREYXRhJyk7XG5cdFx0Y29uc3QgbWVzc2FnZURhdGEgPSAkKGUudGFyZ2V0KS5maW5kKGBvcHRpb25bdmFsdWU9XCIke2UudGFyZ2V0LnZhbHVlfVwiXWApLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0Y29uc3Qge25vb3B9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRjb25zdCB7dGFsa3BhZ2V9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRjb25zdCB7cmVkaXJlY3RzfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0aWYgKHJlc3VsdERhdGEubm9vcCB8fCBtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdub29wJykge1xuXHRcdFx0bm9vcC5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdG5vb3AuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKHRhbGtwYWdlKSB7XG5cdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0dGFsa3BhZ2UuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdHJlZGlyZWN0cy5kaXNhYmxlZCA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG5vb3AuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0bm9vcC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKG1lc3NhZ2VEYXRhLmFjdGlvbiA9PT0gJ2tlZXAnKSB7XG5cdFx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRhbGtwYWdlLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRyZWRpcmVjdHMuZGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmIChlLnRhcmdldC52YWx1ZSA9PT0gJ3NkJykge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnNkcmVhc29uLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suZXZhbHVhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IGNvZGUgPSBlLnRhcmdldC5zdWJfZ3JvdXAudmFsdWU7XG5cdFx0Y29uc3QgcmVzdWx0RGF0YSA9ICQoZS50YXJnZXQpLmRhdGEoJ3Jlc3VsdERhdGEnKTtcblx0XHRjb25zdCBtZXNzYWdlRGF0YSA9ICQoZS50YXJnZXQuc3ViX2dyb3VwKS5maW5kKGBvcHRpb25bdmFsdWU9XCIke2NvZGV9XCJdYCkuZGF0YSgnbWVzc2FnZURhdGEnKTtcblx0XHRjb25zdCBub29wID0gZS50YXJnZXQubm9vcC5jaGVja2VkO1xuXHRcdGNvbnN0IHRhbGtwYWdlID0gZS50YXJnZXQudGFsa3BhZ2UgJiYgZS50YXJnZXQudGFsa3BhZ2UuY2hlY2tlZDtcblx0XHRjb25zdCByZWRpcmVjdHMgPSBlLnRhcmdldC5yZWRpcmVjdHMuY2hlY2tlZDtcblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR0aXRsZTogcmVzdWx0RGF0YS50aXRsZSxcblx0XHRcdGNvZGUsXG5cdFx0XHRyZW1hcms6IGUudGFyZ2V0LnJlbWFyay52YWx1ZSxcblx0XHRcdHNkcmVhc29uOiBlLnRhcmdldC5zZHJlYXNvbi52YWx1ZSxcblx0XHRcdHNlY3Rpb246IHJlc3VsdERhdGEuc2VjdGlvbixcblx0XHRcdHBhcmVudFNlY3Rpb246IHJlc3VsdERhdGEucGFyZW50U2VjdGlvbixcblx0XHRcdG1lc3NhZ2VEYXRhLFxuXHRcdFx0dGFsa3BhZ2UsXG5cdFx0XHRyZWRpcmVjdHMsXG5cdFx0fTtcblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5pON5L2c5a6M5oiQJztcblx0XHRpZiAobm9vcCB8fCBtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdub29wJykge1xuXHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzd2l0Y2ggKG1lc3NhZ2VEYXRhLmFjdGlvbikge1xuXHRcdFx0XHRjYXNlICdkZWwnOlxuXHRcdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmRlbChwYXJhbXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdrZWVwJzoge1xuXHRcdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFyYW1zLnRpdGxlLCAn56e76Zmk5a2Y5bqf6K6o6K665qih5p2/Jyk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmtlZXApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0bXcubm90aWZ5KGDlhbPpl63lrZjlup/orqjorrrvvJrmnKrlrprkuYkgJHtjb2RlfWAsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjbG9zZScsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcyA9IHtcblx0XHRkZWw6IChwYXJhbXMpID0+IHtcblx0XHRcdGxldCBxdWVyeTtcblx0XHRcdGxldCB5c2FyY2hpdmVzX2FwaTtcblx0XHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFyYW1zLnRpdGxlLCAn5Yig6Zmk6aG16Z2iJyk7XG5cdFx0XHRpZiAocGFyYW1zLmNvZGUgPT09ICdzZCcpIHtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnBhcnNlV2lraXRleHQocGFyYW1zLnRpdGxlLCBge3tkZWxldGV8JHtwYXJhbXMuc2RyZWFzb259fX1gLCAocmVhc29uKSA9PiB7XG5cdFx0XHRcdFx0cmVhc29uID0gcHJvbXB0KCfovpPlhaXliKDpmaTnkIbnlLHvvIzmiJbngrnlh7vnoa7lrprku6XmjqXlj5foh6rliqjnlJ/miJDnmoTvvJonLCByZWFzb24pO1xuXHRcdFx0XHRcdGlmIChyZWFzb24gPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdHBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLndhcm4oJ+ayoeacieaJp+ihjOWIoOmZpCcpO1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KHJlYXNvbik7XG5cdFx0XHRcdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdHBhZ2UuZGVsZXRlUGFnZSgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy50YWxrZW5kKHBhcmFtcyk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShg5a2Y5bqf6K6o6K666YCa6L+H77yaW1ske213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX0jJHtwYXJhbXMudGl0bGV9XV1gKTtcblx0XHRcdFx0cGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2UuZGVsZXRlUGFnZSgoKSA9PiB7XG5cdFx0XHRcdFx0cGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMucmVkaXJlY3RzKSB7XG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHR0aXRsZXM6IHBhcmFtcy50aXRsZSxcblx0XHRcdFx0XHRwcm9wOiAncmVkaXJlY3RzJyxcblx0XHRcdFx0XHRyZGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0fTtcblxuXHRcdFx0XHR5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHQn5q2j5Zyo6I635Y+W6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5kZWxldGVSZWRpcmVjdHNNYWluXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWxrUGFnZSkge1xuXHRcdFx0XHRjb25zdCBwYWdlVGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYXJhbXMudGl0bGUpO1xuXHRcdFx0XHRpZiAocGFnZVRpdGxlICYmIHBhZ2VUaXRsZS5uYW1lc3BhY2UgJSAyID09PSAwICYmIHBhZ2VUaXRsZS5uYW1lc3BhY2UgIT09IDIpIHtcblx0XHRcdFx0XHRwYWdlVGl0bGUubmFtZXNwYWNlKys7IC8vIG5vdyBwYWdlVGl0bGUgaXMgdGhlIHRhbGsgcGFnZSB0aXRsZSFcblx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHRpdGxlczogcGFnZVRpdGxlLnRvVGV4dCgpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHQn5q2j5Zyo5qOA5p+l6K6o6K666aG16Z2i5piv5ZCm5a2Y5ZyoJyxcblx0XHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MuZGVsZXRlVGFsa1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLmFwaW9iai5wYXJhbXMudGFsa1BhZ2UgPSBwYWdlVGl0bGUudG9UZXh0KCk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHR9LFxuXHRcdGRlbGV0ZVJlZGlyZWN0c01haW46IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IHBhZ2VzID0gJCh4bWwpXG5cdFx0XHRcdC5maW5kKCdyZCcpXG5cdFx0XHRcdC5tYXAoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5nZXQoKTtcblx0XHRcdGlmIChwYWdlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmVkaXJlY3REZWxldGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOWIsCAnLCAn5q2j5Zyo5Yiq6Zmk5YiwICcpICtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLnRpdGxlICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDnmoTph43lrprlkJEnLCAnIOeahOmHjeaWsOWwjuWQkScpXG5cdFx0XHQpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaGRlbGV0ZUNodW5rcycpKTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIucnVuKChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHBhZ2VOYW1lLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6ZmkICcsICfmraPlnKjliKrpmaQgJykgKyBwYWdlTmFtZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdFx0YFtbTElCOkNTRCNHNXxHNV1d77yaJHt3aW5kb3cud2dVTFMoJ+aMh+WQkeW3suWIoOmhtemdouKAnCcsICfmjIflkJHlt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMudGl0bGV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn4oCd55qE6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRcdCfjgI3nmoTph43mlrDlsI7lkJEnXG5cdFx0XHRcdFx0KX1gXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5kZWxldGVQYWdlKHJlZGlyZWN0RGVsZXRlci53b3JrZXJTdWNjZXNzLCByZWRpcmVjdERlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGRlbGV0ZVRhbGs6IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGV4aXN0cyA9ICQoeG1sKS5maW5kKCdwYWdlOm5vdChbbWlzc2luZ10pJykubGVuZ3RoID4gMDtcblx0XHRcdGlmICghZXhpc3RzKSB7XG5cdFx0XHRcdC8vIG5vIHRhbGsgcGFnZTsgZm9yZ2V0IGFib3V0IGl0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnRhbGtQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOmhtemdoiAnLCAn5q2j5Zyo5Yiq6Zmk6aCB6Z2iICcpICtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLnRpdGxlICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDnmoTorqjorrrpobUnLCAnIOeahOiojuirlumggScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0YFtbTElCOkNTRCNHNXxHNV1d77yaJHt3aW5kb3cud2dVTFMoJ+W3suWIoOmhtemdouKAnCcsICflt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMudGl0bGV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+KAneeahFtbSGVscDrorqjorrrpobV86K6o6K666aG1XV0nLFxuXHRcdFx0XHRcdCfjgI3nmoRbW0hlbHA66KiO6KuW6aCBfOiojuirlumggV1dJ1xuXHRcdFx0XHQpfWBcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2UuZGVsZXRlUGFnZSgpO1xuXHRcdH0sXG5cdFx0a2VlcDogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRpZiAoIXBhZ2VvYmouZXhpc3RzKCkpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoJ+mhtemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIoOmZpCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IHBhZ2V0aXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhcmFtcy50aXRsZSk7XG5cdFx0XHRpZiAocGFnZXRpdGxlLmdldE5hbWVzcGFjZUlkKCkgJSAyID09PSAwKSB7XG5cdFx0XHRcdGNvbnN0IHRhbGtwYWdldGl0bGUgPSBuZXcgbXcuVGl0bGUocGFnZXRpdGxlLmdldE1haW5UZXh0KCksIHBhZ2V0aXRsZS5nZXROYW1lc3BhY2VJZCgpICsgMSk7XG5cdFx0XHRcdGNvbnN0IHRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHR0YWxrcGFnZXRpdGxlLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDorqjorrrpobUnLCAn5qiZ6KiY6KiO6KuW6aCBJylcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcmVhc29uID0gcGFyYW1zLm1lc3NhZ2VEYXRhLnZhbHVlIHx8IHBhcmFtcy5tZXNzYWdlRGF0YS5sYWJlbDtcblx0XHRcdFx0Y29uc3QgdmZka2VwdCA9IGB7e09sZCB2ZmQgbXVsdGl8JHttdy5jb25maWdcblx0XHRcdFx0XHQuZ2V0KCd3Z1BhZ2VOYW1lJylcblx0XHRcdFx0XHQuc3BsaXQoJy8nKVxuXHRcdFx0XHRcdC5zbGljZSgyKVxuXHRcdFx0XHRcdC5qb2luKCcvJyl9fCR7cmVhc29ufX19XFxuYDtcblx0XHRcdFx0dGFsa3BhZ2Uuc2V0UHJlcGVuZFRleHQodmZka2VwdCk7XG5cdFx0XHRcdHRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KGBbWyR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX1dXe+8miR7cmVhc29ufWApO1xuXHRcdFx0XHR0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0dGFsa3BhZ2UucHJlcGVuZCgpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IG5ld3RleHQgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdC88bm9pbmNsdWRlPlxccypcXHtcXHsoW3JzYWlmdGNtdl1mZCkoXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyo8XFwvbm9pbmNsdWRlPlxccyovZ2ksXG5cdFx0XHRcdCcnXG5cdFx0XHQpO1xuXHRcdFx0bmV3dGV4dCA9IG5ld3RleHQucmVwbGFjZSgvXFx7XFx7KFtyc2FpZnRjbXZdZmQpKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2dpLCAnJyk7XG5cdFx0XHRpZiAocGFyYW1zLmNvZGUgIT09ICd0aycpIHtcblx0XHRcdFx0bmV3dGV4dCA9IG5ld3RleHQucmVwbGFjZShcblx0XHRcdFx0XHQve3sobm90YWJpbGl0eXxmYW1lfG1haXJ855+l5ZCN5bqmfOmHjeimgeaAp3zmmL7okZfmgKd86aGv6JGX5oCnfOefpeWQjeW6puS4jei2s3zkurrnianph43opoHmgKd86YeN6KaB5oCn5LiN6LazfG5vdGFibGV85YWz5rOo5bqmfOWFs+azqOW6puS4jei2s3zpl5zms6jluqZ86Zec5rOo5bqm5LiN6LazfOmHjeimgXzph43opoHluqYpKFxcfCg/Ont7W157fV0qfX18W157fV0pKik/fX1cXG4qL2dpLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdG5ld3RleHQgPSBuZXd0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L3t7KHN1YnN0dWJ85bCP5bCP5L2c5ZOBfGNvZHzlsI/lsI/mop3nm6585bCP5bCP5p2h55uuKShcXHwoPzp7e1tee31dKn19fFtee31dKSopP319XFxuKi9naSxcblx0XHRcdFx0XHQnJ1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5jb2RlID09PSAnbWVyZ2VhcHByb3ZlZCcpIHtcblx0XHRcdFx0Y29uc3QgdGFnID0gJ3t7J1xuXHRcdFx0XHRcdC5jb25jYXQoJ3N1YnN0OicpXG5cdFx0XHRcdFx0LmNvbmNhdChgTWVyZ2UgYXBwcm92ZWQvYXV0b3xkaXNjdXNzPSR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX19fVxcbmApO1xuXHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlc1xuXHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZShuZXd0ZXh0KTtcblx0XHRcdFx0bmV3dGV4dCA9IHlzYXJjaGl2ZXNfcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAobmV3dGV4dCA9PT0gdGV4dCkge1xuXHRcdFx0XHRzdGF0ZWxlbS53YXJuKCfmnKrmib7liLDlrZjlup/orqjorrrmqKHmnb/vvIzlj6/og73lt7Looqvnp7vpmaQnKTtcblx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBlZGl0c3VtbWFyeSA9IGDlrZjlup/orqjorrrlhbPpl63vvJpbWyR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX1dXWA7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KG5ld3RleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShlZGl0c3VtbWFyeSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmtlZXBDb21wbGV0ZSk7XG5cdFx0fSxcblx0XHRrZWVwQ29tcGxldGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdH0sXG5cdFx0dGFsa2VuZDogKHBhcmFtcykgPT4ge1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksICflhbPpl63orqjorronKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRQYWdlU2VjdGlvbihwYXJhbXMuc2VjdGlvbik7XG5cdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5zYXZlVGFsayk7XG5cdFx0fSxcblx0XHRzYXZlVGFsazogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRpZiAodGV4dC5pbmNsdWRlcygne3tkZWxoJykpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoJ+iuqOiuuuW3suiiq+WFs+mXrScpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzYmVnaW4gPSB0ZXh0LmluY2x1ZGVzKCc8c2VjdGlvbiBiZWdpbj1iYWNrbG9nIC8+Jyk7XG5cdFx0XHRjb25zdCBzZW5kID0gdGV4dC5pbmNsdWRlcygnPHNlY3Rpb24gZW5kPWJhY2tsb2cgLz4nKTtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1xcbjxzZWN0aW9uIGJlZ2luPWJhY2tsb2cgLz4nLCAnJyk7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCdcXG48c2VjdGlvbiBlbmQ9YmFja2xvZyAvPicsICcnKTtcblx0XHRcdGNvbnN0IGJhciA9IHRleHQuc3BsaXQoJ1xcbi0tLS1cXG4nKTtcblx0XHRcdGNvbnN0IHNwbGl0ID0gYmFyWzBdLnNwbGl0KCdcXG4nKTtcblx0XHRcdHRleHQgPSBgJHtzcGxpdFswXX1cXG57e2RlbGh8JHtwYXJhbXMuY29kZX19fVxcbmA7XG5cdFx0XHR0ZXh0ICs9IHNwbGl0LnNsaWNlKDEpLmpvaW4oJ1xcbicpO1xuXHRcdFx0Y29uc3QgcmVhc29uID0gcGFyYW1zLm1lc3NhZ2VEYXRhLnZhbHVlIHx8IHBhcmFtcy5tZXNzYWdlRGF0YS5sYWJlbDtcblx0XHRcdHRleHQgKz0gYFxcbjxocj5cXG46ICR7cmVhc29ufWA7XG5cdFx0XHRpZiAocGFyYW1zLnJlbWFyaykge1xuXHRcdFx0XHR0ZXh0ICs9IGDvvJoke01vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihwYXJhbXMucmVtYXJrKX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGV4dCArPSAn44CCJztcblx0XHRcdH1cblx0XHRcdGlmICghTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0dGV4dCArPSAne3snLmNvbmNhdCgnc3Vic3Q6JykuY29uY2F0KCdOQUN9fScpO1xuXHRcdFx0fVxuXHRcdFx0dGV4dCArPSAnLS1+ficuY29uY2F0KCd+ficsICdcXG57e2RlbGZ9fScpO1xuXHRcdFx0aWYgKGJhclsxXSkge1xuXHRcdFx0XHR0ZXh0ICs9IGBcXG4tLS0tXFxuJHtiYXIuc2xpY2UoMSkuam9pbignXFxuLS0tLVxcbicpfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2VuZCkge1xuXHRcdFx0XHR0ZXh0ICs9ICdcXG48c2VjdGlvbiBlbmQ9YmFja2xvZyAvPic7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2JlZ2luKSB7XG5cdFx0XHRcdC8vIGd1YXJhbnRlZWQgdG8gYmUgYXQgdG5lIGVuZD9cblx0XHRcdFx0dGV4dCArPSAnXFxuPHNlY3Rpb24gYmVnaW49YmFja2xvZyAvPic7XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShgLyogJHtwYXJhbXMudGl0bGV9ICovICR7cmVhc29ufWApO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5kaXNhYmxlTGluayk7XG5cdFx0fSxcblx0XHRkaXNhYmxlTGluazogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQkKGBzdHJvbmcgYVtocmVmPSMke3BhcmFtcy5zZWN0aW9ufV0gc3BhbmApLmNzcygnY29sb3InLCAnIzgwODA4MCcpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuY2xvc2UsICdjbG9zZScpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWNvbmZpZy5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjb25maWcoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVjb25maWcuanM6IFByZWZlcmVuY2VzIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IEFkZHMgY29uZmlndXJhdGlvbiBmb3JtIHRvIEhlbHA6VHdpbmtsZS/lj4LmlbDorr7nva4sXG5cdCAqIGFuZCBhZGRzIGFuIGFkIGJveCB0byB0aGUgdG9wIG9mIHVzZXIgc3VicGFnZXMgYmVsb25naW5nIHRvIHRoZVxuXHQgKiBjdXJyZW50bHkgbG9nZ2VkLWluIHVzZXIgd2hpY2ggZW5kIGluICcuanMnXG5cdCAqIEFjdGl2ZSBvbjogV2hhdCBJIGp1c3Qgc2FpZC4gWWVhaC5cblx0ICovXG5cdFR3aW5rbGUuY29uZmlnID0ge307XG5cdFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zID0ge1xuXHRcdHllczogd2luZG93LndnVUxTKCfmsLjkuYXliqDlhaXliLDnm5Hop4bliJfooagnLCAn5rC45LmF5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0bm86IHdpbmRvdy53Z1VMUygn5LiN5Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+S4jeWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdGRlZmF1bHQ6IHdpbmRvdy53Z1VMUygn6YG15a6I56uZ54K56K6+572uJywgJ+mBteWuiOermem7nuioreWumicpLFxuXHRcdCcxIHdlZWsnOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWIsOebkeinhuWIl+ihqDHlkagnLCAn5Yqg5YWl5Yiw55uj6KaW5riF5ZauMemAsScpLFxuXHRcdCcxIG1vbnRoJzogd2luZG93LndnVUxTKCfliqDlhaXliLDnm5Hop4bliJfooagx5Liq5pyIJywgJ+WKoOWFpeWIsOebo+imlua4heWWrjHlgIvmnIgnKSxcblx0XHQnMyBtb250aHMnOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWIsOebkeinhuWIl+ihqDPkuKrmnIgnLCAn5Yqg5YWl5Yiw55uj6KaW5riF5ZauM+WAi+aciCcpLFxuXHRcdCc2IG1vbnRocyc6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5Yiw55uR6KeG5YiX6KGoNuS4quaciCcsICfliqDlhaXliLDnm6PoppbmuIXllq425YCL5pyIJyksXG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMgPSB7XG5cdFx0Y3NkQ3JpdGVyaWE6IHtcblx0XHRcdGRiOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdGcxOiAnRzEnLFxuXHRcdFx0ZzI6ICdHMicsXG5cdFx0XHRnMzogJ0czJyxcblx0XHRcdGc0OiAnRzQnLFxuXHRcdFx0ZzU6ICdHNScsXG5cdFx0XHRnNjogJ0c2Jyxcblx0XHRcdGc3OiAnRzcnLFxuXHRcdFx0Zzg6ICdHOCcsXG5cdFx0XHRnOTogJ0c5Jyxcblx0XHRcdGExOiAnQTEnLFxuXHRcdFx0YTI6ICdBMicsXG5cdFx0XHRhMzogJ0EzJyxcblx0XHRcdG8xOiAnTzEnLFxuXHRcdFx0bzI6ICdPMicsXG5cdFx0XHRvMzogJ08zJyxcblx0XHRcdGYxOiAnRjEnLFxuXHRcdFx0ZjI6ICdGMicsXG5cdFx0XHRmMzogJ0YzJyxcblx0XHRcdGY0OiAnRjQnLFxuXHRcdFx0ZjU6ICdGNScsXG5cdFx0XHRyMTogJ1IxJyxcblx0XHRcdHIyOiAnUjInLFxuXHRcdH0sXG5cdFx0Y3NkQ3JpdGVyaWFEaXNwbGF5T3JkZXI6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdF0sXG5cdFx0Y3NkQ3JpdGVyaWFOb3RpZmljYXRpb246IHtcblx0XHRcdGRiOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdGcxOiAnRzEnLFxuXHRcdFx0ZzI6ICdHMicsXG5cdFx0XHRnMzogJ0czJyxcblx0XHRcdGc0OiAnRzQnLFxuXHRcdFx0ZzU6ICdHNScsXG5cdFx0XHRnNjogJ0c2Jyxcblx0XHRcdGc3OiAnRzcnLFxuXHRcdFx0Zzg6ICdHOCcsXG5cdFx0XHRnOTogJ0c5Jyxcblx0XHRcdGExOiAnQTEnLFxuXHRcdFx0YTI6ICdBMicsXG5cdFx0XHRhMzogJ0EzJyxcblx0XHRcdG8xOiAnTzEnLFxuXHRcdFx0bzI6ICdPMicsXG5cdFx0XHRvMzogJ08zJyxcblx0XHRcdGYxOiAnRjEnLFxuXHRcdFx0ZjI6ICdGMicsXG5cdFx0XHRmMzogJ0YzJyxcblx0XHRcdGY0OiAnRjQnLFxuXHRcdFx0ZjU6ICdGNScsXG5cdFx0XHRyMTogJ1IxJyxcblx0XHRcdHIyOiAnUjInLFxuXHRcdH0sXG5cdFx0Y3NkQ3JpdGVyaWFOb3RpZmljYXRpb25EaXNwbGF5T3JkZXI6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdF0sXG5cdFx0Y3NkQW5kRElDcml0ZXJpYToge1xuXHRcdFx0ZGI6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ55CG55SxJywgJ+iHquiogueQhueUsScpLFxuXHRcdFx0ZzE6ICdHMScsXG5cdFx0XHRnMjogJ0cyJyxcblx0XHRcdGczOiAnRzMnLFxuXHRcdFx0ZzQ6ICdHNCcsXG5cdFx0XHRnNTogJ0c1Jyxcblx0XHRcdGc2OiAnRzYnLFxuXHRcdFx0Zzc6ICdHNycsXG5cdFx0XHRnODogJ0c4Jyxcblx0XHRcdGc5OiAnRzknLFxuXHRcdFx0YTE6ICdBMScsXG5cdFx0XHRhMjogJ0EyJyxcblx0XHRcdGEzOiAnQTMnLFxuXHRcdFx0bzE6ICdPMScsXG5cdFx0XHRvMjogJ08yJyxcblx0XHRcdG8zOiAnTzMnLFxuXHRcdFx0ZjE6ICdGMScsXG5cdFx0XHRmMjogJ0YyJyxcblx0XHRcdGYzOiAnRjMnLFxuXHRcdFx0ZjQ6ICdGNCcsXG5cdFx0XHRmNTogJ0Y1Jyxcblx0XHRcdHIxOiAnUjEnLFxuXHRcdFx0cjI6ICdSMicsXG5cdFx0fSxcblx0XHRjc2RBbmRESUNyaXRlcmlhRGlzcGxheU9yZGVyOiBbXG5cdFx0XHQnZGInLFxuXHRcdFx0J2cxJyxcblx0XHRcdCdnMicsXG5cdFx0XHQnZzMnLFxuXHRcdFx0J2c0Jyxcblx0XHRcdCdnNScsXG5cdFx0XHQnZzYnLFxuXHRcdFx0J2c3Jyxcblx0XHRcdCdnOCcsXG5cdFx0XHQnZzknLFxuXHRcdFx0J2ExJyxcblx0XHRcdCdhMicsXG5cdFx0XHQnYTMnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdFx0J2YxJyxcblx0XHRcdCdmMicsXG5cdFx0XHQnZjMnLFxuXHRcdFx0J2Y0Jyxcblx0XHRcdCdmNScsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRdLFxuXHRcdHhmZENyaXRlcmlhOiB7XG5cdFx0XHRkZWxldGU6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0bWVyZ2U6IHdpbmRvdy53Z1VMUygn5ZCI5bm2JywgJ+WQiOS9tScpLFxuXHRcdFx0ZndkY3NkOiB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKSxcblx0XHRcdGZhbWU6IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpLFxuXHRcdFx0c3Vic3R1Yjogd2luZG93LndnVUxTKCfmibnph4/lsI/lsI/kvZzlk4Hmj5DliKAnLCAn5om55qyh5bCP5bCP5L2c5ZOB5o+Q5YiqJyksXG5cdFx0XHRiYXRjaDogd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyksXG5cdFx0fSxcblx0XHR4ZmRDcml0ZXJpYURpc3BsYXlPcmRlcjogWydkZWxldGUnLCAnbWVyZ2UnLCAnZndkY3NkJywgJ2ZhbWUnLCAnc3Vic3R1YicsICdiYXRjaCddLFxuXHRcdG5hbWVzcGFjZXNOb1NwZWNpYWw6IHtcblx0XHRcdDA6IHdpbmRvdy53Z1VMUygn77yI5p2h55uu77yJJywgJ++8iOaineebru+8iScpLFxuXHRcdFx0MTogJ1RhbGsnLFxuXHRcdFx0MjogJ1VzZXInLFxuXHRcdFx0MzogJ1VzZXIgdGFsaycsXG5cdFx0XHQ0OiAnTElCJyxcblx0XHRcdDU6ICdMSUIgdGFsaycsXG5cdFx0XHQ2OiAnRmlsZScsXG5cdFx0XHQ3OiAnRmlsZSB0YWxrJyxcblx0XHRcdDg6ICdNZWRpYVdpa2knLFxuXHRcdFx0OTogJ01lZGlhV2lraSB0YWxrJyxcblx0XHRcdDEwOiAnVGVtcGxhdGUnLFxuXHRcdFx0MTE6ICdUZW1wbGF0ZSB0YWxrJyxcblx0XHRcdDEyOiAnSGVscCcsXG5cdFx0XHQxMzogJ0hlbHAgdGFsaycsXG5cdFx0XHQxNDogJ0NhdGVnb3J5Jyxcblx0XHRcdDE1OiAnQ2F0ZWdvcnkgdGFsaycsXG5cdFx0XHQyNzQ6ICdXaWRnZXQnLFxuXHRcdFx0Mjc1OiAnV2lkZ2V0IHRhbGsnLFxuXHRcdFx0MzAwOiAnRmFubWFkZScsXG5cdFx0XHQzMDE6ICdGYW5tYWRlIHRhbGsnLFxuXHRcdFx0MzAyOiAnRHJhZnQnLFxuXHRcdFx0MzAzOiAnRHJhZnQgdGFsaycsXG5cdFx0XHQzMDQ6ICdTTVdEYXRhJyxcblx0XHRcdDMwNTogJ1NNV0RhdGEgdGFsaycsXG5cdFx0XHQ4Mjk6ICdNb2R1bGUgdGFsaycsXG5cdFx0fSxcblx0fTtcblx0LyoqXG5cdCAqIFNlY3Rpb24gZW50cnkgZm9ybWF0OlxuXHQgKlxuXHQgKiB7XG5cdCAqICAgdGl0bGU6IDxodW1hbi1yZWFkYWJsZSBzZWN0aW9uIHRpdGxlPixcblx0ICogICBtb2R1bGU6IDxuYW1lIG9mIHRoZSBhc3NvY2lhdGVkIG1vZHVsZSwgdXNlZCB0byBsaW5rIHRvIHNlY3Rpb25zPixcblx0ICogICBhZG1pbk9ubHk6IDx0cnVlIGZvciBhZG1pbi1vbmx5IHNlY3Rpb25zPixcblx0ICogICBoaWRkZW46IDx0cnVlIGZvciBhZHZhbmNlZCBwcmVmZXJlbmNlcyB0aGF0IHJhcmVseSBuZWVkIHRvIGJlIGNoYW5nZWQgLSB0aGV5IGNhbiBzdGlsbCBiZSBtb2RpZmllZCBieSBtYW51YWxseSBlZGl0aW5nIHR3aW5rbGVvcHRpb25zLmpzPixcblx0ICogICBwcmVmZXJlbmNlczogW1xuXHQgKiAgICAge1xuXHQgKiAgICAgICBuYW1lOiA8VHdpbmtsZUNvbmZpZyBwcm9wZXJ0eSBuYW1lPixcblx0ICogICAgICAgbGFiZWw6IDxodW1hbi1yZWFkYWJsZSBzaG9ydCBkZXNjcmlwdGlvbiAtIHVzZWQgYXMgYSBmb3JtIGxhYmVsPixcblx0ICogICAgICAgaGVscHRpcDogPChvcHRpb25hbCkgaHVtYW4tcmVhZGFibGUgdGV4dCAodXNpbmcgdmFsaWQgSFRNTCkgdGhhdCBjb21wbGVtZW50cyB0aGUgZGVzY3JpcHRpb24sIGxpa2UgbGltaXRzLCB3YXJuaW5ncywgZXRjLj5cblx0ICogICAgICAgYWRtaW5Pbmx5OiA8dHJ1ZSBmb3IgYWRtaW4tb25seSBwcmVmZXJlbmNlcz4sXG5cdCAqICAgICAgIHR5cGU6IDxzdHJpbmd8Ym9vbGVhbnxpbnRlZ2VyfGVudW18c2V0fGN1c3RvbUxpc3Q+IChjdXN0b21MaXN0IHN0b3JlcyBhbiBhcnJheSBvZiBKU09OIG9iamVjdHMgeyB2YWx1ZSwgbGFiZWwgfSksXG5cdCAqICAgICAgIGVudW1WYWx1ZXM6IDxmb3IgdHlwZSA9IFwiZW51bVwiOiBhIEpTT04gb2JqZWN0IHdoZXJlIHRoZSBrZXlzIGFyZSB0aGUgaW50ZXJuYWwgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgYXJlIGh1bWFuLXJlYWRhYmxlIHN0cmluZ3M+LFxuXHQgKiAgICAgICBzZXRWYWx1ZXM6IDxmb3IgdHlwZSA9IFwic2V0XCI6IGEgSlNPTiBvYmplY3Qgd2hlcmUgdGhlIGtleXMgYXJlIHRoZSBpbnRlcm5hbCBuYW1lcyBhbmQgdGhlIHZhbHVlcyBhcmUgaHVtYW4tcmVhZGFibGUgc3RyaW5ncz4sXG5cdCAqICAgICAgIHNldERpc3BsYXlPcmRlcjogPChvcHRpb25hbCkgZm9yIHR5cGUgPSBcInNldFwiOiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBrZXlzIG9mIHNldFZhbHVlcyAoYXMgc3RyaW5ncykgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgZGlzcGxheWVkPixcblx0ICogICAgICAgY3VzdG9tTGlzdFZhbHVlVGl0bGU6IDxmb3IgdHlwZSA9IFwiY3VzdG9tTGlzdFwiOiB0aGUgaGVhZGluZyBmb3IgdGhlIGxlZnQgXCJ2YWx1ZVwiIGNvbHVtbiBpbiB0aGUgY3VzdG9tIGxpc3QgZWRpdG9yPixcblx0ICogICAgICAgY3VzdG9tTGlzdExhYmVsVGl0bGU6IDxmb3IgdHlwZSA9IFwiY3VzdG9tTGlzdFwiOiB0aGUgaGVhZGluZyBmb3IgdGhlIHJpZ2h0IFwibGFiZWxcIiBjb2x1bW4gaW4gdGhlIGN1c3RvbSBsaXN0IGVkaXRvcj5cblx0ICogICAgIH0sXG5cdCAqICAgICAuIC4gLlxuXHQgKiAgIF1cblx0ICogfSxcblx0ICogLiAuIC5cblx0ICpcblx0ICovXG5cdFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zID0gW1xuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+W4uOinhCcsICfluLjopo8nKSxcblx0XHRcdG1vZHVsZTogJ2dlbmVyYWwnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy51c2VyVGFsa1BhZ2VNb2RlIG1heSB0YWtlIGFyZ3VtZW50czpcblx0XHRcdFx0Ly8gJ3dpbmRvdyc6IG9wZW4gYSBuZXcgd2luZG93LCByZW1lbWJlciB0aGUgb3BlbmVkIHdpbmRvd1xuXHRcdFx0XHQvLyAndGFiJzogb3BlbnMgaW4gYSBuZXcgdGFiLCBpZiBwb3NzaWJsZS5cblx0XHRcdFx0Ly8gJ2JsYW5rJzogZm9yY2Ugb3BlbiBpbiBhIG5ldyB3aW5kb3csIGV2ZW4gaWYgc3VjaCBhIHdpbmRvdyBleGlzdHNcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd1c2VyVGFsa1BhZ2VNb2RlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPopoHmiZPlvIDnlKjmiLforqjorrrpobXml7YnLCAn55W26KaB5omT6ZaL5L2/55So6ICF6KiO6KuW6aCB5pmCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdHdpbmRvdzogd2luZG93LndnVUxTKCflnKjnqpflj6PkuK3vvIzmm7/mjaLmiJDlhbblroPnlKjmiLflr7nor53pobUnLCAn5Zyo55W25YmN5YiG6aCB77yM5pu/5o+b5oiQ5YW25a6D55So5oi26KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHR0YWI6IHdpbmRvdy53Z1VMUygn5Zyo5paw5qCH562+6aG15LitJywgJ+WcqOaWsOWIhumggeS4rScpLFxuXHRcdFx0XHRcdFx0Ymxhbms6IHdpbmRvdy53Z1VMUygn5Zyo5YWo5paw55qE56qX5Y+j5LitJywgJ+WcqOaWsOimlueql+S4rScpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGlhbG9nTGFyZ2VGb250IChib29sZWFuKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RpYWxvZ0xhcmdlRm9udCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZyoVHdpbmtsZeWvueivneahhuS4reS9v+eUqOWkp+WPt+Wtl+S9kycsICflnKhUd2lua2xl5bCN6Kmx5pa55aGK5Lit5L2/55So5aSn6Jmf5a2X5Z6LJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlLmNvbmZpZy5kaXNhYmxlZE1vZHVsZXMgKGFycmF5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGVkTW9kdWxlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWz6Zet5oyH5a6a55qEVHdpbmtsZeaooeWdlycsICfpl5zplonmjIflrprnmoRUd2lua2xl5qih57WEJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOWcqOatpOmAieaLqeeahOWKn+iDveWwhuaXoOazleS9v+eUqO+8jOWPlua2iOmAieaLqeS7pemHjeaWsOWQr+eUqOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Zyo5q2k6YG45pOH55qE5Yqf6IO95bCH54Sh5rOV5L2/55So77yM5Y+W5raI6YG45pOH5Lul6YeN5paw5ZWf55So5Yqf6IO944CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRhcnY6IHdpbmRvdy53Z1VMUygn5ZGK54q2JywgJ+WRiueLgCcpLFxuXHRcdFx0XHRcdFx0d2FybjogJ+itpuWRiicsXG5cdFx0XHRcdFx0XHRibG9jazogd2luZG93LndnVUxTKCflsIHnpoEnLCAn5bCB6Y6WJyksXG5cdFx0XHRcdFx0XHR0YWxrYmFjazogJ+mAmuWRiicsXG5cdFx0XHRcdFx0XHRzcGVlZHk6IHdpbmRvdy53Z1VMUygn6YCf5YigJywgJ+mAn+WIqicpLFxuXHRcdFx0XHRcdFx0Y29weXZpbzogd2luZG93LndnVUxTKCfkvrXmnYMnLCAn5L615qyKJyksXG5cdFx0XHRcdFx0XHR4ZmQ6IHdpbmRvdy53Z1VMUygn5o+Q5YigJywgJ+aPkOWIqicpLFxuXHRcdFx0XHRcdFx0aW1hZ2U6IHdpbmRvdy53Z1VMUygn5Zu+5p2DJywgJ+WcluasiicpLFxuXHRcdFx0XHRcdFx0cHJvdGVjdDogd2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0XHRcdFx0c3R1YjogJ+Wwj+S9nOWTgScsXG5cdFx0XHRcdFx0XHRkaWZmOiB3aW5kb3cud2dVTFMoJ+W3ruW8gicsICflt67nlbAnKSxcblx0XHRcdFx0XHRcdHVubGluazogd2luZG93LndnVUxTKCfpk77lhaUnLCAn6YCj5YWlJyksXG5cdFx0XHRcdFx0XHRmbHVmZjogJ+WbnumAgCcsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZS5jb25maWcuZGlzYWJsZWRTeXNvcE1vZHVsZXMgKGFycmF5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGVkU3lzb3BNb2R1bGVzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhbPpl63mjIflrprnmoRUd2lua2xl566h55CG5ZGY5qih5Z2XJywgJ+mXnOmWieaMh+WumueahFR3aW5rbGXnrqHnkIblk6HmqKHntYQnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Zyo5q2k6YCJ5oup55qE5Yqf6IO95bCG5peg5rOV5L2/55So77yM5Y+W5raI6YCJ5oup5Lul6YeN5paw5ZCv55So5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCfmgqjlnKjmraTpgbjmk4fnmoTlip/og73lsIfnhKHms5Xkvb/nlKjvvIzlj5bmtojpgbjmk4fku6Xph43mlrDllZ/nlKjlip/og73jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRiYXRjaGRlbGV0ZTogd2luZG93LndnVUxTKCfmibnliKAnLCAn5om55YiqJyksXG5cdFx0XHRcdFx0XHRiYXRjaHVuZGVsZXRlOiB3aW5kb3cud2dVTFMoJ+aJueWkjScsICfmibnlvqknKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WRiueKticsICflkYrni4AnKSxcblx0XHRcdG1vZHVsZTogJ2FydicsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwaVdhdGNoUmVwb3J0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5HotbflgoDlhKHosIPmn6Xml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn55m86LW35YKA5YSh6Kq/5p+l5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WwgeemgeeUqOaItycsICflsIHpjpbkvb/nlKjogIUnKSxcblx0XHRcdG1vZHVsZTogJ2Jsb2NrJyxcblx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFRvQmxvY2s2NCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gV2hldGhlciB0byBkZWZhdWx0IHRvIGp1c3QgYmxvY2tpbmcgdGhlIC82NCBvbiBvciBvZmZcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkZWZhdWx0VG9CbG9jazY0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflr7nkuo5JUHY25Zyw5Z2A77yM6buY6K6k6YCJ5oup5bCB56aBLzY05q61JywgJ+WwjeaWvElQdjblnLDlnYDvvIzpoJDoqK3pgbjmk4flsIHpjpYvNjTmrrUnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFRvUGFydGlhbEJsb2NrcyAoYm9vbGVhbilcblx0XHRcdFx0Ly8gV2hldGhlciB0byBkZWZhdWx0IHBhcnRpYWwgYmxvY2tzIG9uIG9yIG9mZlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlZmF1bHRUb1BhcnRpYWxCbG9ja3MnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJk+W8gOWwgeemgeiPnOWNleaXtum7mOiupOmAieaLqemDqOWIhuWwgeemgScsICfmiZPplovlsIHpjpbpgbjllq7mmYLpoJDoqK3pgbjmk4fpg6jliIblsIHpjpYnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hCbG9ja05vdGljZXMgKHN0cmluZylcblx0XHRcdFx0Ly8gV2F0Y2hsaXN0IHNldHRpbmcgZm9yIHRoZSBwYWdlIHdoaWNoIGhhcyBiZWVuIGRpc3BhdGNoZWQgYW4gd2FybmluZyBvciBub3RpY2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaEJsb2NrTm90aWNlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflj5HpgIHlsIHnpoHmqKHmnb/ml7bliqDlhaXnlKjmiLforqjorrrpobXliLDnm5Hop4bliJfooagnLFxuXHRcdFx0XHRcdFx0J+eZvOmAgeWwgemOluaooeadv+aZguWKoOWFpeS9v+eUqOiAheiojuirlumggeWIsOebo+imlua4heWWridcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjdXN0b21CbG9ja1JlYXNvbkxpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieWwgeemgeeQhueUsScsICfoh6roqILlsIHpjpbnkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5Yqg5YWl5bi455So55qE5bCB56aB55CG55Sx44CC6Ieq5a6a5LmJ55qE5bCB56aB55CG55Sx5Lya5Ye6546w5Zyo5LiA6Iis55qE5bCB56aB55CG55Sx5LiL5pa544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XliqDlhaXluLjnlKjnmoTlsIHpjpbnkIbnlLHjgILoh6roqILnmoTlsIHpjpbnkIbnlLHmnIPlh7rnj77lnKjkuIDoiKznmoTlsIHpjpbnkIbnlLHkuIvmlrnjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkvb/nlKjlsIHnpoHmqKHmnb/vvIjpu5jorqTkuLogdXctYmxvY2sx77yJJyxcblx0XHRcdFx0XHRcdCfkvb/nlKjlsIHpjpbmqKHmnb/vvIjpoJDoqK3ngrogdXctYmxvY2sx77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfigJznlLHkuo7igKbmgqjlt7LooqvlsIHnpoHigJ3lj4rlsIHnpoHml6Xlv5fnkIbnlLEnLFxuXHRcdFx0XHRcdFx0J+OAjOeUseaWvOKApuaCqOW3suiiq+WwgemOluOAjeWPiuWwgemOluaXpeiqjOeQhueUsSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WbvueJh+WIoOmZpCcsICflnJbniYfliKrpmaQnKSxcblx0XHRcdG1vZHVsZTogJ2ltYWdlJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubm90aWZ5VXNlck9uRGVsaSAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYgdGhlIHVzZXIgc2hvdWxkIGJlIG5vdGlmaWVkIGFmdGVyIHBsYWNpbmcgYSBmaWxlIGRlbGV0aW9uIHRhZ1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ25vdGlmeVVzZXJPbkRlbGknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOmAmuefpeWIm+W7uuiAheKAnScsICfpoJDoqK3li77pgbjjgIzpgJrnn6Xlu7rnq4vogIXjgI0nKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVsaVdhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgdGFnZ2VkIGZvciBkZWxldGlvbi5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkZWxpV2F0Y2hQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDlm77niYfml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5ZyW54mH5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlbGlXYXRjaFVzZXIgKHN0cmluZylcblx0XHRcdFx0Ly8gVGhlIHdhdGNobGlzdCBzZXR0aW5nIG9mIHRoZSB1c2VyIHRhbGsgcGFnZSBpZiBhIG5vdGlmaWNhdGlvbiBpcyBwbGFjZWQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsaVdhdGNoVXNlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5Zu+54mH5pe25Yqg5YWl5Yib5bu66ICF6K6o6K666aG15Yiw55uR6KeG5YiX6KGoJywgJ+aomeiomOWclueJh+aZguWKoOWFpeW7uueri+iAheiojuirlumggeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHRtb2R1bGU6ICdwcm90ZWN0Jyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hSZXF1ZXN0ZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2i5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+iri+axguS/neitt+mggemdouaZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFBQVGFnZ2VkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOS/neaKpOaooeadv+aXtuWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfmqJnoqJjkv53orbfmqKHmnb/mmYLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hQcm90ZWN0ZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+d5oqk5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+S/neitt+aZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XlnKjkv53miqTlkI7kuZ/moIforrDpobXpnaLvvIzliJnkvb/nlKjmoIforrDpobXpnaLnmoTlj4LmlbDorr7nva7jgIInLFxuXHRcdFx0XHRcdFx0J+iLpeWcqOS/neitt+W+jOS5n+aomeiomOmggemdou+8jOWJh+S9v+eUqOaomeiomOmggemdoueahOWBj+WlveioreWumuOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6ICflm57pgIAnLFxuXHRcdFx0Ly8gdHdpbmtsZWZsdWZmIG1vZHVsZVxuXHRcdFx0bW9kdWxlOiAnZmx1ZmYnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5hdXRvTWVudUFmdGVyUm9sbGJhY2sgKGJvb2wpXG5cdFx0XHRcdC8vIE9wdGlvbiB0byBhdXRvbWF0aWNhbGx5IG9wZW4gdGhlIHdhcm5pbmcgbWVudSBpZiB0aGUgdXNlciB0YWxrIHBhZ2UgaXMgb3BlbmVkIHBvc3QtcmV2ZXJzaW9uXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYXV0b01lbnVBZnRlclJvbGxiYWNrJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqFR3aW5rbGXlm57pgIDlkI7oh6rliqjmiZPlvIDnlKjmiLforqjorrrpobXkuIrnmoRUd2lua2xl6K2m5ZGK6I+c5Y2VJyxcblx0XHRcdFx0XHRcdCflnKhUd2lua2xl5Zue6YCA5b6M6Ieq5YuV5omT6ZaL5L2/55So6ICF6KiO6KuW6aCB5LiK55qEVHdpbmtsZeitpuWRiumBuOWWridcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5LuF5Zyo6YCJ5Y+W5LiL5pa55a+55bqU5qGG5pe25omN5omn6KGMJywgJ+WDheWcqOmBuOWPluS4i+aWueWwjeaHieahhuaZguaJjeWft+ihjCcpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5vcGVuVGFsa1BhZ2UgKGFycmF5KVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IGluIG9wZW5pbmcgb2YgdGFsayBwYWdlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnb3BlblRhbGtQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjov5nkupvnsbvlnovnmoTlm57pgIDlkI7miZPlvIDnlKjmiLforqjorrrpobUnLCAn5Zyo6YCZ5Lqb6aGe5Yil55qE5Zue6YCA5b6M5omT6ZaL5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRub3JtOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgCcsICfluLjopo/lm57pgIAnKSxcblx0XHRcdFx0XHRcdHZhbmQ6IHdpbmRvdy53Z1VMUygn56C05Z2P5Zue6YCAJywgJ+egtOWjnuWbnumAgCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcub3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0IChib29sKVxuXHRcdFx0XHQvLyBEZWZpbmVzIGlmIHRhbGsgcGFnZSBzaG91bGQgYmUgb3BlbmVkIHdoZW4gY2FsbGluZyByZXZlcnQgZnJvbSBjb250cmlicyBvciByZWNlbnQgY2hhbmdlcyBwYWdlcy4gSWYgc2V0IHRvIHRydWUsIG9wZW5UYWxrUGFnZSBkZWZpbmVzIHRoZW4gaWYgdGFsayBwYWdlIHdpbGwgYmUgb3BlbmVkLlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29wZW5UYWxrUGFnZU9uQXV0b1JldmVydCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjku47nlKjmiLfotKHnjK7lj4rmnIDov5Hmm7TmlLnkuK3lj5Hotbflm57pgIDml7bmiZPlvIDnlKjmiLforqjorrrpobUnLFxuXHRcdFx0XHRcdFx0J+WcqOW+nuS9v+eUqOiAheiyoueNu+WPiui/keacn+iuiuabtOS4reeZvOi1t+WbnumAgOaZguaJk+mWi+S9v+eUqOiAheiojuirlumggSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5b2T5a6D5omT5byA5pe277yM5L6d6LWW5LiK5LiA5Liq6K6+572u44CCJywgJ+eVtuWug+aJk+mWi+aZgu+8jOS+neiztOS4iuS4gOWAi+ioreWumuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5yb2xsYmFja0luUGxhY2UgKGJvb2wpXG5cdFx0XHRcdC8vXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncm9sbGJhY2tJblBsYWNlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqOS7jueUqOaIt+i0oeeMruWPiuacgOi/keabtOaUueS4reWPkei1t+WbnumAgOaXtuS4jeWIt+aWsOmhtemdoicsXG5cdFx0XHRcdFx0XHQn5Zyo5b6e5L2/55So6ICF6LKi54275Y+K6L+R5pyf6K6K5pu05Lit55m86LW35Zue6YCA5pmC5LiN6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+W9k+Wug+aJk+W8gOaXtu+8jFR3aW5rbGXlsIbkuI3kvJrlnKjku47nlKjmiLfotKHnjK7lj4rmnIDov5Hmm7TmlLnkuK3lj5Hotbflm57pgIDml7bliLfmlrDpobXpnaLvvIzlhYHorrjmgqjkuIDmrKHmgKflm57pgIDlpJrkuKrnvJbovpHjgIInLFxuXHRcdFx0XHRcdFx0J+eVtuWug+aJk+mWi+aZgu+8jFR3aW5rbGXlsIfkuI3mnIPlnKjlvp7kvb/nlKjogIXosqLnjbvlj4rov5HmnJ/orormm7TkuK3nmbzotbflm57pgIDmmYLph43mlrDmlbTnkIbpoIHpnaLvvIzlhYHoqLHmgqjkuIDmrKHmgKflm57pgIDlpJrlgIvnt6jovK/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubWFya1JldmVydGVkUGFnZXNBc01pbm9yIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIHJlc3VsdCBpbiBtYXJraW5nIGVkaXQgYXMgbWlub3Jcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3InLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+Wwhui/meS6m+exu+Wei+eahOWbnumAgOagh+iusOS4uuWwj+S/ruaUuScsICflsIfpgJnkupvpoZ7liKXnmoTlm57pgIDmqJnoqJjngrrlsI/kv67mlLknKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdG5vcm06IHdpbmRvdy53Z1VMUygn5bi46KeE5Zue6YCAJywgJ+W4uOimj+WbnumAgCcpLFxuXHRcdFx0XHRcdFx0dmFuZDogd2luZG93LndnVUxTKCfnoLTlnY/lm57pgIAnLCAn56C05aOe5Zue6YCAJyksXG5cdFx0XHRcdFx0XHR0b3Jldjogd2luZG93LndnVUxTKCfigJzmgaLlpI3mraTniYjmnKzigJ0nLCAn44CM5oGi5b6p5q2k54mI5pys44CNJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy53YXRjaFJldmVydGVkUGFnZXMgKGFycmF5KVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IGluIGZvcmNlZCBhZGRpdGlvbiB0byB3YXRjaGxpc3Rcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFJldmVydGVkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aKiui/meS6m+exu+Wei+eahOWbnumAgOWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfmiorpgJnkupvpoZ7liKXnmoTlm57pgIDliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdG5vcm06IHdpbmRvdy53Z1VMUygn5bi46KeE5Zue6YCAJywgJ+W4uOimj+WbnumAgCcpLFxuXHRcdFx0XHRcdFx0dmFuZDogd2luZG93LndnVUxTKCfnoLTlnY/lm57pgIAnLCAn56C05aOe5Zue6YCAJyksXG5cdFx0XHRcdFx0XHR0b3Jldjogd2luZG93LndnVUxTKCfigJzmgaLlpI3mraTniYjmnKzigJ0nLCAn44CM5oGi5b6p5q2k54mI5pys44CNJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy53YXRjaFJldmVydGVkRXhwaXJ5XG5cdFx0XHRcdC8vIElmIGFueSBvZiB0aGUgYWJvdmUgaXRlbXMgYXJlIHNlbGVjdGVkLCB3aGV0aGVyIHRvIGV4cGlyZSB0aGUgd2F0Y2hcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFJldmVydGVkRXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPlm57pgIDpobXpnaLml7bvvIzliqDlhaXliLDnm5Hop4bliJfooajnmoTmnJ/pmZAnLCAn55W25Zue6YCA6aCB6Z2i5pmC77yM5Yqg5YWl5Yiw55uj6KaW5riF5Zau55qE5pyf6ZmQJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIElmIHRvIG9mZmVyIGEgcHJvbXB0IGZvciBleHRyYSBzdW1tYXJ5IHJlYXNvbiBmb3Igbm9ybWFsIHJldmVydHMsIGRlZmF1bHQgdG8gdHJ1ZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgOaXtuivoumXrueQhueUsScsICfluLjopo/lm57pgIDmmYLoqaLllY/nkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+KAnOW4uOinhOKAneWbnumAgOaYr+S4remXtOeahOmCo+S4qlvlm57pgIBd6ZO+5o6l44CCJywgJ+OAjOW4uOimj+OAjeWbnumAgOaYr+S4remWk+eahOmCo+WAi1vlm57pgIBd6YCj57WQ44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2NvbmZpcm1PbkZsdWZmJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm57pgIDliY3opoHmsYLnoa7orqTvvIjmiYDmnInorr7lpIfvvIknLCAn5Zue6YCA5YmN6KaB5rGC56K66KqN77yI5omA5pyJ6KOd572u77yJJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WvueS6juS9v+eUqOenu+WKqOiuvuWkh+eahOeUqOaIt++8jOaIluiAheaEj+W/l+S4jeWdmuWumueahOOAgicsXG5cdFx0XHRcdFx0XHQn5bCN5pa85L2/55So6KGM5YuV6KOd572u55qE5L2/55So6ICF77yM5oiW6ICF5oSP5b+X5LiN5aCF5a6a55qE44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnNob3dSb2xsYmFja0xpbmtzIChhcnJheSlcblx0XHRcdFx0Ly8gV2hlcmUgVHdpbmtsZSBzaG91bGQgc2hvdyByb2xsYmFjayBsaW5rczpcblx0XHRcdFx0Ly8gZGlmZiwgb3RoZXJzLCBtaW5lLCBjb250cmlicywgaGlzdG9yeSwgcmVjZW50XG5cdFx0XHRcdC8vIE5vdGUgZnJvbSBUVE86IHxjb250cmlic3wgc2VlbXMgdG8gYmUgZXF1YWwgdG8gfG90aGVyc3wgKyB8bWluZXwsIGkuZS4gcmVkdW5kYW50LCBzbyBJIGxlZnQgaXQgb3V0IGhlcmVzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc2hvd1JvbGxiYWNrTGlua3MnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOi/meS6m+mhtemdouS4iuaYvuekuuWbnumAgOmTvuaOpScsICflnKjpgJnkupvpoIHpnaLkuIrpoa/npLrlm57pgIDpgKPntZAnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGRpZmY6IHdpbmRvdy53Z1VMUygn5beu5byCJywgJ+W3rueVsCcpLFxuXHRcdFx0XHRcdFx0aGlzdG9yeTogd2luZG93LndnVUxTKCfljoblj7LorrDlvZUnLCAn5q235Y+y6KiY6YyEJyksXG5cdFx0XHRcdFx0XHRvdGhlcnM6IHdpbmRvdy53Z1VMUygn5YW25a6D55So5oi355qE6LSh54yuJywgJ+WFtuWug+S9v+eUqOiAheeahOiyoueNuycpLFxuXHRcdFx0XHRcdFx0bWluZTogd2luZG93LndnVUxTKCfmiJHnmoTotKHnjK4nLCAn5oiR55qE6LKi5427JyksXG5cdFx0XHRcdFx0XHRyZWNlbnRjaGFuZ2VzOiB3aW5kb3cud2dVTFMoJ+acgOi/keabtOaUuScsICfov5HmnJ/orormm7QnKSxcblx0XHRcdFx0XHRcdHJlY2VudGNoYW5nZXNsaW5rZWQ6IHdpbmRvdy53Z1VMUygn55u45YWz5pu05pS5JywgJ+ebuOmXnOiuiuabtCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tUmV2ZXJ0U3VtbWFyeScsXG5cdFx0XHRcdFx0bGFiZWw6ICflm57pgIDnkIbnlLEnLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjmn6XnnIvlt67lvILml7blj6/pgInvvIzku4XlloTmhI/lm57pgIDjgIHluLjop4Tlm57pgIDjgIHmgaLlpI3mraTniYjmnKwnLFxuXHRcdFx0XHRcdFx0J+WcqOaqouimluW3rueVsOaZguWPr+mBuO+8jOWDheWWhOaEj+WbnumAgOOAgeW4uOimj+WbnumAgOOAgeaBouW+qeatpOeJiOacrCdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogJ+eQhueUsScsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpCcsICflv6vpgJ/liKrpmaQnKSxcblx0XHRcdG1vZHVsZTogJ3NwZWVkeScsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwZWVkeVNlbGVjdGlvblN0eWxlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4DkuYjml7blgJnmiafooYzmoIforrDmiJbliKDpmaQnLCAn5LuA6bq85pmC5YCZ5Z+36KGM5qiZ6KiY5oiW5Yiq6ZmkJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGJ1dHRvbkNsaWNrOiB3aW5kb3cud2dVTFMoJ+W9k+aIkeeCueKAnOaPkOS6pOKAneaXticsICfnlbbmiJHpu57jgIzmj5DkuqTjgI3mmYInKSxcblx0XHRcdFx0XHRcdHJhZGlvQ2xpY2s6IHdpbmRvdy53Z1VMUygn5b2T5oiR54K55LiA5Liq6YCJ6aG55pe2JywgJ+eVtuaIkem7nuS4gOWAi+mBuOmgheaZgicpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hTcGVlZHlQYWdlcyAoYXJyYXkpXG5cdFx0XHRcdC8vIFdoZXRoZXIgdG8gYWRkIHNwZWVkeSB0YWdnZWQgcGFnZXMgdG8gd2F0Y2hsaXN0XG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hTcGVlZHlQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5Lul5LiL55CG55Sx5Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+Wwh+S7peS4i+eQhueUseWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdzZXQnLFxuXHRcdFx0XHRcdHNldFZhbHVlczogVHdpbmtsZS5jb25maWcuY29tbW9uU2V0cy5jc2RDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hTcGVlZHlFeHBpcnlcblx0XHRcdFx0Ly8gSWYgYW55IG9mIHRoZSBhYm92ZSBpdGVtcyBhcmUgc2VsZWN0ZWQsIHdoZXRoZXIgdG8gZXhwaXJlIHRoZSB3YXRjaFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoU3BlZWR5RXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPmoIforrDpobXpnaLml7bvvIzliqDlhaXliLDnm5Hop4bliJfooajnmoTmnJ/pmZAnLCAn55W25qiZ6KiY6aCB6Z2i5pmC77yM5Yqg5YWl5Yiw55uj6KaW5riF5Zau55qE5pyf6ZmQJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm1hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkIChib29sZWFuKVxuXHRcdFx0XHQvLyBJZiwgd2hlbiBhcHBseWluZyBzcGVlZHkgdGVtcGxhdGUgdG8gcGFnZSwgdG8gbWFyayB0aGUgcGFnZSBhcyBwYXRyb2xsZWQgKGlmIHRoZSBwYWdlIHdhcyByZWFjaGVkIGZyb20gTmV3UGFnZXMpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFya1NwZWVkeVBhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOaXtuagh+iusOmhtemdouS4uuW3suW3oeafpe+8iOWmguWPr+iDve+8iScsICfmqJnoqJjmmYLmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubm90aWZ5VXNlck9uU3BlZWR5RGVsZXRpb25Ob21pbmF0aW9uIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHNob3VsZCByZXN1bHQgdGhhdCB0aGUgYXV0aG9yIG9mIHRoZSBwYWdlIGJlaW5nIG5vdGlmaWVkIG9mIG5vbWluYXRpb25cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heWcqOS9v+eUqOS7peS4i+eQhueUseaXtumAmuefpemhtemdouWIm+W7uuiAhScsICflg4XlnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLpgJrnn6XpoIHpnaLlu7rnq4vogIUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bC9566h5oKo5Zyo5a+56K+d5qGG5Lit6YCJ5oup6YCa55+l77yM6YCa55+l5LuN5Y+q5Lya5Zyo5L2/55So6L+Z5Lqb55CG55Sx5pe25Y+R5Ye644CCJyxcblx0XHRcdFx0XHRcdCflhJjnrqHmgqjlnKjlsI3oqbHmlrnloYrkuK3pgbjmk4fpgJrnn6XvvIzpgJrnn6Xku43lj6rmnIPlnKjkvb/nlKjpgJnkupvnkIbnlLHmmYLnmbzlh7rjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQ3JpdGVyaWFOb3RpZmljYXRpb24sXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZENyaXRlcmlhTm90aWZpY2F0aW9uRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnByb21wdEZvclNwZWVkeURlbGV0aW9uU3VtbWFyeSAoYXJyYXkgb2Ygc3RyaW5ncylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S9v+eUqOS7peS4i+eQhueUseWIoOmZpOaXtuWFgeiuuOe8lui+keWIoOmZpOeQhueUsScsICfkvb/nlKjku6XkuIvnkIbnlLHliKrpmaTmmYLlhYHoqLHnt6jovK/liKrpmaTnkIbnlLEnKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcub3BlblVzZXJUYWxrUGFnZU9uU3BlZWR5RGVsZXRlIChhcnJheSBvZiBzdHJpbmdzKVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IHVzZXIgdGFsayBwYWdlIHRvIGJlIG9wZW5lZCB3aGVuIHNwZWVkaWx5IGRlbGV0aW5nIChhZG1pbiBvbmx5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L2/55So5Lul5LiL55CG55Sx5pe25omT5byA55So5oi36K6o6K666aG1JywgJ+S9v+eUqOS7peS4i+eQhueUseaZguaJk+mWi+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5kZWxldGVUYWxrUGFnZU9uRGVsZXRlIChib29sZWFuKVxuXHRcdFx0XHQvLyBJZiB0YWxrIHBhZ2UgaWYgZXhpc3RzIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQgKENTRCBHOCkgd2hlbiBzcGVkeWluZyBhIHBhZ2UgKGFkbWluIG9ubHkpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5Yu+6YCJ4oCc5Yig6Zmk6K6o6K666aG14oCdJywgJ+mgkOioreWLvumBuOOAjOWIqumZpOiojuirlumggeOAjScpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlUmVkaXJlY3RzT25EZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOWIoOmZpOmHjeWumuWQkeKAnScsICfpoJDoqK3li77pgbjjgIzliKrpmaTph43mlrDlsI7lkJHjgI0nKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlbGV0ZVN5c29wRGVmYXVsdFRvRGVsZXRlIChib29sZWFuKVxuXHRcdFx0XHQvLyBNYWtlIHRoZSBDU0Qgc2NyZWVuIGRlZmF1bHQgdG8gXCJkZWxldGVcIiBpbnN0ZWFkIG9mIFwidGFnXCIgKGFkbWluIG9ubHkpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOS4uuebtOaOpeWIoOmZpOiAjOS4jeaYr+agh+iusCcsICfpoJDoqK3ngrrnm7TmjqXliKrpmaTogIzkuI3mmK/mqJnoqJgnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5bey5pS+572u5b+r6YCf5Yig6Zmk5qCH6K6w77yM5YiZ5rC46L+c6buY6K6k5Li65Yig6Zmk5qih5byP44CCJyxcblx0XHRcdFx0XHRcdCfoi6Xlt7LmlL7nva7lv6vpgJ/liKrpmaTmqJnoqJjvvIzliYfmsLjpgaDpoJDoqK3ngrrliKrpmaTmqKHlvI/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnNwZWVkeVdpbmRvd1dpZHRoIChpbnRlZ2VyKVxuXHRcdFx0XHQvLyBEZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgVHdpbmtsZSBTRCB3aW5kb3cgaW4gcGl4ZWxzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3BlZWR5V2luZG93V2lkdGgnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpOWvueivneahhuWuveW6pu+8iOWDj+e0oO+8iScsICflv6vpgJ/liKrpmaTlsI3oqbHmlrnloYrlr6zluqbvvIjlg4/ntKDvvIknKSxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuc3BlZWR5V2luZG93V2lkdGggKGludGVnZXIpXG5cdFx0XHRcdC8vIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBUd2lua2xlIFNEIHdpbmRvdyBpbiBwaXhlbHNcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzcGVlZHlXaW5kb3dIZWlnaHQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpOWvueivneahhumrmOW6pu+8iOWDj+e0oO+8iScsICflv6vpgJ/liKrpmaTlsI3oqbHmlrnloYrpq5jluqbvvIjlg4/ntKDvvIknKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5oKo5pyJ5LiA5Y+w5b6I5aSn55qE5pi+56S65Zmo77yM5oKo5Y+v5Lul5bCG5q2k6LCD6auY44CCJyxcblx0XHRcdFx0XHRcdCfoi6XmgqjmnInkuIDlj7DlvojlpKfnmoTpoa/npLrlmajvvIzmgqjlj6/ku6XlsIfmraToqr/pq5jjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbG9nU3BlZWR5Tm9taW5hdGlvbnMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOeUqOaIt+epuumXtOS4reiusOW9leaJgOacieW/q+mAn+WIoOmZpOaPkOWQjScsICflnKjkvb/nlKjogIXnqbrplpPkuK3oqJjpjITmiYDmnInlv6vpgJ/liKrpmaTmj5DlkI0nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Z2e566h55CG5ZGY5peg5rOV6K6/6Zeu5Yiw5bey5Yig6Zmk55qE6LSh54yu77yM55So5oi356m66Ze05pel5b+X5o+Q5L6b5LqG5LiA5Liq5b6I5aW955qE5pa55rOV5p2l6K6w5b2V6L+Z5Lqb5Y6G5Y+y44CCJyxcblx0XHRcdFx0XHRcdCfpnZ7nrqHnkIblk6HnhKHms5XlrZjlj5bliLDlt7LliKrpmaTnmoTosqLnjbvvvIzkvb/nlKjogIXnqbrplpPml6Xoqozmj5DkvpvkuobkuIDlgIvlvojlpb3nmoTmlrnms5XkvoboqJjpjITpgJnkupvmrbflj7LjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3BlZWR5TG9nUGFnZU5hbWUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOatpOmhteS/neeVmeaXpeW/lycsICflnKjmraTpoIHkv53nlZnml6XoqownKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5q2k5qGG5Lit6L6T5YWl5a2Q6aG16Z2i5ZCN56ew77yM5oKo5bCG5ZyoVXNlcjo8aT7nlKjmiLflkI08L2k+LzxpPuWtkOmhtemdojwvaT7mib7liLBDU0Tml6Xlv5fjgILku4XlnKjlkK/nlKjml6Xlv5fml7blt6XkvZzjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei8uOWFpeWtkOmggemdouWQjeeose+8jOaCqOWwh+WcqFVzZXI6PGk+5L2/55So6ICF5ZCN56ixPC9pPi88aT7lrZDpoIHpnaI8L2k+5om+5YiwQ1NE5pel6KqM44CC5YOF5Zyo5ZWf55So5pel6KqM5pmC5bel5L2c44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOS9v+eUqOS7peS4i+eQhueUseaXtuS4jeWBmuiusOW9lScsICflnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLkuI3lgZroqJjpjIQnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdlbmxhcmdlRzdJbnB1dCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5omp5aSnQ1NEIEc355qE5oyJ6ZKuJywgJ+aTtOWkp0NTRCBHN+eahOaMiemIlScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5omp5Li66buY6K6k55qE5Lik5YCN5aSn44CCJywgJ+aTtOeCuumgkOioreeahOWFqeWAjeWkp+OAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfmoIforrAnLCAn5qiZ6KiYJyksXG5cdFx0XHRtb2R1bGU6ICd0YWcnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFRhZ2dlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoTWVyZ2VEaXNjdXNzaW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5ZCI5bm26K6o6K665pe255uR6KeG6K6o6K666aG1JywgJ+WKoOWFpeWQiOS9teiojuirluaZguebo+imluiojuirlumggScpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrVGFnZ2VkUGFnZXNBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbmoIforrDmoIforrDkuLrlsI/kv67mlLknLCAn5bCH5qiZ6KiY5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtUYWdnZWRQYWdlc0FzUGF0cm9sbGVkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTli77pgInigJzmoIforrDpobXpnaLkuLrlt7Llt6Hmn6XigJ3moYYnLCAn6aCQ6Kit5Yu+6YG444CM5qiZ6KiY6aCB6Z2i54K65bey5beh5p+l44CN5qGGJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2dyb3VwQnlEZWZhdWx0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+m7mOiupOWLvumAieKAnOWQiOW5tuWIsHt7bXVsdGlwbGUgaXNzdWVzfX3igJ3lpI3pgInmoYYnLFxuXHRcdFx0XHRcdFx0J+mgkOioreWLvumBuOOAjOWQiOS9teWIsHt7bXVsdGlwbGUgaXNzdWVzfX3jgI3moLjlj5bmlrnloYonXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndGFnQXJ0aWNsZVNvcnRPcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uu5qCH6K6w55qE6buY6K6k5p+l55yL5pa55byPJywgJ+aineebruaomeiomOeahOmgkOioreaqouimluaWueW8jycpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRjYXQ6IHdpbmRvdy53Z1VMUygn5oyJ57G75Z6LJywgJ+aMiemhnuWIpScpLFxuXHRcdFx0XHRcdFx0YWxwaGE6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tVGFnTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5p2h55uu57u05oqk5qCH6K6wJywgJ+iHquioguaineebrue2reitt+aomeiomCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn6L+Z5Lqb5Lya5Ye6546w5Zyo5YiX6KGo55qE5pyr5bC+44CCJywgJ+mAmeS6m+acg+WHuuePvuWcqOWIl+ihqOeahOacq+WwvuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2N1c3RvbUZpbGVUYWdMaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmlofku7bnu7TmiqTmoIforrAnLCAn6Ieq6KiC5qqU5qGI57at6K235qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfov5nkupvkvJrlh7rnjrDlnKjliJfooajnmoTmnKvlsL7jgIInLCAn6YCZ5Lqb5pyD5Ye654++5Zyo5YiX6KGo55qE5pyr5bC+44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOWPt++8iScsICfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zomZ/vvIknKSxcblx0XHRcdFx0XHRjdXN0b21MaXN0TGFiZWxUaXRsZTogd2luZG93LndnVUxTKCfmmL7npLrnmoTmloflrZcnLCAn6aGv56S655qE5paH5a2XJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tUmVkaXJlY3RUYWdMaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnph43lrprlkJHnu7TmiqTmoIforrAnLCAn6Ieq6KiC6YeN5paw5bCO5ZCR57at6K235qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfov5nkupvkvJrlh7rnjrDlnKjliJfooajnmoTmnKvlsL7jgIInLCAn6YCZ5Lqb5pyD5Ye654++5Zyo5YiX6KGo55qE5pyr5bC+44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOWPt++8iScsICfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zomZ/vvIknKSxcblx0XHRcdFx0XHRjdXN0b21MaXN0TGFiZWxUaXRsZTogd2luZG93LndnVUxTKCfmmL7npLrnmoTmloflrZcnLCAn6aGv56S655qE5paH5a2XJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6ICflsI/kvZzlk4EnLFxuXHRcdFx0bW9kdWxlOiAnc3R1YicsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoU3R1YmJlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtTdHViYmVkUGFnZXNBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIblsI/kvZzlk4HmoIforrDkuLrlsI/kv67mlLknLCAn5bCH5bCP5L2c5ZOB5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtTdHViYmVkUGFnZXNBc1BhdHJvbGxlZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5Yu+6YCJ4oCc5qCH6K6w6aG16Z2i5Li65bey5beh5p+l4oCd5qGGJywgJ+mgkOioreWLvumBuOOAjOaomeiomOmggemdoueCuuW3suW3oeafpeOAjeahhicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzdHViQXJ0aWNsZVNvcnRPcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uu5bCP5L2c5ZOB55qE6buY6K6k5p+l55yL5pa55byPJywgJ+aineebruWwj+S9nOWTgeeahOmgkOioreaqouimluaWueW8jycpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRjYXQ6IHdpbmRvdy53Z1VMUygn5oyJ57G75Z6LJywgJ+aMiemhnuWIpScpLFxuXHRcdFx0XHRcdFx0YWxwaGE6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tU3R1Ykxpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieadoeebruWwj+S9nOWTgeagh+iusCcsICfoh6roqILmop3nm67lsI/kvZzlk4HmqJnoqJgnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+i/meS6m+S8muWHuueOsOWcqOWIl+ihqOeahOacq+WwvuOAgicsICfpgJnkupvmnIPlh7rnj77lnKjliJfooajnmoTmnKvlsL7jgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUygn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous5Y+377yJJywgJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOiZn++8iScpLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RMYWJlbFRpdGxlOiB3aW5kb3cud2dVTFMoJ+aYvuekuueahOaWh+WtlycsICfpoa/npLrnmoTmloflrZcnKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogJ+mAmuWRiicsXG5cdFx0XHRtb2R1bGU6ICd0YWxrYmFjaycsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtUYWxrYmFja0FzTWlub3InLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwhumAmuWRiuagh+iusOS4uuWwj+S/ruaUuScsICflsIfpgJrlkYrmqJnoqJjngrrlsI/kv67mlLknKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnaW5zZXJ0VGFsa2JhY2tTaWduYXR1cmUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAmuWRiuaXtuWKoOWFpeetvuWQjScsICfpgJrlkYrmmYLliqDlhaXnsL3lkI0nKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndGFsa2JhY2tIZWFkaW5nJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrlkYrmiYDnlKjnmoTlsI/oioLmoIfpopgnLCAn6YCa5ZGK5omA55So55qE5bCP56+A5qiZ6aGMJyksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFpbEhlYWRpbmcnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+KAnOacieaWsOmCruS7tuKAneaJgOeUqOeahOWwj+iKguagh+mimCcsICfjgIzmnInmlrDpg7Xku7bjgI3miYDnlKjnmoTlsI/nr4DmqJnpoYwnKSxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflj5bmtojpk77lhaUnLCAn5Y+W5raI6YCj5YWlJyksXG5cdFx0XHRtb2R1bGU6ICd1bmxpbmsnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy51bmxpbmtOYW1lc3BhY2VzIChhcnJheSlcblx0XHRcdFx0Ly8gSW4gd2hhdCBuYW1lc3BhY2VzIHVubGluayBzaG91bGQgaGFwcGVuLCBkZWZhdWx0IGluIDAgKGFydGljbGUpIGFuZCAxMDAgKHBvcnRhbClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd1bmxpbmtOYW1lc3BhY2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5bmtojku6XkuIvlkb3lkI3nqbrpl7TkuK3nmoTlj43lkJHpk77mjqUnLCAn5Y+W5raI5Lul5LiL5ZG95ZCN56m66ZaT5Lit55qE5Y+N5ZCR6YCj57WQJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+mBv+WFjemAieaLqeiuqOiuuumhte+8jOWboOi/meagt+S8muWvvOiHtFR3aW5rbGXor5Xlm77kv67mlLnorqjorrrlrZjmoaPjgIInLFxuXHRcdFx0XHRcdFx0J+iri+mBv+WFjemBuOaTh+iojuirlumgge+8jOWboOmAmeaoo+acg+WwjuiHtFR3aW5rbGXoqablnJbkv67mlLnoqI7oq5blrZjmqpTjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMubmFtZXNwYWNlc05vU3BlY2lhbCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCforablkYrnlKjmiLcnLCAn6K2m5ZGK5L2/55So6ICFJyksXG5cdFx0XHRtb2R1bGU6ICd3YXJuJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFdhcm5pbmdHcm91cCAoaW50KVxuXHRcdFx0XHQvLyBpZiB0cnVlLCB3YXRjaCB0aGUgcGFnZSB3aGljaCBoYXMgYmVlbiBkaXNwYXRjaGVkIGFuIHdhcm5pbmcgb3Igbm90aWNlLCBpZiBmYWxzZSwgZGVmYXVsdCBhcHBsaWVzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVmYXVsdFdhcm5pbmdHcm91cCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k6K2m5ZGK57qn5YirJywgJ+mgkOioreitpuWRiue0muWIpScpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHQxOiAnMe+8muazqOaEjycsXG5cdFx0XHRcdFx0XHQyOiAnMu+8muitpuWRiicsXG5cdFx0XHRcdFx0XHQzOiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+aPkOmGkicsICfllq7lsaTntJrmj5DphpInKSxcblx0XHRcdFx0XHRcdDQ6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn6K2m5ZGKJywgJ+WWruWxpOe0muitpuWRiicpLFxuXHRcdFx0XHRcdFx0NTogd2luZG93LndnVUxTKCfoh6rlrprkuYnmj5DphpLmiJborablkYonLCAn6Ieq6KiC5o+Q6YaS5oiW6K2m5ZGKJyksXG5cdFx0XHRcdFx0XHQ2OiAn5omA5pyJ6K2m5ZGK5qih5p2/Jyxcblx0XHRcdFx0XHRcdDc6IHdpbmRvdy53Z1VMUygn6Ieq5Yqo6YCJ5oup5bGC57qnJywgJ+iHquWLlemBuOaTh+WxpOe0micpLFxuXHRcdFx0XHRcdFx0Ly8gOCB3YXMgdXNlZCBmb3IgYmxvY2sgdGVtcGxhdGVzIGJlZm9yZSAjMjYwXG5cdFx0XHRcdFx0XHQvLyA5IHdhcyBkZXByZWNhdGVkXG5cdFx0XHRcdFx0XHQvLyAxMCB3YXMgZGVwcmVjYXRlZFxuXHRcdFx0XHRcdFx0Ly8gMTEgd2FzIGRlcHJlY2F0ZWRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmNvbWJpbmVkU2luZ2xldE1lbnVzIChib29sZWFuKVxuXHRcdFx0XHQvLyBpZiB0cnVlLCBzaG93IG9uZSBtZW51IHdpdGggYm90aCBzaW5nbGUtaXNzdWUgbm90aWNlcyBhbmQgd2FybmluZ3MgaW5zdGVhZCBvZiB0d28gc2VwYXJhdGVseVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2NvbWJpbmVkU2luZ2xldE1lbnVzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbkuKTkuKrljZXlsYLnuqfoj5zljZXlkIjlubbmiJDkuIDkuKonLCAn5bCH5YWp5YCL5Zau5bGk57Sa6YG45Zau5ZCI5L215oiQ5LiA5YCLJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+W9k+WQr+eUqOatpOmAiemhueaXtu+8jOaXoOiuuum7mOiupOitpuWRiue6p+WIq+mAieaLqeWNleWxgue6p+mAmuefpeaIluWNleWxgue6p+itpuWRiueahuWxnuS6juatpOmhueOAgicsXG5cdFx0XHRcdFx0XHQn55W25ZWf55So5q2k6YG46aCF5pmC77yM54Sh6KuW6aCQ6Kit6K2m5ZGK57Sa5Yil6YG45pOH5Zau5bGk57Sa6YCa55+l5oiW5Zau5bGk57Sa6K2m5ZGK55qG5bGs5pa85q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLndhdGNoV2FybmluZ3MgKHN0cmluZylcblx0XHRcdFx0Ly8gV2F0Y2hsaXN0IHNldHRpbmcgZm9yIHRoZSBwYWdlIHdoaWNoIGhhcyBiZWVuIGRpc3BhdGNoZWQgYW4gd2FybmluZyBvciBub3RpY2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFdhcm5pbmdzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCforablkYrml7bliqDlhaXnlKjmiLforqjorrrpobXliLDnm5Hop4bliJfooagnLCAn6K2m5ZGK5pmC5Yqg5YWl5L2/55So6ICF6KiO6KuW6aCB5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9sZFNlbGVjdCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gaWYgdHJ1ZSwgdXNlIHRoZSBuYXRpdmUgc2VsZWN0IG1lbnUgcmF0aGVyIHRoZSBqcXVlcnkgY2hvc2VuLWJhc2VkIG9uZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29sZFNlbGVjdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L2/55So5LiN5Y+v5pCc57Si55qE57uP5YW46I+c5Y2VJywgJ+S9v+eUqOS4jeWPr+aQnOWwi+eahOe2k+WFuOmBuOWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjdXN0b21XYXJuaW5nTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6K2m5ZGK5qih5p2/JywgJ+iHquioguitpuWRiuaooeadvycpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XliqDlhaXmqKHmnb/miJbnlKjmiLflrZDpobXpnaLjgILoh6rlrprkuYnorablkYrkvJrlh7rnjrDlnKjorablkYrlr7nor53moYbkuK3igJzoh6rlrprkuYnorablkYrigJ3kuIDoioLjgIInLFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peWKoOWFpeaooeadv+aIluS9v+eUqOiAheWtkOmggemdouOAguiHquioguitpuWRiuacg+WHuuePvuWcqOitpuWRiuWwjeipseaWueWhiuS4reOAjOiHquioguitpuWRiuOAjeS4gOevgOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2X77yI5ZKM57yW6L6R5pGY6KaB77yJJywgJ+mhr+ekuueahOaWh+Wtl++8iOWSjOe3qOi8r+aRmOimge+8iScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WtmOW6n+iuqOiuuicsICflrZjlu6LoqI7oq5YnKSxcblx0XHRcdG1vZHVsZTogJ3hmZCcsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2xvZ1hmZE5vbWluYXRpb25zJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjnlKjmiLfnqbrpl7TkuK3orrDlvZXmiYDmnInlrZjlup/orqjorrrmj5DlkI0nLCAn5Zyo5L2/55So6ICF56m66ZaT5Lit6KiY6YyE5omA5pyJ5a2Y5bui6KiO6KuW5o+Q5ZCNJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivpeaXpeW/l+S+m+aCqOi/vei4quaJgOaciemAmui/h1R3aW5rbGXmj5DkuqTnmoTlrZjlup/orqjorronLFxuXHRcdFx0XHRcdFx0J+ipsuaXpeiqjOS+m+aCqOi/vei5pOaJgOaciemAj+mBjlR3aW5rbGXmj5DkuqTnmoTlrZjlu6LoqI7oq5YnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAneGZkTG9nUGFnZU5hbWUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOatpOmhteS/neeVmeaXpeW/lycsICflnKjmraTpoIHkv53nlZnml6XoqownKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5q2k5qGG5Lit6L6T5YWl5a2Q6aG16Z2i5ZCN56ew77yM5oKo5bCG5ZyoVXNlcjo8aT7nlKjmiLflkI08L2k+LzxpPuWtkOmhtemdojwvaT7mib7liLBYRkTml6Xlv5fjgILku4XlnKjlkK/nlKjml6Xlv5fml7blt6XkvZzjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei8uOWFpeWtkOmggemdouWQjeeose+8jOaCqOWwh+WcqFVzZXI6PGk+5L2/55So6ICF5ZCN56ixPC9pPi88aT7lrZDpoIHpnaI8L2k+5om+5YiwWEZE5pel6KqM44CC5YOF5Zyo5ZWf55So5pel6KqM5pmC5bel5L2c44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbm9Mb2dPblhmZE5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOS9v+eUqOS7peS4i+eQhueUseaXtuS4jeWBmuiusOW9lScsICflnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLkuI3lgZroqJjpjIQnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMueGZkQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLnhmZENyaXRlcmlhRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnhmZFdhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgYmVpbmcgbm9taW5hdGVkIGZvciBYZkQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAneGZkV2F0Y2hQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXmj5DlkI3nmoTpobXpnaLliLDnm5Hop4bliJfooagnLCAn5Yqg5YWl5o+Q5ZCN55qE6aCB6Z2i5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnhmZFdhdGNoRGlzY3Vzc2lvbiAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgWGZEIHBhZ2UgKGZvciB0aG9zZSBwcm9jZXNzZXMgdGhhdCBjcmVhdGUgZGlzY3Vzc2lvbiBwYWdlcyBmb3IgZWFjaCBub21pbmF0aW9uKSxcblx0XHRcdFx0Ly8gb3IgdGhlIGxpc3QgcGFnZSBmb3IgdGhlIG90aGVyIHByb2Nlc3Nlcy5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd4ZmRXYXRjaERpc2N1c3Npb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWtmOW6n+iuqOiuuumhteWIsOebkeinhuWIl+ihqCcsICfliqDlhaXlrZjlu6LoqI7oq5bpoIHliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+W9k+aXpeeahOmhtemdouOAgicsICfnlbbml6XnmoTpoIHpnaLjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcueGZkV2F0Y2hVc2VyIChzdHJpbmcpXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGxpc3Qgc2V0dGluZyBvZiB0aGUgdXNlciB0YWxrIHBhZ2UgaWYgdGhleSByZWNlaXZlIGEgbm90aWZpY2F0aW9uLlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3hmZFdhdGNoVXNlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfliqDlhaXliJvlu7rogIXorqjorrrpobXliLDnm5Hop4bliJfooajvvIjlnKjpgJrnn6Xml7bvvIknLFxuXHRcdFx0XHRcdFx0J+WKoOWFpeW7uueri+iAheiojuirlumggeWIsOebo+imlua4heWWru+8iOWcqOmAmuefpeaZgu+8iSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrWGZkUGFnZXNBc1BhdHJvbGxlZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5pe25qCH6K6w6aG16Z2i5Li65bey5beh5p+l77yI5aaC5Y+v6IO977yJJywgJ+aomeiomOaZguaomeiomOmggemdoueCuuW3suW3oeafpe+8iOWmguWPr+iDve+8iScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfln7rkuo7mioDmnK/ljp/lm6DvvIzpobXpnaLku4XkvJrlnKjnlLFTcGVjaWFsOk5ld1BhZ2Vz5Yiw6L6+5pe26KKr5qCH6K6w5Li65bey5beh5p+l44CCJyxcblx0XHRcdFx0XHRcdCfln7rmlrzmioDooZPljp/lm6DvvIzpoIHpnaLlg4XmnIPlnKjnlLFTcGVjaWFsOk5ld1BhZ2Vz5Yiw6YGU5pmC6KKr5qiZ6KiY54K65bey5beh5p+l44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ0Z3ZENzZFRvWGZkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DliKDnsbvlnovlop7liqDovazkuqToh6rlv6vpgJ/liKDpmaTlgJnpgIknLCAn5o+Q5Yiq6aGe5Yil5aKe5Yqg6L2J5Lqk6Ieq5b+r6YCf5Yiq6Zmk5YCZ6YG4JyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+ehruS/neaCqOWFheWIhuS6huino1tbTElCOuW/q+mAn+WIoOmZpOadoeS+i11d5omN5byA5ZCv5q2k5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCfoq4vnorrkv53mgqjlhYXliIbkuobop6NbW0xJQjrlv6vpgJ/liKrpmaTmop3kvotdXeaJjemWi+WVn+atpOWKn+iDveOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdhZmREZWZhdWx0Q2F0ZWdvcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOaPkOWIoOexu+WeiycsICfpoJDoqK3mj5DliKrpoZ7liKUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul6YCJ5oup4oCc55u45ZCM5LqO5LiK5qyh6YCJ5oup4oCd5bCG5L2/55SobG9jYWxTdG9yYWdl5p2l6K6w5b+G44CCJyxcblx0XHRcdFx0XHRcdCfoi6Xpgbjmk4fjgIznm7jlkIzmlrzkuIrmrKHpgbjmk4fjgI3lsIfkvb/nlKhsb2NhbFN0b3JhZ2XkvoboqJjmhrbjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczoge1xuXHRcdFx0XHRcdFx0ZGVsZXRlOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHRcdHNhbWU6IHdpbmRvdy53Z1VMUygn55u45ZCM5LqO5LiK5qyh6YCJ5oupJywgJ+ebuOWQjOaWvOS4iuasoemBuOaThycpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYWZkRmFtZURlZmF1bHRSZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWFs+azqOW6puaPkOWIoOeQhueUsScsICfpoJDoqK3pl5zms6jluqbmj5DliKrnkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+eUqOS6juaJuemHj+aPkOWIoOOAgicsICfnlKjmlrzmibnmrKHmj5DliKrjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdhZmRTdWJzdHViRGVmYXVsdFJlYXNvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5bCP5bCP5L2c5ZOB5o+Q5Yig55CG55SxJywgJ+mgkOioreWwj+Wwj+S9nOWTgeaPkOWIqueQhueUsScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn55So5LqO5om56YeP5o+Q5Yig44CCJywgJ+eUqOaWvOaJueasoeaPkOWIquOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WFs+mXreWtmOW6n+iuqOiuuicsICfpl5zplonlrZjlu6LoqI7oq5YnKSxcblx0XHRcdG1vZHVsZTogJ2Nsb3NlJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnWGZkQ2xvc2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOWtmOW6n+iuqOiuuuaYvuekuuWFs+mXreiuqOiuuuaMiemSricsICflnKjlrZjlu6LoqI7oq5bpoa/npLrpl5zplonoqI7oq5bmjInpiJUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6K+356Gu5L+d5oKo5YWF5YiG5LqG6KejW1tMSUI65Yig6Zmk5p2h5L6LXV3miY3lvIDlkK/mraTlip/og73jgIInLFxuXHRcdFx0XHRcdFx0J+iri+eiuuS/neaCqOWFheWIhuS6huino1tbTElCOuWIqumZpOaineS+i11d5omN6ZaL5ZWf5q2k5Yqf6IO944CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGhpZGU6IHdpbmRvdy53Z1VMUygn5LiN5pi+56S6JywgJ+S4jemhr+ekuicpLFxuXHRcdFx0XHRcdFx0bm9uYWRtaW5vbmx5OiB3aW5kb3cud2dVTFMoJ+WPquWMheWQq+mdnueuoeeQhuWRmOWPr+S9v+eUqOmAiemhuScsICflj6rljIXlkKvpnZ7nrqHnkIblk6Hlj6/kvb/nlKjpgbjpoIUnKSxcblx0XHRcdFx0XHRcdGFsbDogd2luZG93LndnVUxTKCfmmL7npLrmiYDmnInpgInpobknLCAn6aGv56S65omA5pyJ6YG46aCFJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfkvrXniq/okZfkvZzmnYMnLCAn5L6154qv6JGX5L2c5qyKJyksXG5cdFx0XHRtb2R1bGU6ICdjb3B5dmlvJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuY29weXZpb1dhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgYmVpbmcgbm9taW5hdGVkIGZvciBYZkQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY29weXZpb1dhdGNoUGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5o+Q5oql55qE6aG16Z2i5Yiw55uR6KeG5YiX6KGoJywgJ+WKoOWFpeaPkOWgseeahOmggemdouWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5jb3B5dmlvV2F0Y2hVc2VyIChzdHJpbmcpXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGxpc3Qgc2V0dGluZyBvZiB0aGUgdXNlciBpZiBoZSByZWNlaXZlcyBhIG5vdGlmaWNhdGlvbi5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjb3B5dmlvV2F0Y2hVc2VyJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WKoOWFpeWIm+W7uuiAheiuqOiuuumhteWIsOebkeinhuWIl+ihqO+8iOWcqOmAmuefpeaXtu+8iScsXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5bu656uL6ICF6KiO6KuW6aCB5Yiw55uj6KaW5riF5Zau77yI5Zyo6YCa55+l5pmC77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm1hcmtDb3B5dmlvUGFnZXNBc1BhdHJvbGxlZCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYsIHdoZW4gYXBwbHlpbmcgY29weXZpbyB0ZW1wbGF0ZSB0byBwYWdlLCB0byBtYXJrIHRoZSBwYWdlIGFzIHBhdHJvbGxlZCAoaWYgdGhlIHBhZ2Ugd2FzIHJlYWNoZWQgZnJvbSBOZXdQYWdlcylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOaXtuagh+iusOmhtemdouS4uuW3suW3oeafpe+8iOWmguWPr+iDve+8iScsICfmqJnoqJjmmYLmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Z+65LqO5oqA5pyv5Y6f5Zug77yM6aG16Z2i5LuF5Lya5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOi+vuaXtuiiq+agh+iusOS4uuW3suW3oeafpeOAgicsXG5cdFx0XHRcdFx0XHQn5Z+65pa85oqA6KGT5Y6f5Zug77yM6aCB6Z2i5YOF5pyD5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOmBlOaZguiiq+aomeiomOeCuuW3suW3oeafpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfpmpDol48nLCAn6Zqx6JePJyksXG5cdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHQvLyB0d2lua2xlLmpzOiBwb3J0bGV0IHNldHVwXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncG9ydGxldEFyZWEnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXRJZCcsXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncG9ydGxldE5hbWUnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXRUeXBlJyxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwb3J0bGV0TmV4dCcsXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIHR3aW5rbGVmbHVmZi5qczogZGVmaW5lcyBob3cgbWFueSByZXZpc2lvbiB0byBxdWVyeSBtYXhpbXVtLCBtYXhpbXVtIHBvc3NpYmxlIGlzIDUwLCBkZWZhdWx0IGlzIDUwXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncmV2ZXJ0TWF4UmV2aXNpb25zJyxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIHR3aW5rbGViYXRjaGRlbGV0ZS5qczogSG93IG1hbnkgcGFnZXMgc2hvdWxkIGJlIHByb2Nlc3NlZCBtYXhpbXVtXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYmF0Y2hNYXgnLFxuXHRcdFx0XHRcdHR5cGU6ICdpbnRlZ2VyJyxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIEhvdyBtYW55IHBhZ2VzIHNob3VsZCBiZSBwcm9jZXNzZWQgYXQgYSB0aW1lIGJ5IGRlcHJvZCBhbmQgYmF0Y2hkZWxldGUvcHJvdGVjdC91bmRlbGV0ZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2JhdGNoQ2h1bmtzJyxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdOyAvLyBlbmQgb2YgVHdpbmtsZS5jb25maWcuc2VjdGlvbnNcblx0VHdpbmtsZS5jb25maWcuaW5pdCA9ICgpID0+IHtcblx0XHQvLyBjcmVhdGUgdGhlIGNvbmZpZyBwYWdlIGF0IFR3aW5rbGUuZ2V0UHJlZignY29uZmlnUGFnZScpXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSA9PT0gVHdpbmtsZS5nZXRQcmVmKCdjb25maWdQYWdlJykgJiYgbXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ3ZpZXcnKSB7XG5cdFx0XHRpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0d2lua2xlLWNvbmZpZycpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gbWF5YmUgdGhlIHBhZ2UgaXMgbWlzY29uZmlndXJlZCwgb3Igc29tZXRoaW5nIC0gYnV0IGFueSBhdHRlbXB0IHRvIG1vZGlmeSBpdCB3aWxsIGJlIHBvaW50bGVzc1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29udGVudGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0d2lua2xlLWNvbmZpZy1jb250ZW50Jyk7XG5cdFx0XHRjb250ZW50ZGl2LnRleHRDb250ZW50ID0gJyc7IC8vIGNsZWFyIGNoaWxkcmVuXG5cdFx0XHQvLyBzdGFydCBhIHRhYmxlIG9mIGNvbnRlbnRzXG5cdFx0XHRjb25zdCB0b2N0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0dG9jdGFibGUuY2xhc3NOYW1lID0gJ3RvYyc7XG5cdFx0XHR0b2N0YWJsZS5zdHlsZS5tYXJnaW5MZWZ0ID0gJzAuNGVtJztcblx0XHRcdC8vIGNyZWF0ZSBUT0MgdGl0bGVcblx0XHRcdGNvbnN0IHRvY3RpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHR0b2N0aXRsZS5pZCA9ICd0b2N0aXRsZSc7XG5cdFx0XHRjb25zdCB0b2NoMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gyJyk7XG5cdFx0XHR0b2NoMi50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn55uu5b2VICcsICfnm67pjIQgJyk7XG5cdFx0XHR0b2N0aXRsZS5hcHBlbmRDaGlsZCh0b2NoMik7XG5cdFx0XHQvLyBhZGQgVE9DIHNob3cvaGlkZSBsaW5rXG5cdFx0XHRjb25zdCB0b2N0b2dnbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHR0b2N0b2dnbGUuY2xhc3NOYW1lID0gJ3RvY3RvZ2dsZSc7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1snKSk7XG5cdFx0XHRjb25zdCB0b2N0b2dnbGVsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0dG9jdG9nZ2xlbGluay5jbGFzc05hbWUgPSAnaW50ZXJuYWwnO1xuXHRcdFx0dG9jdG9nZ2xlbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnI3R3LXRvY3Nob3doaWRlJyk7XG5cdFx0XHR0b2N0b2dnbGVsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfpmpDol48nLCAn6Zqx6JePJyk7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQodG9jdG9nZ2xlbGluayk7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ10nKSk7XG5cdFx0XHR0b2N0aXRsZS5hcHBlbmRDaGlsZCh0b2N0b2dnbGUpO1xuXHRcdFx0dG9jdGFibGUuYXBwZW5kQ2hpbGQodG9jdGl0bGUpO1xuXHRcdFx0Ly8gY3JlYXRlIGl0ZW0gY29udGFpbmVyOiB0aGlzIGlzIHdoYXQgd2UgYWRkIHN0dWZmIHRvXG5cdFx0XHRjb25zdCB0b2N1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7XG5cdFx0XHR0b2N0b2dnbGVsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCAkdG9jdWwgPSAkKHRvY3VsKTtcblx0XHRcdFx0XHQkdG9jdWwudG9nZ2xlKCk7XG5cdFx0XHRcdFx0aWYgKCR0b2N1bC5maW5kKCc6dmlzaWJsZScpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dG9jdG9nZ2xlbGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6ZqQ6JePJywgJ+maseiXjycpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0b2N0b2dnbGVsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfmmL7npLonLCAn6aGv56S6Jyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmYWxzZVxuXHRcdFx0KTtcblx0XHRcdHRvY3RhYmxlLmFwcGVuZENoaWxkKHRvY3VsKTtcblx0XHRcdGNvbnRlbnRkaXYuYXBwZW5kQ2hpbGQodG9jdGFibGUpO1xuXHRcdFx0Y29uc3QgY29udGVudGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2NyaXB0LXVybFxuXHRcdFx0Y29udGVudGZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAnamF2YXNjcmlwdDp2b2lkKDApJyk7IC8vIHdhcyAjdHctc2F2ZSAtIGNoYW5nZWQgdG8gdm9pZCgwKSB0byB3b3JrIGFyb3VuZCBDaHJvbWUgaXNzdWVcblx0XHRcdGNvbnRlbnRmb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIFR3aW5rbGUuY29uZmlnLnNhdmUsIHRydWUpO1xuXHRcdFx0Y29udGVudGRpdi5hcHBlbmRDaGlsZChjb250ZW50Zm9ybSk7XG5cdFx0XHRjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xuXHRcdFx0Y29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuXHRcdFx0Y29udGVudGZvcm0uYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblx0XHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdFx0aWYgKHNlY3Rpb24uaGlkZGVuIHx8IChzZWN0aW9uLmFkbWluT25seSAmJiAhTW9yZWJpdHMudXNlcklzU3lzb3ApKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGkuZS4gXCJjb250aW51ZVwiIGluIHRoaXMgY29udGV4dFxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGFkZCB0byBUT0Ncblx0XHRcdFx0Y29uc3QgdG9jbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuXHRcdFx0XHR0b2NsaS5jbGFzc05hbWUgPSAndG9jbGV2ZWwtMSc7XG5cdFx0XHRcdGNvbnN0IHRvY2EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdHRvY2Euc2V0QXR0cmlidXRlKCdocmVmJywgYCMke3NlY3Rpb24ubW9kdWxlfWApO1xuXHRcdFx0XHR0b2NhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlY3Rpb24udGl0bGUpKTtcblx0XHRcdFx0dG9jbGkuYXBwZW5kQ2hpbGQodG9jYSk7XG5cdFx0XHRcdHRvY3VsLmFwcGVuZENoaWxkKHRvY2xpKTtcblx0XHRcdFx0bGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0XHRcdGxldCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0Y2VsbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMycpO1xuXHRcdFx0XHRjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDQnKTtcblx0XHRcdFx0aGVhZGluZy5zdHlsZS5ib3JkZXJCb3R0b20gPSAnMXB4IHNvbGlkICM4MDgwODAnO1xuXHRcdFx0XHRoZWFkaW5nLnN0eWxlLm1hcmdpblRvcCA9ICcwLjJlbSc7XG5cdFx0XHRcdGhlYWRpbmcuaWQgPSBzZWN0aW9uLm1vZHVsZTtcblx0XHRcdFx0aGVhZGluZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWN0aW9uLnRpdGxlKSk7XG5cdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoaGVhZGluZyk7XG5cdFx0XHRcdHJvdy5hcHBlbmRDaGlsZChjZWxsKTtcblx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZENoaWxkKHJvdyk7XG5cdFx0XHRcdGxldCByb3djb3VudCA9IDE7IC8vIGZvciByb3cgYmFuZGluZ1xuXHRcdFx0XHQvLyBhZGQgZWFjaCBvZiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIGZvcm1cblx0XHRcdFx0JChzZWN0aW9uLnByZWZlcmVuY2VzKS5lYWNoKChwcmVma2V5LCBwcmVmKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHByZWYuYWRtaW5Pbmx5ICYmICFNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGkuZS4gXCJjb250aW51ZVwiIGluIHRoaXMgY29udGV4dFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0XHRcdFx0cm93LnN0eWxlLm1hcmdpbkJvdHRvbSA9ICcwLjJlbSc7XG5cdFx0XHRcdFx0Ly8gY3JlYXRlIG9kZCByb3cgYmFuZGluZ1xuXHRcdFx0XHRcdGlmIChyb3djb3VudCsrICUgMiA9PT0gMCkge1xuXHRcdFx0XHRcdFx0cm93LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2IoMTI4IDEyOCAxMjgvLjEpJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0bGV0IGxhYmVsO1xuXHRcdFx0XHRcdGxldCBpbnB1dDtcblx0XHRcdFx0XHRjb25zdCBnb3RQcmVmID0gVHdpbmtsZS5nZXRQcmVmKHByZWYubmFtZSk7XG5cdFx0XHRcdFx0c3dpdGNoIChwcmVmLnR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOlxuXHRcdFx0XHRcdFx0XHQvLyBjcmVhdGUgYSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRjZWxsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcyJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuY2hlY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVmLmxhYmVsKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3N0cmluZyc6IC8vIGNyZWF0ZSBhbiBpbnB1dCBib3hcblx0XHRcdFx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBpbnB1dCBib3ggdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ2lkJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0aWYgKHByZWYudHlwZSA9PT0gJ2ludGVnZXInKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdzaXplJywgNik7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ251bWJlcicpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnc3RlcCcsICcxJyk7IC8vIGludGVnZXJzIG9ubHlcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGdvdFByZWYpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2VudW0nOiB7XG5cdFx0XHRcdFx0XHRcdC8vIGNyZWF0ZSBhIGNvbWJvIGJveFxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdC8vIG5vdGU6IGR1cGxpY2F0ZXMgdGhlIGNvZGUgYWJvdmUsIHVuZGVyIHN0cmluZy9pbnRlZ2VyXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBpbnB1dCBib3ggdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGxldCBvcHRpb25FeGlzdHMgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbZW51bXZhbHVlLCBlbnVtZGlzcGxheV0gb2YgT2JqZWN0LmVudHJpZXMocHJlZi5lbnVtVmFsdWVzKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZW51bXZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmID09PSBlbnVtdmFsdWUgfHxcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhY2sgdG8gY29udmVydCBvbGQgYm9vbGVhbiB3YXRjaGxpc3QgcHJlZnNcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHRvIGNvcnJlc3BvbmRpbmcgZW51bXMgKGFkZGVkIGluIHYyLjEpXG5cdFx0XHRcdFx0XHRcdFx0XHQodHlwZW9mIGdvdFByZWYgPT09ICdib29sZWFuJyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoKGdvdFByZWYgJiYgZW51bXZhbHVlID09PSAneWVzJykgfHwgKCFnb3RQcmVmICYmIGVudW12YWx1ZSA9PT0gJ25vJykpKVxuXHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCAnc2VsZWN0ZWQnKTtcblx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbkV4aXN0cyA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlbnVtZGlzcGxheSkpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LmFwcGVuZENoaWxkKG9wdGlvbik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gQXBwZW5kIHVzZXItZGVmaW5lZCB2YWx1ZSB0byBvcHRpb25zXG5cdFx0XHRcdFx0XHRcdGlmICghb3B0aW9uRXhpc3RzKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBnb3RQcmVmKTtcblx0XHRcdFx0XHRcdFx0XHRvcHRpb24uc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpO1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnb3RQcmVmKSk7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuYXBwZW5kQ2hpbGQob3B0aW9uKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGlucHV0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlICdzZXQnOiB7XG5cdFx0XHRcdFx0XHRcdC8vIGNyZWF0ZSBhIHNldCBvZiBjaGVjayBib3hlc1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgZmlyc3Qgb2YgYWxsXG5cdFx0XHRcdFx0XHRcdGNlbGwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzInKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpOyAvLyBub3QgcmVhbGx5IG5lY2Vzc2FyeSB0byB1c2UgYSBsYWJlbCBlbGVtZW50IGhlcmUsIGJ1dCB3ZSBkbyBpdCBmb3IgY29uc2lzdGVuY3kgb2Ygc3R5bGluZ1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgJHtwcmVmLmxhYmVsfe+8mmApKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChsYWJlbCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNoZWNrZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0XHRcdGNoZWNrZGl2LnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzFlbSc7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHdvcmtlciA9IChpdGVta2V5LCBpdGVtdmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjaGVja2xhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHRcdFx0XHRcdFx0XHRjaGVja2xhYmVsLnN0eWxlLm1hcmdpblJpZ2h0ID0gJzAuN2VtJztcblx0XHRcdFx0XHRcdFx0XHRjaGVja2xhYmVsLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjaGVjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2suc2V0QXR0cmlidXRlKCd0eXBlJywgJ2NoZWNrYm94Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2suc2V0QXR0cmlidXRlKCdpZCcsIGAke3ByZWYubmFtZX1fJHtpdGVta2V5fWApO1xuXHRcdFx0XHRcdFx0XHRcdGNoZWNrLnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke3ByZWYubmFtZX1fJHtpdGVta2V5fWApO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmICYmIGdvdFByZWYuaW5jbHVkZXMoaXRlbWtleSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNoZWNrLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBjYXRlciBmb3IgbGVnYWN5IGludGVnZXIgYXJyYXkgdmFsdWVzIGZvciB1bmxpbmtOYW1lc3BhY2VzICh0aGlzIGNhbiBiZSByZW1vdmVkIGEgZmV3IHllYXJzIGRvd24gdGhlIHRyYWNrLi4uKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdHByZWYubmFtZSA9PT0gJ3VubGlua05hbWVzcGFjZXMnICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmLmluY2x1ZGVzKE51bWJlci5wYXJzZUludChpdGVta2V5LCAxMCkpXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVjay5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5hcHBlbmRDaGlsZChjaGVjayk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpdGVtdmFsdWUpKTtcblx0XHRcdFx0XHRcdFx0XHRjaGVja2Rpdi5hcHBlbmRDaGlsZChjaGVja2xhYmVsKTtcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0aWYgKHByZWYuc2V0RGlzcGxheU9yZGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gYWRkIGNoZWNrIGJveGVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZGlzcGxheSBvcmRlclxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBwcmVmLnNldERpc3BsYXlPcmRlcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0d29ya2VyKGl0ZW0sIHByZWYuc2V0VmFsdWVzW2l0ZW1dKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gYWRkIGNoZWNrIGJveGVzIGFjY29yZGluZyB0byB0aGUgb3JkZXIgaXQgZ2V0cyBmZWQgdG8gdXMgKHByb2JhYmx5IHN0cmljdCBhbHBoYWJldGljYWwpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbaXRlbWtleSwgaXRlbXZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcmVmLnNldFZhbHVlcykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdvcmtlcihpdGVta2V5LCBpdGVtdmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGNoZWNrZGl2KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlICdjdXN0b21MaXN0Jzoge1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBidXR0b24gdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3VzdG9tTGlzdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLnNldEF0dHJpYnV0ZSgnaWQnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGN1c3RvbUxpc3RCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgVHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5kaXNwbGF5LCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdC8vIHVzZSBqUXVlcnkgZGF0YSBvbiB0aGUgYnV0dG9uIHRvIHN0b3JlIHRoZSBjdXJyZW50IGNvbmZpZyB2YWx1ZVxuXHRcdFx0XHRcdFx0XHQkKGN1c3RvbUxpc3RCdXR0b24pLmRhdGEoe1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBnb3RQcmVmLFxuXHRcdFx0XHRcdFx0XHRcdHByZWYsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn57yW6L6R6aG555uuJywgJ+e3qOi8r+mgheebricpKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoY3VzdG9tTGlzdEJ1dHRvbik7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0bXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiDmnKrnn6XnsbvlnovnmoTlsZ7mgKcgJHtwcmVmLm5hbWV9YCwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlY29uZmlnJyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0Ly8gYWRkIGhlbHAgdGlwXG5cdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0Y2VsbC5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0XHRcdGNlbGwuc3R5bGUuY29sb3IgPSAnZ3JheSc7XG5cdFx0XHRcdFx0aWYgKHByZWYuaGVscHRpcCkge1xuXHRcdFx0XHRcdFx0Ly8gY29udmVydCBtZW50aW9ucyBvZiB0ZW1wbGF0ZXMgaW4gdGhlIGhlbHB0aXAgdG8gY2xpY2thYmxlIGxpbmtzXG5cdFx0XHRcdFx0XHRjZWxsLmlubmVySFRNTCA9IHByZWYuaGVscHRpcFxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0XHQve3soLis/KX19L2csXG5cdFx0XHRcdFx0XHRcdFx0YHt7PGEgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1RlbXBsYXRlOicpfSQxXCIgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kMTwvYT59fWBcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0XHQvXFxbXFxbKC4rPyldXS9nLFxuXHRcdFx0XHRcdFx0XHRcdGA8YSBocmVmPVwiJHttdy51dGlsLmdldFVybCgnJyl9JDFcIiByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiPiQxPC9hPmBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gYWRkIHJlc2V0IGxpbmsgKGN1c3RvbSBsaXN0cyBkb24ndCBuZWVkIHRoaXMsIGFzIHRoZWlyIGNvbmZpZyB2YWx1ZSBpc24ndCBkaXNwbGF5ZWQgb24gdGhlIGZvcm0pXG5cdFx0XHRcdFx0aWYgKHByZWYudHlwZSAhPT0gJ2N1c3RvbUxpc3QnKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXNldGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgJyN0dy1yZXNldCcpO1xuXHRcdFx0XHRcdFx0cmVzZXRsaW5rLnNldEF0dHJpYnV0ZSgnaWQnLCBgdHdpbmtsZS1jb25maWctcmVzZXQtJHtwcmVmLm5hbWV9YCk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBUd2lua2xlLmNvbmZpZy5yZXNldFByZWZMaW5rLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc3R5bGUuY3NzRmxvYXQgPSAncmlnaHQnO1xuXHRcdFx0XHRcdFx0cmVzZXRsaW5rLnN0eWxlLm1hcmdpbiA9ICcwIDAuNmVtJztcblx0XHRcdFx0XHRcdHJlc2V0bGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ+WkjeS9jScsICflvqnkvY0nKSkpO1xuXHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChyZXNldGxpbmspO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZENoaWxkKHJvdyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZm9vdGVyYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRmb290ZXJib3guc2V0QXR0cmlidXRlKCdpZCcsICd0d2lua2xlLWNvbmZpZy1idXR0b25wYW5lJyk7XG5cdFx0XHRmb290ZXJib3guc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNCQ0NBREYnO1xuXHRcdFx0Zm9vdGVyYm94LnN0eWxlLnBhZGRpbmcgPSAnMC41ZW0nO1xuXHRcdFx0Y29uc3Qgc3VibWl0QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0XHRzdWJtaXRCdXR0b24uc2V0QXR0cmlidXRlKCdpZCcsICd0d2lua2xlLWNvbmZpZy1zdWJtaXQnKTtcblx0XHRcdHN1Ym1pdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7XG5cdFx0XHRzdWJtaXRCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCfkv53lrZjkv67mlLknLCAn5YSy5a2Y5L+u5pS5JykpKTtcblx0XHRcdGZvb3RlcmJveC5hcHBlbmRDaGlsZChzdWJtaXRCdXR0b24pO1xuXHRcdFx0Y29uc3QgZm9vdGVyc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdGZvb3RlcnNwYW4uY2xhc3NOYW1lID0gJ3BsYWlubGlua3MnO1xuXHRcdFx0Zm9vdGVyc3Bhbi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzIuNGVtJztcblx0XHRcdGZvb3RlcnNwYW4uc3R5bGUuZm9udFNpemUgPSAnOTAlJztcblx0XHRcdGNvbnN0IGZvb3RlcmEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRmb290ZXJhLnNldEF0dHJpYnV0ZSgnaHJlZicsICcjdHctcmVzZXQtYWxsJyk7XG5cdFx0XHRmb290ZXJhLnNldEF0dHJpYnV0ZSgnaWQnLCAndHdpbmtsZS1jb25maWctcmVzZXRhbGwnKTtcblx0XHRcdGZvb3RlcmEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBUd2lua2xlLmNvbmZpZy5yZXNldEFsbFByZWZzLCBmYWxzZSk7XG5cdFx0XHRmb290ZXJhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn5oGi5aSN6buY6K6kJywgJ+aBouW+qemgkOiorScpKSk7XG5cdFx0XHRmb290ZXJzcGFuLmFwcGVuZENoaWxkKGZvb3RlcmEpO1xuXHRcdFx0Zm9vdGVyYm94LmFwcGVuZENoaWxkKGZvb3RlcnNwYW4pO1xuXHRcdFx0Y29udGVudGZvcm0uYXBwZW5kQ2hpbGQoZm9vdGVyYm94KTtcblx0XHRcdC8vIHNpbmNlIGFsbCB0aGUgc2VjdGlvbiBoZWFkZXJzIGV4aXN0IG5vdywgd2UgY2FuIHRyeSBnb2luZyB0byB0aGUgcmVxdWVzdGVkIGFuY2hvclxuXHRcdFx0aWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoKSB7XG5cdFx0XHRcdGNvbnN0IGxvYyA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcnO1xuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaGFzaCA9IGxvYztcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKS51c2VyICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykuaW5kZXhPZihtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpID09PSAwICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykuc2xpY2UoLTMpID09PSAnLmpzJ1xuXHRcdCkge1xuXHRcdFx0Y29uc3QgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHQvLyBTdHlsZWQgaW4gdHdpbmtsZS5jc3Ncblx0XHRcdGJveC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R3aW5rbGUtY29uZmlnLWhlYWRlcmJveCcpO1xuXHRcdFx0bGV0IGxpbms7XG5cdFx0XHRjb25zdCBzY3JpcHRQYWdlTmFtZSA9IG13LmNvbmZpZ1xuXHRcdFx0XHQuZ2V0KCd3Z1BhZ2VOYW1lJylcblx0XHRcdFx0LnNsaWNlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKS5sYXN0SW5kZXhPZignLycpICsgMSxcblx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykubGFzdEluZGV4T2YoJy5qcycpXG5cdFx0XHRcdCk7XG5cdFx0XHRpZiAoc2NyaXB0UGFnZU5hbWUgPT09ICd0d2lua2xlb3B0aW9ucycpIHtcblx0XHRcdFx0Ly8gcGxhY2UgXCJ3aHkgbm90IHRyeSB0aGUgcHJlZmVyZW5jZSBwYW5lbFwiIG5vdGljZVxuXHRcdFx0XHRib3guc2V0QXR0cmlidXRlKCdjbGFzcycsICdjb25maWctdHdvcHQtYm94Jyk7XG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpID4gMCkge1xuXHRcdFx0XHRcdC8vIHBhZ2UgZXhpc3RzXG5cdFx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdFx0ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6L+Z6aG15YyF5ZCr5oKo55qEVHdpbmtsZeWPguaVsOiuvue9ru+8jOaCqOWPr+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+mAmemggeWMheWQq+aCqOeahFR3aW5rbGXlgY/lpb3oqK3lrprvvIzmgqjlj6/kvb/nlKgnXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHBhZ2UgZG9lcyBub3QgZXhpc3Rcblx0XHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0XHRkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmgqjlj6/phY3nva7mgqjnmoRUd2lua2xl77yM6YCa6L+H5L2/55SoJywgJ+aCqOWPr+mFjee9ruaCqOeahFR3aW5rbGXvvIzpgJrpgY7kvb/nlKgnKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChUd2lua2xlLmdldFByZWYoJ2NvbmZpZ1BhZ2UnKSkpO1xuXHRcdFx0XHRsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygnVHdpbmtsZeWPguaVsOiuvue9rumdouadvycsICdUd2lua2xl5YGP5aW96Kit5a6a6Z2i5p2/JykpKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKGxpbmspO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCfvvIzmiJbnm7TmjqXnvJbovpHmnKzpobXjgIInLCAn77yM5oiW55u05o6l57eo6Lyv5pys6aCB44CCJykpKTtcblx0XHRcdFx0JChib3gpLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyNjb250ZW50U3ViJykpO1xuXHRcdFx0fSBlbHNlIGlmIChbJ3ZlY3RvcicsICd2ZWN0b3ItMjAyMicsICdnb25nYmknLCAnY2l0aXplbicsICdjb21tb24nXS5pbmNsdWRlcyhzY3JpcHRQYWdlTmFtZSkpIHtcblx0XHRcdFx0Ly8gcGxhY2UgXCJMb29raW5nIGZvciBUd2lua2xlIG9wdGlvbnM/XCIgbm90aWNlXG5cdFx0XHRcdGJveC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2NvbmZpZy11c2Vyc2tpbi1ib3gnKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfoi6Xmgqjmg7PphY3nva7mgqjnmoRUd2lua2xl77yM6K+35L2/55SoJywgJ+iLpeaCqOaDs+mFjee9ruaCqOeahFR3aW5rbGXvvIzoq4vkvb/nlKgnKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChUd2lua2xlLmdldFByZWYoJ2NvbmZpZ1BhZ2UnKSkpO1xuXHRcdFx0XHRsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygnVHdpbmtsZeWPguaVsOiuvue9rumdouadvycsICdUd2lua2xl5YGP5aW96Kit5a6a6Z2i5p2/JykpKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKGxpbmspO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ+OAgicpKTtcblx0XHRcdFx0JChib3gpLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyNjb250ZW50U3ViJykpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0Ly8gY3VzdG9tIGxpc3QtcmVsYXRlZCBzdHVmZlxuXHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nID0ge307XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuYWRkUm93ID0gKGRsZ3RhYmxlLCB2YWx1ZSwgbGFiZWwpID0+IHtcblx0XHRjb25zdCBjb250ZW50dHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuXHRcdC8vIFwicmVtb3ZlXCIgYnV0dG9uXG5cdFx0bGV0IGNvbnRlbnR0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0Y29uc3QgcmVtb3ZlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0cmVtb3ZlQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcblx0XHRyZW1vdmVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdCQoY29udGVudHRyKS5yZW1vdmUoKTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0cmVtb3ZlQnV0dG9uLnRleHRDb250ZW50ID0gJ+enu+mZpCc7XG5cdFx0Y29udGVudHRkLmFwcGVuZENoaWxkKHJlbW92ZUJ1dHRvbik7XG5cdFx0Y29udGVudHRyLmFwcGVuZENoaWxkKGNvbnRlbnR0ZCk7XG5cdFx0Ly8gdmFsdWUgaW5wdXQgYm94XG5cdFx0Y29udGVudHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRsZXQgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XG5cdFx0aW5wdXQuY2xhc3NOYW1lID0gJ3R3aW5rbGUtY29uZmlnLWN1c3RvbWxpc3QtdmFsdWUnO1xuXHRcdGlucHV0LnN0eWxlLndpZHRoID0gJzk3JSc7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xuXHRcdH1cblx0XHRjb250ZW50dGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdGNvbnRlbnR0ci5hcHBlbmRDaGlsZChjb250ZW50dGQpO1xuXHRcdC8vIGxhYmVsIGlucHV0IGJveFxuXHRcdGNvbnRlbnR0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XG5cdFx0aW5wdXQuY2xhc3NOYW1lID0gJ3R3aW5rbGUtY29uZmlnLWN1c3RvbWxpc3QtbGFiZWwnO1xuXHRcdGlucHV0LnN0eWxlLndpZHRoID0gJzk4JSc7XG5cdFx0aWYgKGxhYmVsKSB7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgbGFiZWwpO1xuXHRcdH1cblx0XHRjb250ZW50dGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdGNvbnRlbnR0ci5hcHBlbmRDaGlsZChjb250ZW50dGQpO1xuXHRcdGRsZ3RhYmxlLmFwcGVuZENoaWxkKGNvbnRlbnR0cik7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuZGlzcGxheSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgJHByZWZidXR0b24gPSAkKGUudGFyZ2V0KTtcblx0XHRjb25zdCBjdXJ2YWx1ZSA9ICRwcmVmYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0Y29uc3QgY3VycHJlZiA9ICRwcmVmYnV0dG9uLmRhdGEoJ3ByZWYnKTtcblx0XHRjb25zdCBkaWFsb2cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDcyMCwgNDAwKTtcblx0XHRkaWFsb2cuc2V0VGl0bGUoY3VycHJlZi5sYWJlbCk7XG5cdFx0ZGlhbG9nLnNldFNjcmlwdE5hbWUod2luZG93LndnVUxTKCdUd2lua2xl5Y+C5pWw6K6+572uJywgJ1R3aW5rbGXlgY/lpb3oqK3lrponKSk7XG5cdFx0Y29uc3QgZGlhbG9nY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdGNvbnN0IGRsZ3RhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcblx0XHRkbGd0YWJsZS5jbGFzc05hbWUgPSAnd2lraXRhYmxlJztcblx0XHRkbGd0YWJsZS5zdHlsZS5tYXJnaW4gPSAnMS40ZW0gMWVtJztcblx0XHRkbGd0YWJsZS5zdHlsZS53aWR0aCA9ICc5NyUnO1xuXHRcdGNvbnN0IGRsZ3Rib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTtcblx0XHQvLyBoZWFkZXIgcm93XG5cdFx0bGV0IGRsZ3RyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcblx0XHQvLyB0b3AtbGVmdCBjZWxsXG5cdFx0bGV0IGRsZ3RoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGgnKTtcblx0XHRkbGd0aC5zdHlsZS53aWR0aCA9ICc1JSc7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdC8vIHZhbHVlIGNvbHVtbiBoZWFkZXJcblx0XHRkbGd0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoJyk7XG5cdFx0ZGxndGguc3R5bGUud2lkdGggPSAnMzUlJztcblx0XHRkbGd0aC50ZXh0Q29udGVudCA9IGN1cnByZWYuY3VzdG9tTGlzdFZhbHVlVGl0bGUgPz8gd2luZG93LndnVUxTKCfmlbDlgLwnLCAn5pW45YC8Jyk7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdC8vIGxhYmVsIGNvbHVtbiBoZWFkZXJcblx0XHRkbGd0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoJyk7XG5cdFx0ZGxndGguc3R5bGUud2lkdGggPSAnNjAlJztcblx0XHRkbGd0aC50ZXh0Q29udGVudCA9IGN1cnByZWYuY3VzdG9tTGlzdExhYmVsVGl0bGUgPz8gd2luZG93LndnVUxTKCfmoIfnrb4nLCAn5qiZ57GkJyk7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdGRsZ3Rib2R5LmFwcGVuZENoaWxkKGRsZ3RyKTtcblx0XHQvLyBjb250ZW50IHJvd3Ncblx0XHRsZXQgZ290Um93ID0gZmFsc2U7XG5cdFx0Zm9yIChjb25zdCB2IG9mIGN1cnZhbHVlKSB7XG5cdFx0XHRnb3RSb3cgPSB0cnVlO1xuXHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3coZGxndGJvZHksIHYudmFsdWUsIHYubGFiZWwpO1xuXHRcdH1cblx0XHQvLyBpZiB0aGVyZSBhcmUgbm8gdmFsdWVzIHByZXNlbnQsIGFkZCBhIGJsYW5rIHJvdyB0byBzdGFydCB0aGUgdXNlciBvZmZcblx0XHRpZiAoIWdvdFJvdykge1xuXHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3coZGxndGJvZHkpO1xuXHRcdH1cblx0XHQvLyBmaW5hbCBcImFkZFwiIGJ1dHRvblxuXHRcdGNvbnN0IGRsZ3Rmb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGZvb3QnKTtcblx0XHRkbGd0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0Y29uc3QgZGxndGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuXHRcdGRsZ3RkLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICczJyk7XG5cdFx0Y29uc3QgYWRkQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0YWRkQnV0dG9uLnN0eWxlLm1pbldpZHRoID0gJzhlbSc7XG5cdFx0YWRkQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcblx0XHRhZGRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuYWRkUm93KGRsZ3Rib2R5KTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0YWRkQnV0dG9uLnRleHRDb250ZW50ID0gJ+a3u+WKoCc7XG5cdFx0ZGxndGQuYXBwZW5kQ2hpbGQoYWRkQnV0dG9uKTtcblx0XHRkbGd0ci5hcHBlbmRDaGlsZChkbGd0ZCk7XG5cdFx0ZGxndGZvb3QuYXBwZW5kQ2hpbGQoZGxndHIpO1xuXHRcdGRsZ3RhYmxlLmFwcGVuZENoaWxkKGRsZ3Rib2R5KTtcblx0XHRkbGd0YWJsZS5hcHBlbmRDaGlsZChkbGd0Zm9vdCk7XG5cdFx0ZGlhbG9nY29udGVudC5hcHBlbmRDaGlsZChkbGd0YWJsZSk7XG5cdFx0Ly8gYnV0dG9ucGFuZSBidXR0b25zOiBbU2F2ZSBjaGFuZ2VzXSBbUmVzZXRdIFtDYW5jZWxdXG5cdFx0bGV0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuXHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7IC8vIHNvIE1vcmViaXRzLnNpbXBsZVdpbmRvdyBwdXRzIHRoZSBidXR0b24gaW4gdGhlIGJ1dHRvbiBwYW5lXG5cdFx0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHQnY2xpY2snLFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLnNhdmUoJHByZWZidXR0b24sIGRsZ3Rib2R5KTtcblx0XHRcdFx0ZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHR9LFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn5L+d5a2Y5L+u5pS5JywgJ+WEsuWtmOS/ruaUuScpO1xuXHRcdGRpYWxvZ2NvbnRlbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblx0XHRidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRidXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3N1Ym1pdCcpOyAvLyBzbyBNb3JlYml0cy5zaW1wbGVXaW5kb3cgcHV0cyB0aGUgYnV0dG9uIGluIHRoZSBidXR0b24gcGFuZVxuXHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0J2NsaWNrJyxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5yZXNldCgkcHJlZmJ1dHRvbiwgZGxndGJvZHkpO1xuXHRcdFx0fSxcblx0XHRcdGZhbHNlXG5cdFx0KTtcblx0XHRidXR0b24udGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+WkjeS9jScsICflvqnkvY0nKTtcblx0XHRkaWFsb2djb250ZW50LmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cdFx0YnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdzdWJtaXQnKTsgLy8gc28gTW9yZWJpdHMuc2ltcGxlV2luZG93IHB1dHMgdGhlIGJ1dHRvbiBpbiB0aGUgYnV0dG9uIHBhbmVcblx0XHRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGRpYWxvZy5jbG9zZSgpOyAvLyB0aGUgZXZlbnQgcGFyYW1ldGVyIG9uIHRoaXMgZnVuY3Rpb24gc2VlbXMgdG8gYmUgYnJva2VuXG5cdFx0XHR9LFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9ICflj5bmtognO1xuXHRcdGRpYWxvZ2NvbnRlbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblx0XHRkaWFsb2cuc2V0Q29udGVudChkaWFsb2djb250ZW50KTtcblx0XHRkaWFsb2cuZGlzcGxheSgpO1xuXHR9O1xuXHQvLyBSZXNldHMgdGhlIGRhdGEgdmFsdWUsIHJlLXBvcHVsYXRlcyBiYXNlZCBvbiB0aGUgbmV3IChkZWZhdWx0KSB2YWx1ZSwgdGhlbiBzYXZlcyB0aGVcblx0Ly8gb2xkIGRhdGEgdmFsdWUgYWdhaW4gKGxlc3Mgc3VycHJpc2luZyBiZWhhdmlvdXIpXG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cucmVzZXQgPSAoYnV0dG9uLCB0Ym9keSkgPT4ge1xuXHRcdC8vIHJlc2V0IHZhbHVlIG9uIGJ1dHRvblxuXHRcdGNvbnN0ICRidXR0b24gPSAkKGJ1dHRvbik7XG5cdFx0Y29uc3QgY3VycHJlZiA9ICRidXR0b24uZGF0YSgncHJlZicpO1xuXHRcdGNvbnN0IG9sZHZhbHVlID0gJGJ1dHRvbi5kYXRhKCd2YWx1ZScpO1xuXHRcdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZihjdXJwcmVmKTtcblx0XHQvLyByZXNldCBmb3JtXG5cdFx0Y29uc3QgJHRib2R5ID0gJCh0Ym9keSk7XG5cdFx0JHRib2R5LmZpbmQoJ3RyJykuc2xpY2UoMSkucmVtb3ZlKCk7IC8vIGFsbCByb3dzIGV4Y2VwdCB0aGUgZmlyc3QgKGhlYWRlcikgcm93XG5cdFx0Ly8gYWRkIHRoZSBuZXcgdmFsdWVzXG5cdFx0Y29uc3QgY3VydmFsdWUgPSAkYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0Zm9yIChjb25zdCB2IG9mIGN1cnZhbHVlKSB7XG5cdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLmFkZFJvdyh0Ym9keSwgdi52YWx1ZSwgdi5sYWJlbCk7XG5cdFx0fVxuXHRcdC8vIHNhdmUgdGhlIG9sZCB2YWx1ZVxuXHRcdCRidXR0b24uZGF0YSgndmFsdWUnLCBvbGR2YWx1ZSk7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuc2F2ZSA9IChidXR0b24sIHRib2R5KSA9PiB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0bGV0IGN1cnJlbnQgPSB7fTtcblx0XHQkKHRib2R5KVxuXHRcdFx0LmZpbmQoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcblx0XHRcdC5lYWNoKChpbnB1dGtleSwgaW5wdXQpID0+IHtcblx0XHRcdFx0aWYgKCQoaW5wdXQpLmhhc0NsYXNzKCd0d2lua2xlLWNvbmZpZy1jdXN0b21saXN0LXZhbHVlJykpIHtcblx0XHRcdFx0XHRjdXJyZW50ID0ge1xuXHRcdFx0XHRcdFx0dmFsdWU6IGlucHV0LnZhbHVlLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudC5sYWJlbCA9IGlucHV0LnZhbHVlO1xuXHRcdFx0XHRcdC8vIGV4Y2x1ZGUgdG90YWxseSBlbXB0eSByb3dzXG5cdFx0XHRcdFx0aWYgKGN1cnJlbnQudmFsdWUgfHwgY3VycmVudC5sYWJlbCkge1xuXHRcdFx0XHRcdFx0cmVzdWx0LnB1c2goY3VycmVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHQkKGJ1dHRvbikuZGF0YSgndmFsdWUnLCByZXN1bHQpO1xuXHR9O1xuXHQvLyByZXNldC9yZXN0b3JlIGRlZmF1bHRzXG5cdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZkxpbmsgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHdhbnRlZHByZWYgPSBlLnRhcmdldC5pZC5zbGljZSgyMSk7IC8vIFwidHdpbmtsZS1jb25maWctcmVzZXQtXCIgcHJlZml4IGlzIHN0cmlwcGVkXG5cdFx0Ly8gc2VhcmNoIHRhY3RpY3Ncblx0XHQkKFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zKS5lYWNoKChzZWN0aW9ua2V5LCBzZWN0aW9uKSA9PiB7XG5cdFx0XHRpZiAoc2VjdGlvbi5oaWRkZW4gfHwgKHNlY3Rpb24uYWRtaW5Pbmx5ICYmICFNb3JlYml0cy51c2VySXNTeXNvcCkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGNvbnRpbnVlOiBza2lwIGltcG9zc2liaWxpdGllc1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgZm91bmRpdCA9IGZhbHNlO1xuXHRcdFx0JChzZWN0aW9uLnByZWZlcmVuY2VzKS5lYWNoKChwcmVma2V5LCBwcmVmKSA9PiB7XG5cdFx0XHRcdGlmIChwcmVmLm5hbWUgIT09IHdhbnRlZHByZWYpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWVcblx0XHRcdFx0fVxuXG5cdFx0XHRcdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZihwcmVmKTtcblx0XHRcdFx0Zm91bmRpdCA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBmYWxzZTsgLy8gYnJlYWtcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoZm91bmRpdCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7IC8vIGJyZWFrXG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gZmFsc2U7IC8vIHN0b3AgbGluayBmcm9tIHNjcm9sbGluZyBwYWdlXG5cdH07XG5cblx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmID0gKHByZWYpID0+IHtcblx0XHRzd2l0Y2ggKHByZWYudHlwZSkge1xuXHRcdFx0Y2FzZSAnYm9vbGVhbic6XG5cdFx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1gKS5jaGVja2VkID0gVHdpbmtsZS5kZWZhdWx0Q29uZmlnW3ByZWYubmFtZV07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3RyaW5nJzpcblx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0Y2FzZSAnZW51bSc6XG5cdFx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1gKS52YWx1ZSA9IFR3aW5rbGUuZGVmYXVsdENvbmZpZ1twcmVmLm5hbWVdO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3NldCc6XG5cdFx0XHRcdGZvciAoY29uc3QgW2l0ZW1rZXldIG9mIE9iamVjdC5lbnRyaWVzKHByZWYuc2V0VmFsdWVzKSkge1xuXHRcdFx0XHRcdGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gKSkge1xuXHRcdFx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7cHJlZi5uYW1lfV8ke2l0ZW1rZXl9YCkuY2hlY2tlZCA9XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZ1twcmVmLm5hbWVdLmluY2x1ZGVzKGl0ZW1rZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2N1c3RvbUxpc3QnOlxuXHRcdFx0XHQkKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1gKSkuZGF0YSgndmFsdWUnLCBUd2lua2xlLmRlZmF1bHRDb25maWdbcHJlZi5uYW1lXSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiB1bmtub3duIGRhdGEgdHlwZSBmb3IgcHJlZmVyZW5jZSAke3ByZWYubmFtZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjb25maWcnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNvbmZpZy5yZXNldEFsbFByZWZzID0gKCkgPT4ge1xuXHRcdC8vIG5vIGNvbmZpcm1hdGlvbiBtZXNzYWdlIC0gdGhlIHVzZXIgY2FuIGp1c3QgcmVmcmVzaC9jbG9zZSB0aGUgcGFnZSB0byBhYm9ydFxuXHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdGlmIChzZWN0aW9uLmhpZGRlbiB8fCAoc2VjdGlvbi5hZG1pbk9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWU6IHNraXAgaW1wb3NzaWJpbGl0aWVzXG5cdFx0XHR9XG5cblx0XHRcdCQoc2VjdGlvbi5wcmVmZXJlbmNlcykuZWFjaCgocHJlZmtleSwgcHJlZikgPT4ge1xuXHRcdFx0XHRpZiAoIXByZWYuYWRtaW5Pbmx5IHx8IE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmKHByZWYpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0pO1xuXHRcdHJldHVybiBmYWxzZTsgLy8gc3RvcCBsaW5rIGZyb20gc2Nyb2xsaW5nIHBhZ2Vcblx0fTtcblxuXHRUd2lua2xlLmNvbmZpZy5zYXZlID0gKGUpID0+IHtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdHdpbmtsZS1jb25maWctY29udGVudCcpKTtcblx0XHRjb25zdCB1c2VyanMgPSBgJHttdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVttdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnVzZXJdfToke213LmNvbmZpZy5nZXQoXG5cdFx0XHQnd2dVc2VyTmFtZSdcblx0XHQpfS90d2lua2xlb3B0aW9ucy5qc2A7XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdHVzZXJqcyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2Y5Y+C5pWw6K6+572u5YiwICcsICflhLLlrZjlgY/lpb3oqK3lrprliLAgJykgKyB1c2VyanNcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMoZS50YXJnZXQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuY29uZmlnLndyaXRlUHJlZnMpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcblx0VHdpbmtsZS5jb25maWcud3JpdGVQcmVmcyA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Ly8gdGhpcyBpcyB0aGUgb2JqZWN0IHdoaWNoIGdldHMgc2VyaWFsaXplZCBpbnRvIEpTT047IG9ubHlcblx0XHQvLyBwcmVmZXJlbmNlcyB0aGF0IHRoaXMgc2NyaXB0IGtub3dzIGFib3V0IGFyZSBrZXB0XG5cdFx0Y29uc3QgbmV3Q29uZmlnID0ge1xuXHRcdFx0b3B0aW9uc1ZlcnNpb246IDIuMSxcblx0XHR9O1xuXHRcdC8vIGEgY29tcGFyaXNvbiBmdW5jdGlvbiBpcyBuZWVkZWQgbGF0ZXIgb25cblx0XHQvLyBpdCBpcyBqdXN0IGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzIChpLmUuIGNvbXBhcmluZyBzdHJpbmdzLCBudW1iZXJzLCBib29sZWFucyxcblx0XHQvLyBhcnJheXMgb2Ygc3RyaW5ncywgYW5kIGFycmF5cyBvZiB7IHZhbHVlLCBsYWJlbCB9KVxuXHRcdC8vIGFuZCBpdCBpcyBub3QgdmVyeSByb2J1c3Q6IGUuZy4gY29tcGFyZShbMl0sIFtcIjJcIl0pID09PSB0cnVlLCBhbmRcblx0XHQvLyBjb21wYXJlKHt9LCB7fSkgPT09IGZhbHNlLCBidXQgaXQncyBnb29kIGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzIGhlcmVcblx0XHRjb25zdCBjb21wYXJlID0gKGEsIGIpID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG5cdFx0XHRcdGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0YS5zb3J0KCk7XG5cdFx0XHRcdGIuc29ydCgpO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgYVtpXTsgKytpKSB7XG5cdFx0XHRcdFx0Ly8gY29tcGFyaXNvbiBvZiB0aGUgdHdvIHByb3BlcnRpZXMgb2YgY3VzdG9tIGxpc3RzXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBhW2ldID09PSAnb2JqZWN0JyAmJiAoYVtpXS5sYWJlbCAhPT0gYltpXS5sYWJlbCB8fCBhW2ldLnZhbHVlICE9PSBiW2ldLnZhbHVlKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYVtpXS50b1N0cmluZygpICE9PSBiW2ldLnRvU3RyaW5nKCkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYSA9PT0gYjtcblx0XHR9O1xuXHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdGlmIChzZWN0aW9uLmFkbWluT25seSAmJiAhTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0cmV0dXJuOyAvLyBpLmUuIFwiY29udGludWVcIiBpbiB0aGlzIGNvbnRleHRcblx0XHRcdH1cblx0XHRcdC8vIHJlYWNoIGVhY2ggb2YgdGhlIHByZWZlcmVuY2VzIGZyb20gdGhlIGZvcm1cblx0XHRcdCQoc2VjdGlvbi5wcmVmZXJlbmNlcykuZWFjaCgocHJlZmtleSwgcHJlZikgPT4ge1xuXHRcdFx0XHRsZXQgdXNlclZhbHVlOyAvLyA9IHVuZGVmaW5lZFxuXHRcdFx0XHQvLyBvbmx5IHJlYWQgZm9ybSB2YWx1ZXMgZm9yIHRob3NlIHByZWZzIHRoYXQgaGF2ZSB0aGVtXG5cdFx0XHRcdGlmICghcHJlZi5hZG1pbk9ubHkgfHwgTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0XHRpZiAoIXNlY3Rpb24uaGlkZGVuKSB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHByZWYudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlICdib29sZWFuJzpcblx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIGZyb20gdGhlIGNoZWNrYm94XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gZm9ybVtwcmVmLm5hbWVdLmNoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3N0cmluZyc6IC8vIHJlYWQgZnJvbSB0aGUgaW5wdXQgYm94IG9yIGNvbWJvIGJveFxuXHRcdFx0XHRcdFx0XHRjYXNlICdlbnVtJzpcblx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBmb3JtW3ByZWYubmFtZV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgZnJvbSB0aGUgaW5wdXQgYm94XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gTnVtYmVyLnBhcnNlSW50KGZvcm1bcHJlZi5uYW1lXS52YWx1ZSwgMTApO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChOdW1iZXIuaXNOYU4odXNlclZhbHVlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2YJywgJ+WEsuWtmCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+aCqOS4uiAnLCAn5oKo54K6ICcpICsgcHJlZi5uYW1lfSDmjIflrprnmoTlgLzvvIgke3ByZWYudmFsdWV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ieS4jeWQiOazle+8jOS8mue7p+e7reS/neWtmOaTjeS9nO+8jOS9huatpOWAvOWwhuS8mui3s+i/h+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ieS4jeWQiOazle+8jOacg+e5vOe6jOWEsuWtmOaTjeS9nO+8jOS9huatpOWAvOWwh+acg+i3s+mBjuOAgidcblx0XHRcdFx0XHRcdFx0XHRcdFx0KX1gXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3NldCc6XG5cdFx0XHRcdFx0XHRcdFx0Ly8gcmVhZCBmcm9tIHRoZSBzZXQgb2YgY2hlY2sgYm94ZXNcblx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAocHJlZi5zZXREaXNwbGF5T3JkZXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgb25seSB0aG9zZSBrZXlzIHNwZWNpZmllZCBpbiB0aGUgZGlzcGxheSBvcmRlclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHByZWYuc2V0RGlzcGxheU9yZGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChmb3JtW2Ake3ByZWYubmFtZX1fJHtpdGVtfWBdLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUucHVzaChpdGVtKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIGFsbCB0aGUga2V5cyBpbiB0aGUgbGlzdCBvZiB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2l0ZW1rZXldIG9mIE9iamVjdC5lbnRyaWVzKHByZWYuc2V0VmFsdWVzKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZm9ybVtgJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gXS5jaGVja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlLnB1c2goaXRlbWtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2N1c3RvbUxpc3QnOlxuXHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgZnJvbSB0aGUgalF1ZXJ5IGRhdGEgc3RvcmVkIG9uIHRoZSBidXR0b24gb2JqZWN0XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gJChmb3JtW3ByZWYubmFtZV0pLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0bXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiDmnKrnn6XmlbDmja7nsbvlnovvvIzlsZ7mgKcgJHtwcmVmLm5hbWV9YCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWNvbmZpZycsXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLnByZWZzKSB7XG5cdFx0XHRcdFx0XHQvLyBSZXRhaW4gdGhlIGhpZGRlbiBwcmVmZXJlbmNlcyB0aGF0IG1heSBoYXZlIGN1c3RvbWlzZWQgYnkgdGhlIHVzZXIgZnJvbSB0d2lua2xlb3B0aW9ucy5qc1xuXHRcdFx0XHRcdFx0Ly8gdW5kZWZpbmVkIGlmIG5vdCBzZXRcblx0XHRcdFx0XHRcdHVzZXJWYWx1ZSA9IFR3aW5rbGUucHJlZnNbcHJlZi5uYW1lXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb25seSBzYXZlIHRob3NlIHByZWZlcmVuY2VzIHRoYXQgYXJlICpkaWZmZXJlbnQqIGZyb20gdGhlIGRlZmF1bHRcblx0XHRcdFx0aWYgKHVzZXJWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFjb21wYXJlKHVzZXJWYWx1ZSwgVHdpbmtsZS5kZWZhdWx0Q29uZmlnW3ByZWYubmFtZV0pKSB7XG5cdFx0XHRcdFx0bmV3Q29uZmlnW3ByZWYubmFtZV0gPSB1c2VyVmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGNvbnN0IG5vd2lraSA9ICdub3dpa2knO1xuXHRcdGxldCB0ZXh0ID0gYC8vIDwke25vd2lraX0+XFxuJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRgLy8gdHdpbmtsZW9wdGlvbnMuanPvvJrnlKjmiLdUd2lua2xl5Y+C5pWw6K6+572u5paH5Lu2XFxuLy9cXG4vLyDms6jvvJrkv67mlLnmgqjnmoTlj4LmlbDorr7nva7mnIDnroDljZXnmoTlip7ms5XmmK/kvb/nlKhcXG4vLyBUd2lua2xl5Y+C5pWw6K6+572u6Z2i5p2/77yM5ZyoW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXeOAglxcbi8vXFxuLy8g6L+Z5Liq5paH5Lu25piv6Ieq5Yqo55Sf5oiQ55qE77yM5oKo5omA5YGa55qE5Lu75L2V5L+u5pS577yI6Zmk5LqGXFxuLy8g5Lul5LiA56eN5ZCI5rOV55qESmF2YVNjcmlwdOeahOaWueW8j+adpeS/ruaUuei/meS6m+WxnuaAp+WAvO+8ieS8mlxcbi8vIOWcqOS4i+S4gOasoeaCqOeCueWHu+KAnOS/neWtmOKAneaXtuiiq+imhuebluOAglxcbi8vIOS/ruaUueatpOaWh+S7tuaXtu+8jOivt+iusOW+l+S9v+eUqOWQiOazleeahEphdmFTY3JpcHTjgIJcXG5gLFxuXHRcdFx0YC8vIHR3aW5rbGVvcHRpb25zLmpz77ya5L2/55So6ICFVHdpbmtsZeWPg+aVuOioreWumuaqlOahiFxcbi8vXFxuLy8g6Ki777ya5L+u5pS55oKo55qE5Y+D5pW46Kit5a6a5pyA57Ch5Zau55qE6L6m5rOV5piv5L2/55SoXFxuLy8gVHdpbmtsZeWPg+aVuOioreWumumdouadv++8jOWcqFtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV3jgIJcXG4vL1xcbi8vIOmAmeWAi+aqlOahiOaYr+iHquWLleeUoueUn+eahO+8jOaCqOaJgOWBmueahOS7u+S9leS/ruaUue+8iOmZpOS6hlxcbi8vIOS7peS4gOeoruWQiOazleeahEphdmFTY3JpcHTnmoTmlrnlvI/kvobkv67mlLnpgJnkupvlsazmgKflgLzvvInmnINcXG4vLyDlnKjkuIvkuIDmrKHmgqjpu57mk4rjgIzlhLLlrZjjgI3mmYLooqvopobok4vjgIJcXG4vLyDkv67mlLnmraTmqpTmoYjmmYLvvIzoq4voqJjlvpfkvb/nlKjlkIjms5XnmoRKYXZhU2NyaXB044CCXFxuYFxuXHRcdCl9YDtcblx0XHR0ZXh0ICs9XG5cdFx0XHQnXFxud2luZG93LlR3aW5rbGUgPSB3aW5kb3cuVHdpbmtsZSB8fCB7fTtcXG53aW5kb3cuVHdpbmtsZS5wcmVmcyA9IHdpbmRvdy5Ud2lua2xlLnByZWZzIHx8IHt9O1xcbndpbmRvdy5Ud2lua2xlLnByZWZzID0gJztcblx0XHR0ZXh0ICs9IEpTT04uc3RyaW5naWZ5KG5ld0NvbmZpZywgbnVsbCwgMik7XG5cdFx0dGV4dCArPSBgO1xcblxcbiR7d2luZG93LndnVUxTKCcvLyB0d2lua2xlb3B0aW9ucy5qc+WIsOatpOS4uuatolxcbicsICcvLyB0d2lua2xlb3B0aW9ucy5qc+WIsOatpOeCuuatolxcbicpfS8vIDwvJHtub3dpa2l9PmA7XG5cdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0d2luZG93LndnVUxTKCfkv53lrZhUd2lua2xl5Y+C5pWw6K6+572u77ya5p2l6IeqW1snLCAn5YSy5a2YVHdpbmtsZeWBj+WlveioreWumu+8muS+huiHqltbJykgK1xuXHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ11d55qE6Ieq5Yqo57yW6L6RJywgJ11d55qE6Ieq5YuV57eo6LyvJylcblx0XHQpO1xuXHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLmNvbmZpZy5zYXZlU3VjY2Vzcyk7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLnNhdmVTdWNjZXNzID0gKHBhZ2VvYmopID0+IHtcblx0XHRwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCfmiJDlip8nKTtcblx0XHRjb25zdCBub3RpY2Vib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRub3RpY2Vib3guY2xhc3NOYW1lID0gJ213LW1lc3NhZ2UtYm94IG13LW1lc3NhZ2UtYm94LXN1Y2Nlc3MnO1xuXHRcdG5vdGljZWJveC5zdHlsZS5mb250U2l6ZSA9ICcxMDAlJztcblx0XHRub3RpY2Vib3guc3R5bGUubWFyZ2luVG9wID0gJzJlbSc7XG5cdFx0bm90aWNlYm94LmlubmVySFRNTCA9IGA8cD48Yj4ke3dpbmRvdy53Z1VMUyhcblx0XHRcdCfmgqjnmoRUd2lua2xl5Y+C5pWw6K6+572u5bey6KKr5L+d5a2Y44CCJyxcblx0XHRcdCfmgqjnmoRUd2lua2xl5YGP5aW96Kit5a6a5bey6KKr5YSy5a2Y44CCJ1xuXHRcdCl9PC9iPjwvcD48cD4ke3dpbmRvdy53Z1VMUygn6KaB55yL5Yiw6L+Z5Lqb5pu05pS577yM5oKo5Y+v6IO96ZyA6KaBJywgJ+imgeeci+WIsOmAmeS6m+abtOaUue+8jOaCqOWPr+iDvemcgOimgScpfTxhIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKFxuXHRcdFx0J0xJQjpCWVBBU1MnXG5cdFx0KX1cIiB0aXRsZT1cIkxJQjpCWVBBU1NcIj48Yj4ke3dpbmRvdy53Z1VMUygn57uV6L+H5rWP6KeI5Zmo57yT5a2YJywgJ+e5numBjueAj+imveWZqOW/q+WPlicpfTwvYj48L2E+44CCPC9wPmA7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQobm90aWNlYm94KTtcblx0XHRjb25zdCBub3RpY2VjbGVhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7XG5cdFx0bm90aWNlY2xlYXIuc3R5bGUuY2xlYXIgPSAnYm90aCc7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQobm90aWNlY2xlYXIpO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmNvbmZpZy5pbml0KTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICJpbXBvcnQgJy4vVHdpbmtsZS5sZXNzJztcblxuKGFzeW5jIGZ1bmN0aW9uIHR3aW5rbGVMb2FkKCkge1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVhcnYnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZXdhcm4nKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJsb2NrJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL2ZyaWVuZGx5dGFsa2JhY2snKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZXNwZWVkeScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlY29weXZpbycpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xleGZkJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVpbWFnZScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlcHJvdGVjdCcpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy9mcmllbmRseXRhZycpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlc3R1YicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlZGlmZicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xldW5saW5rJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVmbHVmZicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlYmF0Y2hkZWxldGUnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJhdGNodW5kZWxldGUnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJhdGNocHJvdGVjdCcpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlY2xvc2UnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWNvbmZpZycpO1xufSkoKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUEsNkZBQUFBLFNBQUE7QUFBQTtBQUNBLFFBQUksUUFBUSxTQUFVLElBQUk7QUFDeEIsYUFBTyxNQUFNLEdBQUcsU0FBUyxRQUFRO0FBQUEsSUFDbkM7QUFHQSxJQUFBQSxRQUFPO0FBQUEsSUFFTCxNQUFN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dWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIlN5bWJvbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgImRvY3VtZW50IiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiVHlwZUVycm9yIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJ0d2lua2xlX2V4cG9ydHMiLCAiaW5pdF90d2lua2xlIiwgIl9fZXNtIiwgInR3aW5rbGUiLCAiJCIsICJfd2luZG93IiwgIiRib2R5IiwgIlR3aW5rbGUyIiwgIndpbmRvdyIsICJUd2lua2xlIiwgIk1vcmViaXRzIiwgInVzZXJJc0luR3JvdXAiLCAiY29uc29sZSIsICJ3YXJuIiwgImNoYW5nZVRhZ3MiLCAic3VtbWFyeUFkIiwgImhhdG5vdGVSZWdleCIsICJpbml0Q2FsbGJhY2tzIiwgImFkZEluaXRDYWxsYmFjayIsICJmdW5jIiwgIm5hbWUiLCAicHVzaCIsICJkZWZhdWx0Q29uZmlnIiwgInVzZXJUYWxrUGFnZU1vZGUiLCAiZGlhbG9nTGFyZ2VGb250IiwgImRpc2FibGVkTW9kdWxlcyIsICJ1c2VySXNTeXNvcCIsICJkaXNhYmxlZFN5c29wTW9kdWxlcyIsICJzcGlXYXRjaFJlcG9ydCIsICJkZWZhdWx0VG9CbG9jazY0IiwgImRlZmF1bHRUb1BhcnRpYWxCbG9ja3MiLCAiYmxhbmtUYWxrcGFnZU9uSW5kZWZCbG9jayIsICJ3YXRjaEJsb2NrTm90aWNlcyIsICJjdXN0b21CbG9ja1JlYXNvbkxpc3QiLCAib3BlblRhbGtQYWdlIiwgIm9wZW5UYWxrUGFnZU9uQXV0b1JldmVydCIsICJyb2xsYmFja0luUGxhY2UiLCAibWFya1JldmVydGVkUGFnZXNBc01pbm9yIiwgIndhdGNoUmV2ZXJ0ZWRQYWdlcyIsICJ3YXRjaFJldmVydGVkRXhwaXJ5IiwgIm9mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQiLCAiY29uZmlybU9uRmx1ZmYiLCAic2hvd1JvbGxiYWNrTGlua3MiLCAiY3VzdG9tUmV2ZXJ0U3VtbWFyeSIsICJub3RpZnlVc2VyT25EZWxpIiwgImRlbGlXYXRjaFBhZ2UiLCAiZGVsaVdhdGNoVXNlciIsICJ3YXRjaFJlcXVlc3RlZFBhZ2VzIiwgIndhdGNoUFBUYWdnZWRQYWdlcyIsICJ3YXRjaFByb3RlY3RlZFBhZ2VzIiwgInNwZWVkeVNlbGVjdGlvblN0eWxlIiwgIndhdGNoU3BlZWR5UGFnZXMiLCAid2F0Y2hTcGVlZHlFeHBpcnkiLCAibWFya1NwZWVkeVBhZ2VzQXNQYXRyb2xsZWQiLCAid2F0Y2hTcGVlZHlVc2VyIiwgIm5vdGlmeVVzZXJPblNwZWVkeURlbGV0aW9uTm9taW5hdGlvbiIsICJ3YXJuVXNlck9uU3BlZWR5RGVsZXRlIiwgInByb21wdEZvclNwZWVkeURlbGV0aW9uU3VtbWFyeSIsICJvcGVuVXNlclRhbGtQYWdlT25TcGVlZHlEZWxldGUiLCAiZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZSIsICJkZWxldGVSZWRpcmVjdHNPbkRlbGV0ZSIsICJkZWxldGVTeXNvcERlZmF1bHRUb0RlbGV0ZSIsICJzcGVlZHlXaW5kb3dIZWlnaHQiLCAic3BlZWR5V2luZG93V2lkdGgiLCAibG9nU3BlZWR5Tm9taW5hdGlvbnMiLCAic3BlZWR5TG9nUGFnZU5hbWUiLCAibm9Mb2dPblNwZWVkeU5vbWluYXRpb24iLCAiZW5sYXJnZUc3SW5wdXQiLCAidW5saW5rTmFtZXNwYWNlcyIsICJkZWZhdWx0V2FybmluZ0dyb3VwIiwgImNvbWJpbmVkU2luZ2xldE1lbnVzIiwgIndhdGNoV2FybmluZ3MiLCAib2xkU2VsZWN0IiwgImN1c3RvbVdhcm5pbmdMaXN0IiwgImF1dG9NZW51QWZ0ZXJSb2xsYmFjayIsICJsb2dYZmROb21pbmF0aW9ucyIsICJ4ZmRMb2dQYWdlTmFtZSIsICJub0xvZ09uWGZkTm9taW5hdGlvbiIsICJ4ZmRXYXRjaERpc2N1c3Npb24iLCAieGZkV2F0Y2hQYWdlIiwgInhmZFdhdGNoVXNlciIsICJtYXJrWGZkUGFnZXNBc1BhdHJvbGxlZCIsICJGd2RDc2RUb1hmZCIsICJhZmREZWZhdWx0Q2F0ZWdvcnkiLCAiYWZkRmFtZURlZmF1bHRSZWFzb24iLCAiYWZkU3Vic3R1YkRlZmF1bHRSZWFzb24iLCAiWGZkQ2xvc2UiLCAiY29weXZpb1dhdGNoUGFnZSIsICJjb3B5dmlvV2F0Y2hVc2VyIiwgIm1hcmtDb3B5dmlvUGFnZXNBc1BhdHJvbGxlZCIsICJhdXRvbGV2ZWxTdGFsZURheXMiLCAicmV2ZXJ0TWF4UmV2aXNpb25zIiwgImJhdGNoTWF4IiwgImJhdGNoQ2h1bmtzIiwgImNvbmZpZ1BhZ2UiLCAicHJvamVjdE5hbWVzcGFjZU5hbWUiLCAibXciLCAiY29uZmlnIiwgImdldCIsICJzYW5kYm94UGFnZSIsICJkZWxldGlvblN1bW1hcnlBZCIsICJwcm90ZWN0aW9uU3VtbWFyeUFkIiwgImJsb2NrU3VtbWFyeUFkIiwgImdyb3VwQnlEZWZhdWx0IiwgIndhdGNoVGFnZ2VkUGFnZXMiLCAid2F0Y2hNZXJnZURpc2N1c3Npb25zIiwgIm1hcmtUYWdnZWRQYWdlc0FzTWlub3IiLCAibWFya1RhZ2dlZFBhZ2VzQXNQYXRyb2xsZWQiLCAidGFnQXJ0aWNsZVNvcnRPcmRlciIsICJjdXN0b21UYWdMaXN0IiwgImN1c3RvbUZpbGVUYWdMaXN0IiwgImN1c3RvbVJlZGlyZWN0VGFnTGlzdCIsICJ3YXRjaFN0dWJiZWRQYWdlcyIsICJtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vciIsICJtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQiLCAic3R1YkFydGljbGVTb3J0T3JkZXIiLCAiY3VzdG9tU3R1Ykxpc3QiLCAibWFya1RhbGtiYWNrQXNNaW5vciIsICJpbnNlcnRUYWxrYmFja1NpZ25hdHVyZSIsICJ0YWxrYmFja0hlYWRpbmciLCAid2dVTFMiLCAibWFpbEhlYWRpbmciLCAicG9ydGxldEFyZWEiLCAicG9ydGxldElkIiwgInBvcnRsZXROYW1lIiwgInBvcnRsZXRUeXBlIiwgInBvcnRsZXROZXh0IiwgImZpbmQiLCAibGVuZ3RoIiwgImdldFByZWYiLCAicHJlZnMiLCAiVHdpbmtsZUNvbmZpZyIsICJhZGRQb3J0bGV0IiwgIm5hdmlnYXRpb24iLCAiaWQiLCAidGV4dCIsICJ0eXBlIiwgIm5leHRub2RlaWQiLCAicm9vdCIsICJkb2N1bWVudCIsICJxdWVyeVNlbGVjdG9yIiwgInRlc3QiLCAiY29uY2F0IiwgIml0ZW0iLCAicGFyZW50Tm9kZSIsICJuZXh0bm9kZSIsICJza2luIiwgIm91dGVyTmF2Q2xhc3MiLCAiaW5uZXJEaXZDbGFzcyIsICJvdXRlck5hdiIsICJoZWFkaW5nIiwgImNyZWF0ZUVsZW1lbnQiLCAic2V0QXR0cmlidXRlIiwgImNsYXNzTmFtZSIsICJpbnNlcnRCZWZvcmUiLCAiYXBwZW5kQ2hpbGQiLCAidWwiLCAiaW5jbHVkZXMiLCAiY2hrYm94IiwgInNwYW4iLCAiY3JlYXRlVGV4dE5vZGUiLCAiYSIsICJocmVmIiwgIm9uIiwgImUiLCAicHJldmVudERlZmF1bHQiLCAiaW5uZXJEaXYiLCAiYWRkUG9ydGxldExpbmsiLCAidGFzayIsICJ0b29sdGlwIiwgImxpbmsiLCAidXRpbCIsICJjc3MiLCAiZXYiLCAiY29sbGFwc2libGVUYWJzIiwgImhhbmRsZVJlc2l6ZSIsICJzY3JpcHR1cmwiLCAiZ2V0VXJsIiwgImFjdGlvbiIsICJjdHlwZSIsICJoYXBweSIsICJsb2FkZXIiLCAiZ2V0U2NyaXB0IiwgImZhaWwiLCAibm90aWZ5IiwgInRhZyIsICJhbHdheXMiLCAibG9hZCIsICJhY3RpdmVTcGVjaWFsUGFnZUxpc3QiLCAidG9wIiwgInNlbGYiLCAidXNlckFnZW50IiwgIndpa2kiLCAiYXBpIiwgInNldEFwaVVzZXJBZ2VudCIsICJfaXRlcmF0b3IiLCAiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCAiX3N0ZXAiLCAicyIsICJuIiwgImRvbmUiLCAibW9kdWxlMiIsICJ2YWx1ZSIsICJlcnIiLCAiZiIsICJhZGRDU1MiLCAiaXNWZWN0b3IiLCAic29ydEJ5TmFtZXNwYWNlIiwgImZpcnN0IiwgInNlY29uZCIsICJucyIsICJ0aXRsZSIsICJnZW5lcmF0ZUJhdGNoUGFnZUxpbmtzIiwgImNoZWNrYm94IiwgIiRjaGVja2JveCIsICJodG1sTm9kZSIsICJ2YWwiLCAibmV4dCIsICJwcmVwZW5kIiwgImpRdWVyeSIsICJ0d2lua2xlYXJ2X2V4cG9ydHMiLCAiaW5pdF90d2lua2xlYXJ2IiwgInR3aW5rbGVhcnYiLCAiYXJ2IiwgInVzZXJuYW1lIiwgImlzSVAiLCAiaXNJUEFkZHJlc3MiLCAiY2FsbGJhY2siLCAidWlkIiwgIldpbmRvdyIsICJzaW1wbGVXaW5kb3ciLCAic2V0VGl0bGUiLCAic2V0U2NyaXB0TmFtZSIsICJhZGRGb290ZXJMaW5rIiwgImZvcm0iLCAicXVpY2tGb3JtIiwgImV2YWx1YXRlIiwgImNhdGVnb3JpZXMiLCAiYXBwZW5kIiwgImxhYmVsIiwgImV2ZW50IiwgImNoYW5nZUNhdGVnb3J5IiwgImRpc2FibGVkIiwgInN0eWxlIiwgInJlc3VsdCIsICJyZW5kZXIiLCAic2V0Q29udGVudCIsICJkaXNwbGF5IiwgInF1ZXJ5IiwgImxpc3QiLCAiYmtwcm9wIiwgImZvcm1hdCIsICJia2lwIiwgImJrdXNlcnMiLCAiYXBpb2JqIiwgImJsb2NrbGlzdCIsICJnZXRSZXNwb25zZSIsICJibG9ja3MiLCAiYmxvY2siLCAibWVzc2FnZSIsICJwYXJ0aWFsIiwgInJhbmdlc3RhcnQiLCAicmFuZ2VlbmQiLCAicG9zdCIsICJldnQiLCAiY3JlYXRlRXZlbnQiLCAiaW5pdEV2ZW50IiwgImNhdGVnb3J5IiwgImRpc3BhdGNoRXZlbnQiLCAibHRhX2xpc3QiLCAic29ja21hc3Rlcl9jaGFuZ2VkIiwgInNldF9zb2NrbWFzdGVyIiwgInRhcmdldCIsICJzb2NrbWFzdGVyIiwgInZhbHVlXyIsICJyb290XyIsICJvbGRfYXJlYSIsICJnZXRFbGVtZW50cyIsICJ3b3JrX2FyZWEiLCAicHJldmlld2xpbmsiLCAiY3Vyc29yIiwgInRleHRDb250ZW50IiwgInByZXZpZXciLCAiZWxlbWVudCIsICJzdWJsYWJlbCIsICJtaW4iLCAibWF4IiwgInJlcGxhY2VDaGlsZCIsICJhZGRDbGFzcyIsICJzcGlub3RpY2VwcmV2aWV3ZXIiLCAibGFzdCIsICJnZXRQYXJhbVZhbHVlIiwgImJhZGlkIiwgImdvb2RpZCIsICJwcmV2aWV3ZXIiLCAicmVhc29uIiwgImdldFJlcG9ydFdpa2l0ZXh0IiwgImlucHV0IiwgImdldElucHV0RGF0YSIsICJiZWdpblJlbmRlciIsICJjb21tZW50IiwgImNoZWNrVGl0bGUiLCAicmV2aWQiLCAicGFnZV8iLCAiVGl0bGUiLCAibmFtZXNwYWNlIiwgInBhZ2UiLCAicGFnZXMiLCAibWFwIiwgIm8iLCAiX2l0ZXJhdG9yMiIsICJfc3RlcDIiLCAiZ2V0UHJlZml4ZWRUZXh0IiwgInJlcGxhY2UiLCAidHJpbSIsICJzdHJpbmciLCAiYXBwZW5kUHVuY3R1YXRpb24iLCAidHlwZXMiLCAiYXJ2dHlwZSIsICJ0b0xvd2VyQ2FzZUZpcnN0Q2hhciIsICJoYXNTaGFyZWQiLCAic3BsaWNlIiwgImluZGV4T2YiLCAiY29uZmlybSIsICJqb2luIiwgInNsaWNlIiwgImhpZGVuYW1lIiwgInRvVXBwZXJDYXNlRmlyc3RDaGFyIiwgInNvY2twdXBwZXRzIiwgImFycmF5IiwgInVuaXEiLCAic29jayIsICJpbmRleCIsICJjaGVja3VzZXIiLCAidiIsICJfaW5wdXQkZ29vZGlkIiwgInN1bW1hcnkiLCAic2V0QnV0dG9uc0VuYWJsZWQiLCAic3RhdHVzIiwgImluaXQiLCAiYWN0aW9uQ29tcGxldGVkIiwgInJlZGlyZWN0IiwgIm5vdGljZSIsICJld2lwUGFnZSIsICJzZXRGb2xsb3dSZWRpcmVjdCIsICJnZXRQYWdlVGV4dCIsICIkZXdpcExpbmsiLCAiUmVnRXhwIiwgImVzY2FwZVJlZ0V4cCIsICJnZXRTdGF0dXNFbGVtZW50IiwgImVycm9yIiwgInByaW50VXNlclRleHQiLCAic2V0UGFnZVNlY3Rpb24iLCAic2V0RWRpdFN1bW1hcnkiLCAic2V0Q2hhbmdlVGFncyIsICJzZXRBcHBlbmRUZXh0IiwgInVhYVBhZ2UiLCAiJHVhYUxpbmsiLCAicmVwb3J0cGFnZSIsICJzcGlQYWdlIiwgInNldFdhdGNobGlzdCIsICJhaXZQYWdlIiwgIiRhaXZMaW5rIiwgInR3aW5rbGV3YXJuX2V4cG9ydHMiLCAiaW5pdF90d2lua2xld2FybiIsICJ0d2lua2xld2FybiIsICJyZWxldmFudFVzZXJOYW1lIiwgIiR2YW5kYWxUYWxrTGluayIsICJtYWtlVmFuZGFsVGFsa0xpbmsiLCAicGFnZU5hbWVOb3JtIiwgImFmVGFsa0xpbmsiLCAicGFnZV9wcmVmaXhlZHRpdGxlIiwgInBhZ2VuYW1lIiwgIndyYXBJbm5lciIsICJhdHRyIiwgImV4dHJhUGFyYW0iLCAicmF3dXJsZW5jb2RlIiwgImRpYWxvZyIsICJtYWluX3NlbGVjdCIsICJtYWluX2dyb3VwIiwgImNoYW5nZV9jYXRlZ29yeSIsICJkZWZhdWx0R3JvdXAiLCAiTnVtYmVyIiwgInBhcnNlSW50IiwgInNlbGVjdGVkIiwgImNoYW5nZV9zdWJjYXRlZ29yeSIsICJzaXplIiwgInBsYWNlaG9sZGVyIiwgIm1vcmUiLCAiY2FsbGJhY2tzIiwgInZhbnJldmlkIiwgInRpdGxlcyIsICJwcm9wIiwgInJ2c3RhcnRpZCIsICJydmxpbWl0IiwgInJ2ZGlyIiwgInJ2cHJvcCIsICJyZXZlcnRVc2VyIiwgImdldEF0dHJpYnV0ZSIsICJjaGVja1N0YWxlIiwgInZhbnRpbWVzdGFtcF8iLCAicmV2RGF0ZSIsICJkYXRlIiwgImlzVmFsaWQiLCAiYWRkIiwgImlzQmVmb3JlIiwgIkRhdGUiLCAidmFudGltZXN0YW1wIiwgInJldmlkcyIsICJtZXNzYWdlcyIsICJsZXZlbHMiLCAibGV2ZWwxIiwgImxldmVsMiIsICJzaW5nbGVub3RpY2UiLCAic2luZ2xld2FybiIsICJzdXBwcmVzc0FydGljbGVJblN1bW1hcnkiLCAicHJldl9hcnRpY2xlIiwgInByZXZfcmVhc29uIiwgInRhbGtwYWdlT2JqIiwgInN1Yl9ncm91cCIsICJvbGRfc3VidmFsdWUiLCAib2xkX3N1YnZhbHVlX3JlIiwgImhhc0NoaWxkTm9kZXMiLCAicmVtb3ZlQ2hpbGQiLCAiZmlyc3RDaGlsZCIsICJjcmVhdGVFbnRyaWVzIiwgImNvbnRlbnRzIiwgImNvbnRhaW5lciIsICJ3cmFwSW5PcHRncm91cCIsICJsZXZlbCIsICJjbGllbnQiLCAicHJvZmlsZSIsICJwbGF0Zm9ybSIsICJ3cmFwcGVyT3B0Z3JvdXAiLCAiX2kyIiwgIl9PYmplY3QkZW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJpdGVtS2V5IiwgIml0ZW1Qcm9wZXJ0aWVzIiwgImtleSIsICJ0ZW1wbGF0ZSIsICJlbGVtIiwgImRhdGEiLCAiZWxlbVJlbmRlcmVkIiwgInVuU29ydGVkU2luZ2xldHMiLCAic29ydGVkU2luZ2xldE1lc3NhZ2VzIiwgIl9pdGVyYXRvcjMiLCAia2V5cyIsICJzb3J0IiwgIl9zdGVwMyIsICJfaTMiLCAiX2FyciIsICJsdmwiLCAiX2l0ZXJhdG9yNCIsICJfc3RlcDQiLCAibGV2ZWxHcm91cCIsICJfaXRlcmF0b3I1IiwgIl9zdGVwNSIsICJvcHRncm91cCIsICJhdXRvbGV2ZWxQcm9jIiwgIndpa2l0ZXh0IiwgImxhdGVzdCIsICJkYXRlUHJvY2Vzc2luZyIsICJwYXJhbXMiLCAiYXJ0aWNsZSIsICJhdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0IiwgIl9pdGVyYXRvcjYiLCAiX3N0ZXA2IiwgInBvc3RDYXRlZ29yeUNsZWFudXAiLCAidXNlcnRhbGtfcGFnZSIsICJwYWdlb2JqIiwgIiRub1RhbGtQYWdlTm9kZSIsICJjbG9zZVByZXZpZXciLCAicmVtb3ZlIiwgInNldEVsZW1lbnRUb29sdGlwVmlzaWJpbGl0eSIsICJyZXNldEVsZW1lbnRMYWJlbCIsICJzZWxlY3QyIiwgIndpZHRoIiwgIm1hdGNoZXIiLCAibWF0Y2hlcnMiLCAib3B0Z3JvdXBGdWxsIiwgInRlbXBsYXRlUmVzdWx0IiwgImhpZ2hsaWdodFNlYXJjaE1hdGNoZXMiLCAibGFuZ3VhZ2UiLCAic2VhcmNoaW5nIiwgInF1ZXJ5SW50ZXJjZXB0b3IiLCAiY2hhbmdlIiwgImF1dG9TdGFydCIsICJ0cmlnZ2VyIiwgIm5vdExpbmtlZEFydGljbGUiLCAibm90QXJ0aWNsZSIsICJvdmVycmlkZUVsZW1lbnRMYWJlbCIsICJnZXRXYXJuaW5nV2lraXRleHQiLCAidGVtcGxhdGVOYW1lIiwgImlzQ3VzdG9tIiwgIm5vU2lnbiIsICJzaG93UHJldmlldyIsICJ0ZW1wbGF0ZW5hbWUiLCAibGlua2VkYXJ0aWNsZSIsICJ0ZW1wbGF0ZXRleHQiLCAibWVzc2FnZURhdGEiLCAiaGlzdG9yeV9yZSIsICJoaXN0b3J5IiwgImN1cnJlbnQiLCAiZXhlYyIsICJjdXJyZW50X2RhdGUiLCAiaXNBZnRlciIsICJzdGF0ZWxlbSIsICIkYXV0b2xldmVsTWVzc2FnZSIsICJpc05hTiIsICJhdXRvVGltZW91dCIsICJnZXRUaW1lIiwgIiRsaW5rIiwgImNsb3NlIiwgInN0YXR1c05vZGUiLCAiaW5zZXJ0QWZ0ZXIiLCAibWFpbiIsICJnZXRDYWxsYmFja1BhcmFtZXRlcnMiLCAid2FybmluZ0hpc3RvcnkiLCAibm93IiwgImdldExvYWRUaW1lIiwgInRlbXBsYXRlQW5kTGV2ZWwiLCAiY3VzdG9tUHJvY2VzcyIsICJzcGxpdCIsICJwcmVmaXgiLCAic3ViIiwgIndhcm5pbmdUZXh0IiwgInNlY3Rpb25FeGlzdHMiLCAic2VjdGlvbk51bWJlciIsICJzZWN0aW9ucyIsICJtYXRjaCIsICJkYXRlSGVhZGVyUmVnZXgiLCAibW9udGhIZWFkZXJSZWdleCIsICJyZXZlcnNlIiwgInNvbWUiLCAic2VjIiwgImlkeCIsICJzZXROZXdTZWN0aW9uVGl0bGUiLCAiaW5mbyIsICJtb250aEhlYWRlciIsICJzZXROZXdTZWN0aW9uVGV4dCIsICJuZXdTZWN0aW9uIiwgInVzZXJUYWxrUGFnZSIsICJnZXRGcmFnbWVudCIsICJhbGVydCIsICIkc2VsZWN0ZWRFbCIsICJ5c2FyY2hpdmVzX3BhZ2UiLCAic2V0Q2FsbGJhY2tQYXJhbWV0ZXJzIiwgInR3aW5rbGVibG9ja19leHBvcnRzIiwgImltcG9ydF9leHRfZ2FkZ2V0IiwgImluaXRfdHdpbmtsZWJsb2NrIiwgInJlcXVpcmUiLCAidHdpbmtsZWJsb2NrIiwgImluaXRNd0FwaSIsICJibG9ja2VkVXNlck5hbWUiLCAibWVudUZvcm1hdHRlZE5hbWVzcGFjZXMiLCAiYmxvY2tBY3Rpb25UZXh0IiwgInJlYmxvY2siLCAidW5ibG9jayIsICJpcCIsICJpc1JhbmdlIiwgInZhbGlkQ0lEUiIsICJjdXJyZW50QmxvY2tJbmZvIiwgImZpZWxkX2Jsb2NrX29wdGlvbnMiLCAiZmllbGRfdGVtcGxhdGVfb3B0aW9ucyIsICJhY3Rpb25maWVsZCIsICJjaGFuZ2VfYWN0aW9uIiwgImhpZGRlbiIsICJjaGVja2VkIiwgInNpeHR5Rm91ciIsICJnZXQ2NCIsICJibG9jazY0ZmllbGQiLCAiY2hhbmdlX2Jsb2NrNjQiLCAiZmV0Y2hVc2VySW5mbyIsICJpc1JlZ2lzdGVyZWQiLCAiJGZvcm0iLCAic2V0RWxlbWVudFZpc2liaWxpdHkiLCAicGFyZW50IiwgInRyYW5zZm9ybUJsb2NrUHJlc2V0cyIsICJibG9jazY0IiwgImFjdGlvbnR5cGUiLCAiZmV0Y2hlZERhdGEiLCAicHJvY2Vzc1VzZXJJbmZvIiwgImZuIiwgImJsb2NraW5mbyIsICJ1c2VyaW5mbyIsICJ1c2VycyIsICJ1c2VyIiwgInVzZXJpZCIsICJ1c2VySXNCb3QiLCAiZ3JvdXBtZW1iZXJzaGlwcyIsICJncm91cCIsICJkaXNhYmxldGFsayIsICJhbGxvd3VzZXJ0YWxrIiwgImhhcmRibG9jayIsICJhbm9ub25seSIsICJoYXNCbG9ja0xvZyIsICJsb2dldmVudHMiLCAiYmxvY2tMb2ciLCAiYmxvY2tMb2dJZCIsICJsb2dpZCIsICJsZXR5cGUiLCAibGVsaW1pdCIsICJsZXRpdGxlIiwgInVzdXNlcnMiLCAidXNwcm9wIiwgInRoZW4iLCAic2F2ZUZpZWxkc2V0IiwgImZpZWxkc2V0IiwgIl9pdGVyYXRvcjciLCAic2VyaWFsaXplQXJyYXkiLCAiX3N0ZXA3IiwgImVsIiwgIiRibG9jazY0IiwgInByaW9yTmFtZSIsICJpcyIsICJvcmlnaW5hbElzUmFuZ2UiLCAicmVnZW5lcmF0ZUZvcm0iLCAidGl0bGVCYXIiLCAibmV4dFNpYmxpbmciLCAibm9kZVZhbHVlIiwgImZpZWxkX3ByZXNldCIsICJmaWVsZF90YWdfb3B0aW9ucyIsICJmaWVsZF91bmJsb2NrX29wdGlvbnMiLCAiJGJsb2NrIiwgImJsb2NrQm94IiwgIiR0ZW1wbGF0ZSIsICJ0ZW1wbGF0ZUJveCIsICIkdGFnIiwgInRhZ0JveCIsICIkcHJvdGVjdCIsICIkcGFydGlhbCIsICJwYXJ0aWFsQm94IiwgIiR1bmJsb2NrIiwgInVuYmxvY2tCb3giLCAiYmxvY2tHcm91cCIsICJibG9ja0dyb3Vwc1BhcnRpYWwiLCAiYmxvY2tHcm91cHMiLCAicHJpb3IiLCAiYmxvY2tQcmVzZXRzSW5mbyIsICJiZyIsICJpc0luZmluaXR5IiwgImV4cGlyeSIsICJmaWx0ZXIiLCAiY2hhbmdlX3ByZXNldCIsICJmaWx0ZXJlZF9ibG9ja19ncm91cHMiLCAiY2hhbmdlX2V4cGlyeSIsICJ0ZW1wbGF0ZV9leHBpcnkiLCAibXVsdGlwbGUiLCAiX2k0IiwgIl9PYmplY3QkZW50cmllczIiLCAibnVtYmVyIiwgImJsb2Nrb3B0aW9ucyIsICJub2NyZWF0ZSIsICJub2VtYWlsIiwgImF1dG9ibG9jayIsICJ3YXRjaHVzZXIiLCAidG9nZ2xlX3NlZV9hbHNvcyIsICJjaGFuZ2VfdGVtcGxhdGUiLCAiYmxvY2tfcmVhc29uIiwgImJsYW5rX2R1cmF0aW9uIiwgIm5vdGFsayIsICJub2VtYWlsX3RlbXBsYXRlIiwgIm5vY3JlYXRlX3RlbXBsYXRlIiwgIiRwcmV2aWV3bGluayIsICJvZmYiLCAic3ViZ3JvdXAiLCAib2xkZmllbGQiLCAiaGlkZSIsICJzaG93IiwgImVycm9yTG9hZGluZyIsICJtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwgIm1pbmltdW1JbnB1dExlbmd0aCIsICJhamF4IiwgInVybCIsICJ3aWtpU2NyaXB0IiwgImRhdGFUeXBlIiwgImRlbGF5IiwgIm5ld0Zyb21UZXh0IiwgInRlcm0iLCAiYXBmcm9tIiwgImFwbmFtZXNwYWNlIiwgImFwbGltaXQiLCAicHJvY2Vzc1Jlc3VsdHMiLCAicmVzdWx0cyIsICJhbGxwYWdlcyIsICJ0b1RleHQiLCAidGVtcGxhdGVTZWxlY3Rpb24iLCAiY2hvaWNlIiwgInJlbCIsICJ3b3JkQmVnaW5uaW5nIiwgInNhbWVVc2VyIiwgInN0YXR1c1N0ciIsICIkcmFuZ2VibG9ja2xvZ2xpbmsiLCAiaHRtbCIsICJjYWxlbmRhciIsICJpbmZvU3RyIiwgInVwZGF0ZV9mb3JtIiwgImJsb2NrbG9naW5mbyIsICIkYmxvY2tsb2dsaW5rIiwgImxhc3RCbG9ja0FjdGlvbiIsICJibG9ja0FjdGlvbiIsICJ0aW1lc3RhbXAiLCAiZm9ybWF0VGltZSIsICJkdXJhdGlvbiIsICJmb3JSZWdpc3RlcmVkT25seSIsICJwYWdlUGFyYW0iLCAicmVhc29uUGFyYW0iLCAibm9uc3RhbmRhcmQiLCAiZm9yQW5vbk9ubHkiLCAic2lnIiwgImNoZWNrdXNlcmJsb2NrIiwgImJpb2Jsb2NrIiwgInVjYmxvY2siLCAibnBibG9jayIsICJfaXRlcmF0b3I4IiwgIl9zdGVwOCIsICJuZXdLZXkiLCAiY3VzdG9tIiwgIl9pNSIsICJfT2JqZWN0JGVudHJpZXMzIiwgInByZXNldCIsICJzZXR0aW5ncyIsICJpbmRlZmluaXRlIiwgIm1ldGEiLCAic2hvd190ZW1wbGF0ZSIsICJ0ZW1wbGF0ZXMiLCAiYmxvY2tQcmVzZXQiLCAiYmxvY2tTZXR0aW5ncyIsICJyZWdpc3RyYXRpb25SZXN0cmljdCIsICJzZWVBbHNvcyIsICJzZWVBbHNvTWVzc2FnZSIsICJ1c2VJbml0aWFsT3B0aW9ucyIsICJwYXJzZSIsICJ0b0dNVFN0cmluZyIsICJleHBpcnlfcHJlc2V0IiwgImVhY2giLCAiX2kiLCAiY2hlY2siLCAicHJlcGVuZFJlYXNvbiIsICJwYWdlcmVzdHJpY3Rpb25zIiwgIiRwYWdlU2VsZWN0IiwgIiRuYW1lc3BhY2VTZWxlY3QiLCAicmVzdHJpY3Rpb25zIiwgInByIiwgIl9pdGVyYXRvcjkiLCAiX3N0ZXA5IiwgImVzY2FwZVNlbGVjdG9yIiwgIm5ld09wdGlvbiIsICJPcHRpb24iLCAiQXJyYXkiLCAiaXNBcnJheSIsICJuYW1lc3BhY2VzIiwgInByZXZfdGVtcGxhdGVfZXhwaXJ5IiwgImFyZWEiLCAibmFtZXNwYWNlcmVzdHJpY3Rpb25zIiwgInRlbXBsYXRlVGV4dCIsICJnZXRCbG9ja05vdGljZVdpa2l0ZXh0IiwgIl90ZW1wbGF0ZW9wdGlvbnMiLCAidG9CbG9jayIsICJ0b1dhcm4iLCAidG9QYXJ0aWFsIiwgInRvVGFnIiwgInRvUHJvdGVjdCIsICJ0b1VuYmxvY2siLCAidGVtcGxhdGVvcHRpb25zIiwgInVuYmxvY2tvcHRpb25zIiwgInRvQ2xvc2V2aXAiLCAiY2xvc2V2aXAiLCAiY2hlY2tJbmNvbXBhdGlibGUiLCAiY29uZmxpY3RzIiwgImV4dHJhIiwgImNvdW50IiwgInJlZHVjZSIsICJzdW0iLCAic3BwVXNlcm5hbWUiLCAic3RhdHVzRWxlbWVudCIsICJsb2dFeHBpcnkiLCAiZXhwaXJ5RGF0ZSIsICJncm91cHNDYW5CZVJlbW92ZWQiLCAiZ3JvdXBzVG9CZVJlbW92ZWQiLCAiZ3JvdXBzIiwgInRhZ3MiLCAidG9rZW4iLCAidG9rZW5zIiwgIm1iQXBpIiwgImlzc3VlX3RlbXBsYXRlIiwgInZpcFBhZ2UiLCAiY2xvc2VSZXF1ZXN0IiwgInJpZ2h0U3RhdHVzRWxlbWVudCIsICJyZXZva2VPcHRpb25zIiwgInVzZXJyaWdodHN0b2tlbiIsICJtckFwaSIsICJ1c2VyUGFnZSIsICJ0YWd1c2VycGFnZSIsICJ1bmJsb2NrU3RhdHVzRWxlbWVudCIsICJ1bmJsb2NrTWJBcGkiLCAiX2l0ZXJhdG9yMTAiLCAiX3N0ZXAxMCIsICJ0YWd0ZXh0IiwgInNwcFR5cGUiLCAic3BwRXZpZGVuY2UiLCAic3BtQ2hlY2tlZCIsICJzcG1FdmlkZW5jZSIsICJzZXRQYWdlVGV4dCIsICJzYXZlIiwgInByb3RlY3R1c2VycGFnZSIsICJleGlzdHMiLCAic2V0RWRpdFByb3RlY3Rpb24iLCAic2V0TW92ZVByb3RlY3Rpb24iLCAic2V0Q3JlYXRlUHJvdGVjdGlvbiIsICJwcm90ZWN0IiwgImZvcm1EYXRhIiwgInVzZXJ0YWxrX3N1bW1hcnkiLCAidXNlck5hbWUiLCAiZXhwaXJ5VGV4dCIsICJyZXF1ZXN0TGlzdCIsICJmb3VuZCIsICJ2aXBSZSIsICJwYWdlTmFtZVJlZ2V4IiwgImkiLCAidHJpbUVuZCIsICJuZXdUZXh0IiwgIm1ha2VTZW50ZW5jZSIsICJwb3AiLCAicCIsICJuYW1lc3BhY2VOYW1lcyIsICJkYXRlSGVhZGVyUmVnZXhMYXN0IiwgImRhdGVIZWFkZXJSZWdleFJlc3VsdCIsICJsYXN0SGVhZGVySW5kZXgiLCAibGFzdEluZGV4T2YiLCAiZnJpZW5kbHl0YWxrYmFja19leHBvcnRzIiwgImluaXRfZnJpZW5kbHl0YWxrYmFjayIsICJmcmllbmRseXRhbGtiYWNrIiwgInRhbGtiYWNrIiwgImNoYW5nZVRhcmdldCIsICJ0YnRhcmdldCIsICJlbHF1ZXJ5IiwgImVsbGltaXQiLCAieXNhcmNoaXZlc19hcGkiLCAib3B0b3V0U3RhdHVzIiwgIm9wdG91dCIsICIkZWwiLCAiZ2V0WE1MIiwgInByZXZfcGFnZSIsICJwcmV2X3NlY3Rpb24iLCAicHJldl9tZXNzYWdlIiwgInZhbHVlcyIsICJzZWN0aW9uIiwgInJlcXVpcmVkIiwgIm5vdGljZWJvYXJkIiwgIl9pNiIsICJfT2JqZWN0JGVudHJpZXM0IiwgIm5vdGljZWJvYXJkcyIsICJuYm5hbWUiLCAiZGVmYXVsdFNlbGVjdGVkIiwgImFmZnAiLCAiY29udGVudCIsICJlZGl0U3VtbWFyeSIsICJzYmwiLCAic2hsIiwgImdldENoZWNrZWQiLCAibmFtZXNwYWNlUmVnZXgiLCAiZnVsbFVzZXJUYWxrUGFnZU5hbWUiLCAidXNlcl90YWxrIiwgImdldE5vdGljZVdpa2l0ZXh0IiwgInRhbGtwYWdlIiwgInNldENyZWF0ZU9wdGlvbiIsICJzZXRNaW5vckVkaXQiLCAibm90aWNldGV4dCIsICJzYWZlUmVwbGFjZSIsICJ0d2lua2xlc3BlZWR5X2V4cG9ydHMiLCAiaW1wb3J0X2V4dF9nYWRnZXQyIiwgImluaXRfdHdpbmtsZXNwZWVkeSIsICJ0d2lua2xlc3BlZWR5IiwgInNwZWVkeSIsICJpbml0RGlhbG9nIiwgImV2YWx1YXRlU3lzb3AiLCAiZXZhbHVhdGVVc2VyIiwgImhhc0NTRCIsICJtb2RlIiwgInN5c29wU2luZ2xlU3VibWl0IiwgInN5c29wUmFkaW9DbGljayIsICJzeXNvcE11bHRpcGxlU3VibWl0IiwgInN5c29wTXVsdGlwbGVSYWRpb0NsaWNrIiwgInVzZXJNdWx0aXBsZVN1Ym1pdCIsICJ1c2VyTXVsdGlwbGVSYWRpb0NsaWNrIiwgInVzZXJTaW5nbGVTdWJtaXQiLCAidXNlclNpbmdsZVJhZGlvQ2xpY2siLCAiaXNTeXNvcCIsICJoYXNTdWJtaXRCdXR0b24iLCAiaXNNdWx0aXBsZSIsICJjYWxsYmFja2Z1bmMiLCAiY0Zvcm0iLCAiY0NoZWNrZWQiLCAicmVkaXJlY3RzIiwgImRlbG11bHRpcGxlIiwgIm9wZW51c2VydGFsayIsICJzYWx0aW5nIiwgIm1vZGVDaGFuZ2VkIiwgInN0b3BQcm9wYWdhdGlvbiIsICJkZWxldGVPcHRpb25zIiwgInRhZ09wdGlvbnMiLCAicHJpb3JEZWxldGlvbkNvdW50IiwgImdldE1vZGUiLCAidGFnX29ubHkiLCAiaXNTeXNvcE1vZGUiLCAiZXZhbHVhdGVUeXBlIiwgInJhZGlvT3JDaGVja2JveCIsICJnZW5lcmF0ZUNzZExpc3QiLCAiY3VzdG9tUmF0aW9uYWxlIiwgImFydGljbGVMaXN0IiwgInVzZXJMaXN0IiwgInVzZXJ0YWxrTGlzdCIsICJmaWxlTGlzdCIsICJjYXRlZ29yeUxpc3QiLCAiZHJhZnRMaXN0IiwgInRhbGtMaXN0IiwgImdlbmVyYWxDcml0ZXJpYSIsICJnZW5lcmFsTGlzdCIsICJnZW5lcmF0ZUFycmF5IiwgInJlZGlyZWN0TGlzdCIsICJjdXN0b21PcHRpb24iLCAiY2xpY2siLCAiZGVjb2RlVVJJQ29tcG9uZW50IiwgImxhYmVscyIsICJlbXB0eSIsICJsZWFjdGlvbiIsICJsZXByb3AiLCAicmVzcG9uc2UiLCAiZGVsQ291bnQiLCAiY29udGludWUiLCAib3BlblN1Ymdyb3VwSGFuZGxlciIsICJjaGlsZHJlbiIsICJmb2N1cyIsICJzdWJtaXRTdWJncm91cEhhbmRsZXIiLCAicHJvdG90eXBlIiwgImNhbGwiLCAiY3JpdEVsZW1lbnQiLCAiY3JpdGVyaW9uIiwgImhpZGVXaGVuTXVsdGlwbGUiLCAiaGlkZVN1Ymdyb3VwV2hlbk11bHRpcGxlIiwgImhpZGVXaGVuU2luZ2xlIiwgImhpZGVTdWJncm91cFdoZW5TaW5nbGUiLCAiaGlkZVdoZW5TeXNvcCIsICJoaWRlU3ViZ3JvdXBXaGVuU3lzb3AiLCAiaGlkZVdoZW5Vc2VyIiwgImhpZGVTdWJncm91cFdoZW5Vc2VyIiwgImhpZGVXaGVuUmVkaXJlY3QiLCAic2hvd0luTmFtZXNwYWNlcyIsICJoaWRlSW5OYW1lc3BhY2VzIiwgIm9yaWdpbmFsRXZlbnQiLCAibm9ybWFsaXplZENyaXRlcmlvbiIsICJub3JtYWxpemVIYXNoIiwgImcxIiwgImcyIiwgImczIiwgImc0IiwgImc1IiwgImc2IiwgImc3IiwgImc4IiwgImc5IiwgImExIiwgImEyIiwgImEzIiwgInIxIiwgInIyIiwgImYxIiwgImYyIiwgImYzIiwgImY0IiwgImY1IiwgIm8xIiwgIm8yIiwgIm8zIiwgImdldFRlbXBsYXRlQ29kZUFuZFBhcmFtcyIsICJjb2RlIiwgInBhcmFtZXRlcnMiLCAibm9ybWFsaXplZHMiLCAidXRwYXJhbXMiLCAiX2l0ZXJhdG9yMTEiLCAiX3N0ZXAxMSIsICJub3JtIiwgInRvVXBwZXJDYXNlIiwgInRlbXBsYXRlUGFyYW1zIiwgImlfIiwgImdldFVzZXJUYWxrUGFyYW1ldGVycyIsICJwYXJzZVdpa2l0ZXh0IiwgInBzdCIsICJjb250ZW50bW9kZWwiLCAic3RhdHVzSW5kaWNhdG9yIiwgImFwaU9iaiIsICJjaGlsZE5vZGVzIiwgInN5c29wIiwgInByb21wdCIsICJkZWxldGVQYWdlIiwgImRlbGV0ZVJlYXNvbiIsICJwcm9tcHRGb3JTdW1tYXJ5IiwgInRoaXNwYWdlIiwgImRlbGV0ZU1haW4iLCAid2F0Y2giLCAiZGVsZXRlVGFsayIsICJvcGVuVXNlclRhbGsiLCAibG9va3VwQ3JlYXRpb24iLCAib3BlblVzZXJUYWxrUGFnZSIsICJkZWxldGVUYWxrUGFnZSIsICJub3JtYWxpemVkIiwgImNsYXNzTGlzdCIsICJjb250YWlucyIsICJzZXRUaW1lb3V0IiwgImRlbGV0ZVJlZGlyZWN0cyIsICJyZGxpbWl0IiwgImRlbGV0ZVJlZGlyZWN0c01haW4iLCAiJGJpZ3RleHQiLCAic2V0IiwgInVubGluayIsICJnZXRDcmVhdG9yIiwgInZhbmFydGljbGUiLCAib3BlbiIsICJ4bWxEb2MiLCAiJHNuYXBzaG90IiwgInRvdGFsIiwgIm9uc3VjY2VzcyIsICJhcGlvYmpJbm5lciIsICJ1cGRhdGUiLCAicmVtb3ZlQ2hlY2twb2ludCIsICJhZGRDaGVja3BvaW50IiwgIl9rZXkiLCAidGV4dE5vU2QiLCAiY29weXZpbyIsICJ4ZmQiLCAiYnVpbGREYXRhIiwgInBhdHJvbCIsICJyZXF1ZXN0c2FsdCIsICJlZGl0c3VtbWFyeSIsICJfaXRlcmF0b3IxMiIsICJfc3RlcDEyIiwgIk1hdGgiLCAiYmxhbmsiLCAiaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXMiLCAiZ2V0VGV4dCIsICJ0YWdDb21wbGV0ZSIsICJ1c2VydGFsayIsICJwYWdlT2JqIiwgImluaXRpYWxDb250cmliIiwgInRhbGtQYWdlTmFtZSIsICJ1c2VydGFsa3BhZ2UiLCAibm90aWZ5dGV4dCIsICJsb2dub21pbmF0aW9uIiwgImFkZFRvTG9nIiwgInVzbCIsICJ1c2Vyc3BhY2VMb2dnZXIiLCAiaW5pdGlhbFRleHQiLCAiYXBwZW5kVGV4dCIsICJmcm9tREkiLCAiX2l0ZXJhdG9yMTMiLCAiX3N0ZXAxMyIsICJsb2ciLCAiZ2V0UGFyYW1ldGVycyIsICJfaXRlcmF0b3IxNCIsICJfc3RlcDE0IiwgImN1cnJlbnRQYXJhbXMiLCAicmVkaW1hZ2UiLCAiZGJyYXRpb25hbGUiLCAib3RoZXJwYWdlIiwgImZpbGVuYW1lIiwgInJlZGlydHlwZSIsICJyZXNvbHZlQ3NkVmFsdWVzIiwgIl9lJHRhcmdldCRmb3JtIiwgIl9lJHRhcmdldCRmb3JtMiIsICJ3YXRjaFBhZ2UiLCAiX2l0ZXJhdG9yMTUiLCAiX3N0ZXAxNSIsICJfZSR0YXJnZXQkZm9ybTMiLCAiX2l0ZXJhdG9yMTYiLCAiX3N0ZXAxNiIsICJfaTciLCAiX25vcm1hbGl6ZWRzIiwgIm5vdGlmeXVzZXIiLCAiX2l0ZXJhdG9yMTciLCAiX3N0ZXAxNyIsICJjc2Rsb2ciLCAiX2l0ZXJhdG9yMTgiLCAiX3N0ZXAxOCIsICJ0d2lua2xlY29weXZpb19leHBvcnRzIiwgImluaXRfdHdpbmtsZWNvcHl2aW8iLCAidHdpbmtsZWNvcHl2aW8iLCAiaXNQYWdlUmVkaXJlY3QiLCAidHJ5VGFnZ2luZyIsICJ0YWdnaW5nQXJ0aWNsZSIsICJsb2dwYWdlIiwgImNvcHl2aW9MaXN0IiwgInJldmlzaW9uSWQiLCAic291cmNlIiwgIm9sZGNzZCIsICJzcGVlZHlUYWciLCAiZzRfcGFnZW5hbWUiLCAib3V0cHV0IiwgImdldFVUQ01vbnRoIiwgImdldFVUQ0RhdGUiLCAidHdpbmtsZXhmZF9leHBvcnRzIiwgImluaXRfdHdpbmtsZXhmZCIsICJ0d2lua2xleGZkIiwgImN1cnJlbnRSYXRpb25hbGUiLCAicHJpbnRSYXRpb25hbGUiLCAib2xkcmVhc29udGV4dGJveCIsICJvbGRyZWFzb24iLCAiYXBwZW5kUmVhc29uQm94IiwgInhmZF9jYXQiLCAiYWZkX2NhdGVnb3J5IiwgImNoYW5nZV9hZmRfY2F0ZWdvcnkiLCAiYWZkX2NhdCIsICJsb2NhbFN0b3JhZ2UiLCAiVHdpbmtsZV9hZmRDYXRlZ29yeSIsICJ4ZmRjYXQiLCAibWVyZ2VpbnRvIiwgInBhcmVudEVsZW1lbnQiLCAicmVtb3ZlQXR0cmlidXRlIiwgImZ3ZGNzZHJlYXNvbiIsICJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwgImlubmVySFRNTCIsICJ4ZmRyZWFzb24iLCAiYWZkIiwgInRhZ2dpbmdfcGFnZSIsICJkaXNjdXNzaW9uX3BhZ2UiLCAidG9kYXlzTGlzdCIsICJjcmVhdG9yIiwgImZvcm1hdFJlYXNvblRleHQiLCAibm9pbmNsdWRlIiwgInRleHROb05vdE1hbmRhcmluIiwgInRleHROb0FmYyIsICJ0byIsICJjb21tZW50VGV4dCIsICJzYWZlc3Vic3QiLCAiZmFtZSIsICJzdWJzdHViIiwgImJhdGNoIiwgInRhcmdldF9wYWdlIiwgImZmZCIsICJ0YWdnaW5nSW1hZ2UiLCAieGZkQ2F0TmFtZSIsICJ3aWtpVXJsZW5jb2RlIiwgImZvcm1hdFJlYXNvbkZvckxvZyIsICJvbkVycm9yIiwgInNldExvb2t1cE5vblJlZGlyZWN0Q3JlYXRvciIsICJ0d2lua2xlaW1hZ2VfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVpbWFnZSIsICJ0d2lua2xlaW1hZ2UiLCAiaW1hZ2UiLCAiZmllbGQiLCAiX2l0ZXJhdG9yMTkiLCAiX3N0ZXAxOSIsICJ0eXBlXyIsICJjc2Rjcml0IiwgIkVycm9yIiwgInRvTG93ZXJDYXNlIiwgImYxX3NvdXJjZSIsICJmNF90eXBlIiwgInVzZXJOb3RpZmljYXRpb24iLCAibm90ZURhdGEiLCAiaW1hZ2VMaXN0IiwgInR3aW5rbGVwcm90ZWN0X2V4cG9ydHMiLCAiaW1wb3J0X2V4dF9nYWRnZXQzIiwgImluaXRfdHdpbmtsZXByb3RlY3QiLCAidHdpbmtsZXByb3RlY3QiLCAiY2hhbmdlQWN0aW9uIiwgImZldGNoUHJvdGVjdGlvbkxldmVsIiwgImlzVGVtcGxhdGUiLCAiY3VycmVudFByb3RlY3Rpb25MZXZlbHMiLCAicHJldmlvdXNQcm90ZWN0aW9uTGV2ZWxzIiwgIl9hc3luY1RvR2VuZXJhdG9yIiwgImluZGV4cGFnZWlkcyIsICJpbnByb3AiLCAicHJvdGVjdERhdGEiLCAicGFnZWlkIiwgInBhZ2VpZHMiLCAicHJldmlvdXMiLCAid2F0Y2hlZCIsICJ3YXRjaGxpc3RleHBpcnkiLCAiX2l0ZXJhdG9yMjAiLCAicHJvdGVjdGlvbiIsICJfc3RlcDIwIiwgImNhc2NhZGUiLCAicHJldmlvdXNQcm90ZWN0aW9uTG9nIiwgIl9pdGVyYXRvcjIxIiwgImRldGFpbHMiLCAiX3N0ZXAyMSIsICJoYXNQcm90ZWN0TG9nIiwgInNob3dMb2dBbmRDdXJyZW50UHJvdGVjdEluZm8iLCAiY3VycmVudGx5UHJvdGVjdGVkIiwgImhhc1N0YWJsZUxvZyIsICIkbGlua01hcmt1cCIsICJmb3JtYXRQcm90ZWN0aW9uRGVzY3JpcHRpb24iLCAicHJvdGVjdGlvbk5vZGUiLCAic3RhdHVzTGV2ZWwiLCAiZmllbGQxIiwgImZpZWxkMiIsICJjaGFuZ2VQcmVzZXQiLCAicHJvdGVjdGlvblR5cGVzQWRtaW4iLCAicHJvdGVjdGlvblR5cGVzQ3JlYXRlIiwgImZvcm1ldmVudHMiLCAiZWRpdG1vZGlmeSIsICJlZGl0bGV2ZWwiLCAicHJvdGVjdGlvbkxldmVscyIsICJkb0N1c3RvbUV4cGlyeSIsICJjbG9zZXN0IiwgInNlbGVjdGVkSW5kZXgiLCAicHJvdGVjdGlvbkxlbmd0aHMiLCAibW92ZW1vZGlmeSIsICJtb3ZlbGV2ZWwiLCAiY3JlYXRlbGV2ZWwiLCAicHJvdGVjdGlvblRhZ3MiLCAidGFndHlwZSIsICJwcm90ZWN0aW9uVHlwZXMiLCAibWFyZ2luUmlnaHQiLCAiZWRpdGV4cGlyeSIsICJjb2xvciIsICJtb3ZlZXhwaXJ5IiwgImNyZWF0ZWV4cGlyeSIsICJzbWFsbCIsICJzaG93ZXhwaXJ5IiwgIm9wdGlvbiIsICJwcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5IiwgInByb3RlY3Rpb25QcmVzZXRzSW5mbyIsICJlZGl0IiwgIm1vdmUiLCAidW5wcm90ZWN0IiwgImNyZWF0ZSIsICJhY3Rpb250eXBlcyIsICJfaXRlcmF0b3IyMiIsICJfc3RlcDIyIiwgImFjdGlvbl90eXBlX3ZhbHVlIiwgInJlYXNvbkZpZWxkIiwgInByb3RlY3RSZWFzb24iLCAiX2l0ZW0kdGVtcGxhdGUiLCAidGFncGFyYW1zIiwgImNsb3NlcGFyYW1zIiwgInN0YXR1c0luaXRlZCIsICJhbGxEb25lIiwgInRhZ2dpbmdQYWdlSW5pdGlhbCIsICJycHBQYWdlIiwgInByb3RlY3RJdCIsICJmb2xsb3dSZWRpcmVjdCIsICJ0eXBlbmFtZSIsICJ0eXBlcmVhc29uIiwgInJwcHBhcmFtcyIsICJycHBOYW1lIiwgImZpbGVSZXF1ZXN0IiwgInBhZ2VOYW1lIiwgInByb3RlY3RlZFBhZ2UiLCAidGFnZ2luZ1BhZ2UiLCAiZ2V0VGFnZ2VkUGFnZSIsICJvbGR0YWdfcmUiLCAicmVfcmVzdWx0IiwgIm5ld1ZlcnNpb24iLCAic3VwcHJlc3NQcm90ZWN0V2FybmluZyIsICJycHBSZSIsICJycHBMaW5rIiwgImdldFBhZ2VOYW1lIiwgIm5ld3RhZyIsICJTdHJpbmciLCAicmF3IiwgIl90ZW1wbGF0ZU9iamVjdCIsICJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsIiwgIndvcmRzIiwgInJlZyIsICJvcmlnaW5hbFRleHRMZW5ndGgiLCAibGlua25vZGUiLCAid2F0Y2hQcmVmIiwgIm9wdGlvbnMiLCAid2F0Y2hfcXVlcnkiLCAibGlua25vZGUyIiwgInNlY3Rpb25UZXh0IiwgIl9pOCIsICJfT2JqZWN0JGVudHJpZXM1IiwgImZyaWVuZGx5dGFnX2V4cG9ydHMiLCAiaW5pdF9mcmllbmRseXRhZyIsICJmcmllbmRseXRhZyIsICJtb2RlRW4iLCAiY2FuUmVtb3ZlIiwgImNoZWNrZWRUYWdzIiwgIiRhbGxDaGVja2JveERpdnMiLCAibGFiZWxfZWxlbWVudCIsICIkYWxsSGVhZGVycyIsICJzZWFyY2hTdHJpbmciLCAic2VhcmNoUmVnZXgiLCAiX2luZGV4IiwgImxhYmVsX3RleHQiLCAic2VhcmNoSGl0IiwgInJhbmdlIiwgImNyZWF0ZVJhbmdlIiwgInRleHRub2RlIiwgInNlbGVjdE5vZGVDb250ZW50cyIsICJzZXRTdGFydCIsICJzZXRFbmQiLCAidW5kZXJsaW5lX3NwYW4iLCAic3Vycm91bmRDb250ZW50cyIsICJmbGF0T2JqZWN0IiwgIl9pdGVyYXRvcjIzIiwgInRhZ0xpc3QiLCAiX3N0ZXAyMyIsICJfaXRlcmF0b3IyNCIsICJfc3RlcDI0IiwgIl9pdGVyYXRvcjI1IiwgIl9zdGVwMjUiLCAiZGVzY3JpcHRpb24iLCAiZXhjbHVkZU1JIiwgInVwZGF0ZVNvcnRPcmRlciIsICJkaXZFbGVtZW50IiwgIl9pdGVyYXRvcjI2IiwgIl9zdGVwMjYiLCAiYnVpbGRGaWxlbmFtZSIsICJfaXRlcmF0b3IyNyIsICJfc3RlcDI3IiwgIl9pdGVyYXRvcjI4IiwgIl9zdGVwMjgiLCAicXVlcnlTZWxlY3RvckFsbCIsICJxdWlja2ZpbHRlciIsICJhdXRvY29tcGxldGUiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJhbHJlYWR5UHJlc2VudFRhZ3MiLCAidGFnTmFtZSIsICJib3hUYWciLCAiZm9udFNpemUiLCAibnVtQWRkZWQiLCAibnVtUmVtb3ZlZCIsICJhZnRlciIsICJzb3J0b3JkZXIiLCAiX2l0ZXJhdG9yMjkiLCAiX3N0ZXAyOSIsICJnZW5lcmF0ZUxpbmtzIiwgIm1ha2VDaGVja2JveCIsICJvdGhlclRhZ05hbWUiLCAibWFrZUNoZWNrYm94ZXNGb3JBbHJlYWR5UHJlc2VudFRhZ3MiLCAic3ViZGl2IiwgImNoZWNrYm94ZXMiLCAidW5DaGVja2VkVGFncyIsICJnZXRVbmNoZWNrZWQiLCAiX2l0ZXJhdG9yMzAiLCAiX3N0ZXAzMCIsICJkb0NhdGVnb3J5Q2hlY2tib3hlcyIsICJfaXRlcmF0b3IzMSIsICJfc3RlcDMxIiwgIl9pdGVyYXRvcjMyIiwgIl9zdGVwMzIiLCAiX2l0ZXJhdG9yMzMiLCAiX3N0ZXAzMyIsICJfVHdpbmtsZSR0YWckYXJ0aWNsZSIsICJhbHBoYWJldGljYWxMaXN0IiwgIl9pdGVyYXRvcjM0IiwgIl9zdGVwMzQiLCAiJHdvcmthcmVhIiwgInJlbmRlcmVkIiwgIl9pdGVyYXRvcjM1IiwgIl9zdGVwMzUiLCAiX2l0ZXJhdG9yMzYiLCAiX3N0ZXAzNiIsICJmaXJzdFBhcnQiLCAic2Vjb25kUGFydCIsICJ0YWduYW1lIiwgInBhZ2VUZXh0IiwgInBvc3RSZW1vdmFsIiwgInRhZ3NUb1JlbW92ZSIsICJtYWtlVGVtcGxhdGVMaW5rIiwgInN1bW1hcnlUZXh0IiwgImFkZGVkVGFncyIsICJyZW1vdmVkVGFncyIsICJtZXJnZVJlYXNvbiIsICJkaXNjdXNzQXJ0aWNsZSIsICJub25EaXNjdXNzQXJ0aWNsZSIsICJtZXJnZVRhZ090aGVyIiwgIm1lcmdlVGFnIiwgIm5ld1BhcmFtcyIsICJ0YWdzVG9SZW1haW4iLCAibWVyZ2VUYXJnZXQiLCAidGFsa0Rpc2N1c3Npb25UaXRsZSIsICJ0YWxrRGlzY3Vzc2lvblRpdGxlTGlua2VkIiwgIm1vdmVSZWFzb24iLCAibW92ZVRhbGtwYWdlVGV4dCIsICJtb3ZlVGFyZ2V0IiwgIm1vdmVUYWxrcGFnZSIsICJyZW1vdmVUYWdzIiwgImdldFJlZGlyZWN0c0ZvciIsICJfaXRlcmF0b3IzNyIsICJfc3RlcDM3IiwgInRhZ19yZSIsICJsaG5hbWVzcGFjZSIsICJsaHNob3ciLCAibGhsaW1pdCIsICJyZXNwb25zZVhNTCIsICJfaWR4IiwgInJlbW92ZWQiLCAidGFnUmUiLCAidGFnVGV4dCIsICJncm91cGFibGVUYWdzIiwgImdyb3VwYWJsZUV4aXN0aW5nVGFncyIsICJhZGRUYWciLCAiY3VycmVudFRhZyIsICJleHBlcnQiLCAiZXhwZXJ0MiIsICJleHBlcnQzIiwgIm1pc3NpbmdJbmZvcm1hdGlvbiIsICJub3RhYmlsaXR5IiwgInRhcmdldDEiLCAidGFyZ2V0MiIsICJ0YXJnZXQzIiwgImNsZWFudXBSZWFzb24iLCAiYWRkVW5ncm91cGVkVGFncyIsICJfaTkiLCAiX3RhZ3MiLCAidGVtcGxhdGVzQWZ0ZXIiLCAiX2l0ZXJhdG9yMzgiLCAiX3N0ZXAzOCIsICJub3RhYmlsaXR5TGlzdCIsICJfaXRlcmF0b3IzOSIsICJfc3RlcDM5IiwgIm1pVGVzdCIsICJfaXRlcmF0b3I0MCIsICJfc3RlcDQwIiwgIm1pUmVnZXgiLCAiYWRkTmV3VGFnc1RvTUkiLCAiX2l0ZXJhdG9yNDEiLCAiX3N0ZXA0MSIsICJfaXRlcmF0b3I0MiIsICJfc3RlcDQyIiwgInRhZ0luZGV4IiwgImFsdExhbmdGcm9tIiwgInJlcUFydGljbGVMYW5nIiwgInJlcUFydGljbGVUaXRsZSIsICJfaTEwIiwgIl90YWdzMiIsICJvbGRUYWdzIiwgInBhZ2VUYWdzIiwgIm9sZFBhZ2VUYWdzIiwgIl9pdGVyYXRvcjQzIiwgIl9zdGVwNDMiLCAicGFnZVRhZyIsICJwYWdlUmUiLCAiZmlsZSIsICJfaXRlcmF0b3I0NCIsICJfc3RlcDQ0IiwgIm5vd2NvbW1vbnNOYW1lIiwgImtlZXBsb2NhbE5hbWUiLCAia2VlcGxvY2FsUmVhc29uIiwgInJlbmFtZW1lZGlhTmV3bmFtZSIsICJyZW5hbWVtZWRpYVJlYXNvbiIsICJEb05vdE1vdmVUb0NvbW1vbnNfcmVhc29uIiwgImNoZWNrUGFyYW1ldGVyIiwgInBhcmFtZXRlciIsICJleGlzdGluZ1RhZ3MiLCAidHdpbmtsZXN0dWJfZXhwb3J0cyIsICJpbXBvcnRfZXh0X2dhZGdldDQiLCAiaW5pdF90d2lua2xlc3R1YiIsICJ0d2lua2xlc3R1YiIsICJzdHViIiwgIl9Ud2lua2xlJHN0dWIiLCAiX1R3aW5rbGUkc3R1YiRjaGVja2VkIiwgImN1c3RvbWNoZWNrYm94ZXMiLCAiX2l0ZXJhdG9yNDUiLCAiX3N0ZXA0NSIsICJfaXRlcmF0b3I0NiIsICJfc3RlcDQ2IiwgIl9pMTEiLCAiX09iamVjdCRlbnRyaWVzNiIsICJ0YWdDYXRlZ29yaWVzIiwgInRpdGxlTmFtZSIsICJ0YWdDYXRlZ29yaWVzSGVhZGVyIiwgIl9pMTIiLCAiX09iamVjdCRlbnRyaWVzNyIsICJzdWJ0aXRsZSIsICJzdWJjb250ZW50IiwgIl9pMTMiLCAiX09iamVjdCRlbnRyaWVzOCIsICJfaXRlcmF0b3I0NyIsICJfc3RlcDQ3IiwgImdlbmVyYWwiLCAiZ2VvIiwgIm90aGVycyIsICJiaW8iLCAic2NpZW5jZSIsICJzcG9ydCIsICJ0ZWNoIiwgImFydCIsICJ0b3RhbFRhZ3MiLCAiX2kxNCIsICJfdGFnczMiLCAicGF0cm9sUGFnZSIsICJ0d2lua2xlZGlmZl9leHBvcnRzIiwgImluaXRfdHdpbmtsZWRpZmYiLCAidHdpbmtsZWRpZmYiLCAiZGlmZiIsICJvbGRpZCIsICJtZSIsICJub2RlIiwgInJ2dXNlciIsICJsb2NhdGlvbiIsICJ0d2lua2xldW5saW5rX2V4cG9ydHMiLCAiaW5pdF90d2lua2xldW5saW5rIiwgInR3aW5rbGV1bmxpbmsiLCAicHJlc2V0UmVhc29uIiwgImZpbGVTcGFjZSIsICJsaW5rVGV4dEJlZm9yZSIsICJsaW5rVGV4dEFmdGVyIiwgImxpbmtQbGFpbkJlZm9yZSIsICJsaW5rVGVtcGxhdGVCZWZvcmUiLCAibGlua1BsYWluQWZ0ZXIiLCAiX2kxNSIsICJfYXJyMiIsICJmb250RmFtaWx5IiwgImZvbnRTdHlsZSIsICJibHRpdGxlIiwgImJsbGltaXQiLCAiYmxuYW1lc3BhY2UiLCAicmF3Y29udGludWUiLCAiaXV0aXRsZSIsICJpdWxpbWl0IiwgIml1bmFtZXNwYWNlIiwgImJsZmlsdGVycmVkaXIiLCAiYmFja2xpbmtzIiwgInBhZGRpbmciLCAiaW1hZ2V1c2FnZSIsICJ1bmxpbmtlciIsICJiYXRjaE9wZXJhdGlvbiIsICJzZXRPcHRpb24iLCAic2V0UGFnZUxpc3QiLCAicnVuIiwgInNldEJvdEVkaXQiLCAiZG9CYWNrbGlua3MiLCAiZG9JbWFnZXVzYWdlIiwgInVubGlua0JhY2tsaW5rcyIsICJoYXZlY29udGVudCIsICJfaXRlcmF0b3I0OCIsICJfc3RlcDQ4IiwgImNvbnZlcnROdW1iZXIiLCAic2hpZnRDbGlja1N1cHBvcnQiLCAiX2l0ZXJhdG9yNDkiLCAiX3N0ZXA0OSIsICJfaXRlcmF0b3I1MCIsICJfc3RlcDUwIiwgIl9pdGVyYXRvcjUxIiwgIl9zdGVwNTEiLCAib2xkdGV4dCIsICJ3YXJuaW5nU3RyaW5nIiwgImNvbW1lbnRPdXRJbWFnZSIsICJyZW1vdmVMaW5rIiwgInJlbW92ZVRlbXBsYXRlIiwgIndvcmtlckZhaWx1cmUiLCAid29ya2VyU3VjY2VzcyIsICJ0d2lua2xlZmx1ZmZfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVmbHVmZiIsICJ0d2lua2xlZmx1ZmYiLCAiZmx1ZmYiLCAiaG9vayIsICJhZGRMaW5rcyIsICJza2lwVGFsayIsICJjb250cmlidXRpb25zIiwgInJlY2VudGNoYW5nZXMiLCAidHJ1c3RlZEJvdHMiLCAiaGlkZGVuTmFtZSIsICJsaW5rQnVpbGRlciIsICJzcGFuVGFnIiwgImJ1aWxkTGluayIsICJyb2xsYmFja0xpbmtzIiwgInZhbmRhbCIsICJpbmxpbmUiLCAicmV2IiwgInJldk5vZGUiLCAibm9ybU5vZGUiLCAidmFuZE5vZGUiLCAibm9ybUxpbmsiLCAidmFuZExpbmsiLCAicmV2ZXJ0IiwgImRpc2FibGVMaW5rcyIsICJzZXBhcmF0b3IiLCAicmVzdG9yZVRoaXNSZXZpc2lvbkxpbmsiLCAicmV2aXNpb25SZWYiLCAicmV2ZXJ0VG9SZXZpc2lvbk5vZGUiLCAiZm9udFdlaWdodCIsICJyZXZlcnRUb1JldmlzaW9uTGluayIsICJyZXZlcnRUb1JldmlzaW9uIiwgIiRsaXN0IiwgImRhdGFzZXQiLCAibXdSZXZpZCIsICJub3QiLCAidGFyZ2V0UGFnZSIsICJoaXN0TGlzdCIsICJ0b0FycmF5IiwgInNoaWZ0IiwgIl9pdGVyYXRvcjUyIiwgIl9zdGVwNTIiLCAiX2l0ZXJhdG9yNTMiLCAiX3N0ZXA1MyIsICJ3YXJuRnJvbVRhbGsiLCAieHRpdGxlIiwgInRhbGtMaW5rIiwgImV4dHJhUGFyYW1zIiwgIm9sZFRpdGxlIiwgInJldmVydHN1bW1hcnkiLCAiXyIsICJuZXdUaXRsZSIsICJudGl0bGUiLCAiaXNJUHY2QWRkcmVzcyIsICJzYW5pdGl6ZUlQdjYiLCAiZ2V0RWxlbWVudHNCeU5hbWUiLCAibm90aWZ5U3RhdHVzIiwgImF1dG9IaWRlIiwgInVzZXJIaWRkZW4iLCAiaW50ZXN0YWN0aW9ucyIsICJjdXJ0aW1lc3RhbXAiLCAib2xkcmV2IiwgInRvUmV2aXNpb24iLCAibGFzdHJldmlkIiwgInRvdWNoZWQiLCAibG9hZHRpbWVzdGFtcCIsICJjc3JmdG9rZW4iLCAicmV2ZXJ0VG9SZXZJRCIsICJyZXZlcnRUb1VzZXIiLCAicmV2ZXJ0VG9Vc2VySGlkZGVuIiwgIm9wdGlvbmFsX3N1bW1hcnkiLCAiZm9ybWF0U3VtbWFyeSIsICJ1bmRvIiwgInVuZG9hZnRlciIsICJiYXNldGltZXN0YW1wIiwgInN0YXJ0dGltZXN0YW1wIiwgIm1pbm9yIiwgImJvdCIsICJ3YXRjaE9yRXhwaXJ5IiwgIndhdGNobGlzdCIsICJjb21wbGV0ZSIsICJyZXZzIiwgImxhc3R1c2VyIiwgInVzZXJOb3JtIiwgImNvbnQiLCAiZ29vZF9yZXZpc2lvbiIsICJ1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiIsICJnb29kdXNlciIsICJnb29kdXNlckhpZGRlbiIsICJleHRyYV9zdW1tYXJ5IiwgIm5vdGlmeVVzZXIiLCAieG1sIiwgIiRlZGl0IiwgIndpbmRvd1F1ZXJ5IiwgInZhbmFydGljbGVyZXZpZCIsICJ2YW5hcnRpY2xlZ29vZHJldmlkIiwgImJ1aWx0SW5TdHJpbmciLCAiY3VzdG9tU3RyaW5nIiwgInJlc3VsdExlbiIsICJ1bmVzY2FwZSIsICJlbmNvZGVVUklDb21wb25lbnQiLCAiY29udHJpYnNMaW5rIiwgImNvbnRyaWJzTGVuIiwgInR3aW5rbGViYXRjaGRlbGV0ZV9leHBvcnRzIiwgImluaXRfdHdpbmtsZWJhdGNoZGVsZXRlIiwgInR3aW5rbGViYXRjaGRlbGV0ZSIsICJiYXRjaGRlbGV0ZSIsICJ1bmxpbmtDYWNoZSIsICJzdWJwYWdlc0xvYWRlZCIsICJ0b2dnbGVTdWJwYWdlcyIsICJkZWxldGVyZWFzb25saXN0IiwgImNoYW5nZV9jb21tb25fcmVhc29uIiwgImdlbmVyYXRvciIsICJnY210aXRsZSIsICJnY21saW1pdCIsICJnYXBsaW1pdCIsICJnYXBuYW1lc3BhY2UiLCAiZ2FwcHJlZml4IiwgInBhdGhTcGxpdCIsICJwYXRobmFtZSIsICJ0aXRsZVNwbGl0IiwgImdxcHBhZ2UiLCAiZ3FwbGltaXQiLCAiZ3BsbGltaXQiLCAic3RhdHVzZGl2IiwgIiRwYWdlcyIsICIkcGFnZSIsICJpc1JlZGlyIiwgIiRlZGl0cHJvdCIsICJpc1Byb3RlY3RlZCIsICJtZXRhZGF0YSIsICJmb3JtXyIsICJfaXRlcmF0b3I1NCIsICJfc3RlcDU0IiwgImdlbmVyYXRlQXJyb3dMaW5rcyIsICJuZXh0RWxlbWVudFNpYmxpbmciLCAiZ2VuZXJhdGVOZXdQYWdlTGlzdCIsICJlbGVtZW50cyIsICJOb2RlTGlzdCIsICJfaXRlcmF0b3I1NSIsICJfc3RlcDU1IiwgIkhUTUxJbnB1dEVsZW1lbnQiLCAibmV3UGFnZUxpc3QiLCAiZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzIiwgImRlbGV0ZV9yZWRpcmVjdHMiLCAiZGVsZXRlX3N1YnBhZ2VfdGFsa3MiLCAiZGVsZXRlX3RhbGsiLCAidW5saW5rX3N1YnBhZ2VzIiwgInVubGlua19wYWdlIiwgIl9pdGVyYXRvcjU2IiwgIl9zdGVwNTYiLCAic3ViZ3JvdXBfIiwgInJlcGxhY2VXaXRoIiwgIl9pdGVyYXRvcjU3IiwgIl9zdGVwNTciLCAiX2l0ZXJhdG9yNTgiLCAiX3N0ZXA1OCIsICJsb2FkaW5nVGV4dCIsICJzdWJwYWdlTGlzdGVyIiwgInBhZ2VUaXRsZSIsICJwYWdlTmFtZUZ1bGwiLCAic3VicGFnZUxpc3QiLCAicGFnZU5hbWVfIiwgIl9pdGVyYXRvcjU5IiwgIl9zdGVwNTkiLCAiX2l0ZXJhdG9yNjAiLCAiX3N0ZXA2MCIsICJfaXRlcmF0b3I2MSIsICJfc3RlcDYxIiwgIl9pdGVyYXRvcjYyIiwgIl9zdGVwNjIiLCAibnVtUHJvdGVjdGVkIiwgInN1YnBhZ2VzIiwgImRlbGV0ZV9wYWdlIiwgImRlbGV0ZV9zdWJwYWdlcyIsICJ1bmxpbmtfZmlsZSIsICJwYWdlRGVsZXRlciIsICJkb0V4dHJhcyIsICJzdWJwYWdlRGVsZXRlciIsICJ0aGluZ1dpdGhQYXJhbWV0ZXJzIiwgInVubGlua0JhY2tsaW5rc01haW4iLCAidW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluIiwgInRhbGtQYWdlIiwgInJlZGlyZWN0RGVsZXRlciIsICJvbGRfdGV4dCIsICJzZXRNYXhDb25mbGljdFJldHJpZXMiLCAidW5saW5rSW1hZ2VJbnN0YW5jZXMiLCAidHdpbmtsZWJhdGNodW5kZWxldGVfZXhwb3J0cyIsICJpbml0X3R3aW5rbGViYXRjaHVuZGVsZXRlIiwgInR3aW5rbGViYXRjaHVuZGVsZXRlIiwgImJhdGNodW5kZWxldGUiLCAicHJvamVjdCIsICJ1bmRlbF90YWxrIiwgInBhZ2VVbmRlbGV0ZXIiLCAic2V0TWF4UmV0cmllcyIsICJ1bmRlbGV0ZVBhZ2UiLCAidGFsa3BhZ2VuYW1lIiwgImdldFRhbGtQYWdlIiwgImRydnByb3AiLCAiZHJ2bGltaXQiLCAidW5kZWxldGVUYWxrIiwgImRlbHJldnMiLCAidHdpbmtsZWJhdGNocHJvdGVjdF9leHBvcnRzIiwgImluaXRfdHdpbmtsZWJhdGNocHJvdGVjdCIsICJ0d2lua2xlYmF0Y2hwcm90ZWN0IiwgImJhdGNocHJvdGVjdCIsICJwcm90TGV2ZWwiLCAiX2l0ZXJhdG9yNjMiLCAiX3N0ZXA2MyIsICJtaXNzaW5nIiwgImVkaXRQcm90IiwgImltYWdlaW5mbyIsICJyZXZpc2lvbnMiLCAiX2l0ZXJhdG9yNjQiLCAiX3N0ZXA2NCIsICJsaW5rcyIsICJjdXJyZW50UHJvdGVjdENvdW50ZXIiLCAiY3VycmVudHByb3RlY3RvciIsICJ0YWtlbkFjdGlvbiIsICJjcmVhdGVtb2RpZnkiLCAidHdpbmtsZWNsb3NlX2V4cG9ydHMiLCAiaW5pdF90d2lua2xlY2xvc2UiLCAidHdpbmtsZWNsb3NlIiwgInNlbGVjdG9yIiwgImRlbE5vZGUiLCAiZGVsTGluayIsICJfaXRlcmF0b3I2NSIsICJfc3RlcDY1IiwgImhlYWRsaW5laHJlZiIsICJtIiwgInBhZ2Vub3RleGlzdCIsICJoYXNDbGFzcyIsICJ0bXBOb2RlIiwgImNsb25lTm9kZSIsICJjb2RlcyIsICJpciIsICJyZXAiLCAibmUiLCAibnEiLCAiayIsICJhZG1pbm9ubHkiLCAic2siLCAidGsiLCAicnIiLCAiZGFuIiwgImQiLCAiaWMiLCAic2QiLCAibHNzZCIsICJzdmciLCAiZHJlcCIsICJjIiwgInIiLCAiY3IiLCAibWVyZ2UiLCAibWVyZ2VhcHByb3ZlZCIsICJuYyIsICJub29wIiwgImNoYW5nZV9jb2RlIiwgImNoYW5nZV9vcGVyYXRpb24iLCAicmVzdWx0RGF0YSIsICJfaTE2IiwgIl9PYmplY3QkZW50cmllczkiLCAiX2l0ZXJhdG9yNjYiLCAiX3N0ZXA2NiIsICJzZHJlYXNvbiIsICJyZW1hcmsiLCAicGFyZW50U2VjdGlvbiIsICJ0YWxrZW5kIiwgImRlbCIsICJrZWVwIiwgInBhZ2V0aXRsZSIsICJnZXROYW1lc3BhY2VJZCIsICJ0YWxrcGFnZXRpdGxlIiwgImdldE1haW5UZXh0IiwgInRvU3RyaW5nIiwgInZmZGtlcHQiLCAic2V0UHJlcGVuZFRleHQiLCAibmV3dGV4dCIsICJrZWVwQ29tcGxldGUiLCAic2F2ZVRhbGsiLCAic2JlZ2luIiwgInNlbmQiLCAiYmFyIiwgImRpc2FibGVMaW5rIiwgInR3aW5rbGVjb25maWdfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVjb25maWciLCAidHdpbmtsZWNvbmZpZyIsICJ3YXRjaGxpc3RFbnVtcyIsICJ5ZXMiLCAibm8iLCAiZGVmYXVsdCIsICJjb21tb25TZXRzIiwgImNzZENyaXRlcmlhIiwgImRiIiwgImNzZENyaXRlcmlhRGlzcGxheU9yZGVyIiwgImNzZENyaXRlcmlhTm90aWZpY2F0aW9uIiwgImNzZENyaXRlcmlhTm90aWZpY2F0aW9uRGlzcGxheU9yZGVyIiwgImNzZEFuZERJQ3JpdGVyaWEiLCAiY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlciIsICJ4ZmRDcml0ZXJpYSIsICJkZWxldGUiLCAiZndkY3NkIiwgInhmZENyaXRlcmlhRGlzcGxheU9yZGVyIiwgIm5hbWVzcGFjZXNOb1NwZWNpYWwiLCAibW9kdWxlIiwgInByZWZlcmVuY2VzIiwgImVudW1WYWx1ZXMiLCAidGFiIiwgImhlbHB0aXAiLCAic2V0VmFsdWVzIiwgImFkbWluT25seSIsICJjdXN0b21MaXN0VmFsdWVUaXRsZSIsICJjdXN0b21MaXN0TGFiZWxUaXRsZSIsICJ2YW5kIiwgInRvcmV2IiwgIm1pbmUiLCAicmVjZW50Y2hhbmdlc2xpbmtlZCIsICJidXR0b25DbGljayIsICJyYWRpb0NsaWNrIiwgInNldERpc3BsYXlPcmRlciIsICJjYXQiLCAiYWxwaGEiLCAic2FtZSIsICJub25hZG1pbm9ubHkiLCAiYWxsIiwgImNvbnRlbnRkaXYiLCAidG9jdGFibGUiLCAibWFyZ2luTGVmdCIsICJ0b2N0aXRsZSIsICJ0b2NoMiIsICJ0b2N0b2dnbGUiLCAidG9jdG9nZ2xlbGluayIsICJ0b2N1bCIsICIkdG9jdWwiLCAidG9nZ2xlIiwgImNvbnRlbnRmb3JtIiwgInNlY3Rpb25rZXkiLCAidG9jbGkiLCAidG9jYSIsICJyb3ciLCAiY2VsbCIsICJib3JkZXJCb3R0b20iLCAibWFyZ2luVG9wIiwgInJvd2NvdW50IiwgInByZWZrZXkiLCAicHJlZiIsICJtYXJnaW5Cb3R0b20iLCAiYmFja2dyb3VuZENvbG9yIiwgImdvdFByZWYiLCAidGV4dEFsaWduIiwgInBhZGRpbmdSaWdodCIsICJvcHRpb25FeGlzdHMiLCAiX2kxNyIsICJfT2JqZWN0JGVudHJpZXMxMCIsICJlbnVtdmFsdWUiLCAiZW51bWRpc3BsYXkiLCAiY2hlY2tkaXYiLCAicGFkZGluZ0xlZnQiLCAid29ya2VyIiwgIml0ZW1rZXkiLCAiaXRlbXZhbHVlIiwgImNoZWNrbGFiZWwiLCAiX2l0ZXJhdG9yNjciLCAiX3N0ZXA2NyIsICJfaTE4IiwgIl9PYmplY3QkZW50cmllczExIiwgImN1c3RvbUxpc3RCdXR0b24iLCAibGlzdERpYWxvZyIsICJyZXNldGxpbmsiLCAicmVzZXRQcmVmTGluayIsICJjc3NGbG9hdCIsICJtYXJnaW4iLCAiZm9vdGVyYm94IiwgInN1Ym1pdEJ1dHRvbiIsICJmb290ZXJzcGFuIiwgImZvb3RlcmEiLCAicmVzZXRBbGxQcmVmcyIsICJoYXNoIiwgImxvYyIsICJib3giLCAic2NyaXB0UGFnZU5hbWUiLCAiYWRkUm93IiwgImRsZ3RhYmxlIiwgImNvbnRlbnR0ciIsICJjb250ZW50dGQiLCAicmVtb3ZlQnV0dG9uIiwgIl9jdXJwcmVmJGN1c3RvbUxpc3RWYSIsICJfY3VycHJlZiRjdXN0b21MaXN0TGEiLCAiJHByZWZidXR0b24iLCAiY3VydmFsdWUiLCAiY3VycHJlZiIsICJkaWFsb2djb250ZW50IiwgImRsZ3Rib2R5IiwgImRsZ3RyIiwgImRsZ3RoIiwgImdvdFJvdyIsICJfaXRlcmF0b3I2OCIsICJfc3RlcDY4IiwgImRsZ3Rmb290IiwgImRsZ3RkIiwgImFkZEJ1dHRvbiIsICJtaW5XaWR0aCIsICJidXR0b24iLCAicmVzZXQiLCAidGJvZHkiLCAiJGJ1dHRvbiIsICJvbGR2YWx1ZSIsICJyZXNldFByZWYiLCAiJHRib2R5IiwgIl9pdGVyYXRvcjY5IiwgIl9zdGVwNjkiLCAiaW5wdXRrZXkiLCAid2FudGVkcHJlZiIsICJmb3VuZGl0IiwgIl9pMTkiLCAiX09iamVjdCRlbnRyaWVzMTIiLCAidXNlcmpzIiwgIndyaXRlUHJlZnMiLCAibmV3Q29uZmlnIiwgIm9wdGlvbnNWZXJzaW9uIiwgImNvbXBhcmUiLCAiYiIsICJ1c2VyVmFsdWUiLCAiX2l0ZXJhdG9yNzAiLCAiX3N0ZXA3MCIsICJfaTIwIiwgIl9PYmplY3QkZW50cmllczEzIiwgIm5vd2lraSIsICJKU09OIiwgInN0cmluZ2lmeSIsICJzYXZlU3VjY2VzcyIsICJub3RpY2Vib3giLCAibm90aWNlY2xlYXIiLCAiY2xlYXIiLCAiUHJvbWlzZSIsICJyZXNvbHZlIiwgInR3aW5rbGVMb2FkIiwgIl90d2lua2xlTG9hZCIsICJhcHBseSIsICJhcmd1bWVudHMiXQp9Cg== +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwtdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zZXQtbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZS5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVhcnYuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xld2Fybi5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVibG9jay5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL2ZyaWVuZGx5dGFsa2JhY2suanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlc3BlZWR5LmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWNvcHl2aW8uanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xleGZkLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWltYWdlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZXByb3RlY3QuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy9mcmllbmRseXRhZy5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVzdHViLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWRpZmYuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xldW5saW5rLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWZsdWZmLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWJhdGNoZGVsZXRlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWJhdGNodW5kZWxldGUuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlYmF0Y2hwcm90ZWN0LmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWNsb3NlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWNvbmZpZy5qcyIsICJzcmMvVHdpbmtsZS9Ud2lua2xlLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIndXNlIHN0cmljdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICBjaGVjayh0eXBlb2YgdGhpcyA9PSAnb2JqZWN0JyAmJiB0aGlzKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgISRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyh7fS50b1N0cmluZyk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBzdHJpbmdTbGljZSh0b1N0cmluZyhpdCksIDgsIC0xKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gISRPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PT0gJ1N0cmluZycgPyBzcGxpdChpdCwgJycpIDogJE9iamVjdChpdCk7XG59IDogJE9iamVjdDtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdFxudmFyIGRvY3VtZW50QWxsID0gdHlwZW9mIGRvY3VtZW50ID09ICdvYmplY3QnICYmIGRvY3VtZW50LmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFRoaXNbbmFtZXNwYWNlXSkgOiBnbG9iYWxUaGlzW25hbWVzcGFjZV0gJiYgZ2xvYmFsVGhpc1tuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsVGhpcy5uYXZpZ2F0b3I7XG52YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbm1vZHVsZS5leHBvcnRzID0gdXNlckFnZW50ID8gU3RyaW5nKHVzZXJBZ2VudCkgOiAnJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xudmFyIERlbm8gPSBnbG9iYWxUaGlzLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsVGhpcy5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MXG4gICYmICFTeW1ib2wuc2hhbVxuICAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ09iamVjdCc7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NhbGxhYmxlKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBkZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFRoaXNba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpc1tTSEFSRURdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFNIQVJFRCwge30pO1xuXG4oc3RvcmUudmVyc2lvbnMgfHwgKHN0b3JlLnZlcnNpb25zID0gW10pKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzguMScsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzguMS9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbFRoaXMuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9PSA0Mjtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcigkU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgRU5VTUVSQUJMRSA9ICdlbnVtZXJhYmxlJztcbnZhciBDT05GSUdVUkFCTEUgPSAnY29uZmlndXJhYmxlJztcbnZhciBXUklUQUJMRSA9ICd3cml0YWJsZSc7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmICh0eXBlb2YgTyA9PT0gJ2Z1bmN0aW9uJyAmJiBQID09PSAncHJvdG90eXBlJyAmJiAndmFsdWUnIGluIEF0dHJpYnV0ZXMgJiYgV1JJVEFCTEUgaW4gQXR0cmlidXRlcyAmJiAhQXR0cmlidXRlc1tXUklUQUJMRV0pIHtcbiAgICB2YXIgY3VycmVudCA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgZW51bWVyYWJsZTogRU5VTUVSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tFTlVNRVJBQkxFXSA6IGN1cnJlbnRbRU5VTUVSQUJMRV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH0gcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbn0gOiAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IG5ldyAkVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhGdW5jdGlvbi50b1N0cmluZyk7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgY29yZS1qc0AzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICghaXNDYWxsYWJsZShzdG9yZS5pbnNwZWN0U291cmNlKSkge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsVGhpcy5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWxUaGlzLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkuKiQvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zLmVudW1lcmFibGU7XG4gIHZhciBuYW1lID0gb3B0aW9ucy5uYW1lICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5hbWUgOiBrZXk7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkgbWFrZUJ1aWx0SW4odmFsdWUsIG5hbWUsIG9wdGlvbnMpO1xuICBpZiAob3B0aW9ucy5nbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZUdsb2JhbFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIW9wdGlvbnMudW5zYWZlKSBkZWxldGUgT1trZXldO1xuICAgICAgZWxzZSBpZiAoT1trZXldKSBzaW1wbGUgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogIW9wdGlvbnMubm9uQ29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6ICFvcHRpb25zLm5vbldyaXRhYmxlXG4gICAgfSk7XG4gIH0gcmV0dXJuIE87XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYE1hdGgudHJ1bmNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLnRydW5jXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC10cnVuYyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgudHJ1bmMgfHwgZnVuY3Rpb24gdHJ1bmMoeCkge1xuICB2YXIgbiA9ICt4O1xuICByZXR1cm4gKG4gPiAwID8gZmxvb3IgOiBjZWlsKShuKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRydW5jID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtdHJ1bmMnKTtcblxuLy8gYFRvSW50ZWdlck9ySW5maW5pdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbnVtYmVyID0gK2FyZ3VtZW50O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICByZXR1cm4gbnVtYmVyICE9PSBudW1iZXIgfHwgbnVtYmVyID09PSAwID8gMCA6IHRydW5jKG51bWJlcik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGludGVnZXIsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYFRvTGVuZ3RoYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBsZW4gPSB0b0ludGVnZXJPckluZmluaXR5KGFyZ3VtZW50KTtcbiAgcmV0dXJuIGxlbiA+IDAgPyBtaW4obGVuLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgTGVuZ3RoT2ZBcnJheUxpa2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1sZW5ndGhvZmFycmF5bGlrZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIGlmIChsZW5ndGggPT09IDApIHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9PSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgaWYgKHZhbHVlICE9PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KGtleXMsIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgZXhjZXB0aW9ucykge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkgJiYgIShleGNlcHRpb25zICYmIGhhc093bihleGNlcHRpb25zLCBrZXkpKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgIH1cbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgICAgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5kb250Q2FsbEdldFNldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXM7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpc1tUQVJHRVRdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXNbVEFSR0VUXSAmJiBnbG9iYWxUaGlzW1RBUkdFVF0ucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMuZG9udENhbGxHZXRTZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgZGVmaW5lQnVpbHRJbih0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNhcnJheVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWlzYXJyYXkgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJndW1lbnQpID09PSAnQXJyYXknO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIFNhZmFyaSA8IDEzIGRvZXMgbm90IHRocm93IGFuIGVycm9yIGluIHRoaXMgY2FzZVxudmFyIFNJTEVOVF9PTl9OT05fV1JJVEFCTEVfTEVOR1RIX1NFVCA9IERFU0NSSVBUT1JTICYmICFmdW5jdGlvbiAoKSB7XG4gIC8vIG1ha2VzIG5vIHNlbnNlIHdpdGhvdXQgcHJvcGVyIHN0cmljdCBtb2RlIHN1cHBvcnRcbiAgaWYgKHRoaXMgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWU7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCAnbGVuZ3RoJywgeyB3cml0YWJsZTogZmFsc2UgfSkubGVuZ3RoID0gMTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3I7XG4gIH1cbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTSUxFTlRfT05fTk9OX1dSSVRBQkxFX0xFTkdUSF9TRVQgPyBmdW5jdGlvbiAoTywgbGVuZ3RoKSB7XG4gIGlmIChpc0FycmF5KE8pICYmICFnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgJ2xlbmd0aCcpLndyaXRhYmxlKSB7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Nhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgnKTtcbiAgfSByZXR1cm4gTy5sZW5ndGggPSBsZW5ndGg7XG59IDogZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICByZXR1cm4gTy5sZW5ndGggPSBsZW5ndGg7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFGRkZGRkZGRkZGRkZGOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA+IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93ICRUeXBlRXJyb3IoJ01heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCcpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgc2V0QXJyYXlMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2V0LWxlbmd0aCcpO1xudmFyIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2VzLW5vdC1leGNlZWQtc2FmZS1pbnRlZ2VyJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIElOQ09SUkVDVF9UT19MRU5HVEggPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbXS5wdXNoLmNhbGwoeyBsZW5ndGg6IDB4MTAwMDAwMDAwIH0sIDEpICE9PSA0Mjk0OTY3Mjk3O1xufSk7XG5cbi8vIFY4IDw9IDEyMSBhbmQgU2FmYXJpIDw9IDE1LjQ7IEZGIDwgMjMgdGhyb3dzIEludGVybmFsRXJyb3Jcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTEyNjgxXG52YXIgcHJvcGVyRXJyb3JPbk5vbldyaXRhYmxlTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgJ2xlbmd0aCcsIHsgd3JpdGFibGU6IGZhbHNlIH0pLnB1c2goKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3I7XG4gIH1cbn07XG5cbnZhciBGT1JDRUQgPSBJTkNPUlJFQ1RfVE9fTEVOR1RIIHx8ICFwcm9wZXJFcnJvck9uTm9uV3JpdGFibGVMZW5ndGgoKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5wdXNoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnB1c2hcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBhcml0eTogMSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBwdXNoOiBmdW5jdGlvbiBwdXNoKGl0ZW0pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlcihsZW4gKyBhcmdDb3VudCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdDb3VudDsgaSsrKSB7XG4gICAgICBPW2xlbl0gPSBhcmd1bWVudHNbaV07XG4gICAgICBsZW4rKztcbiAgICB9XG4gICAgc2V0QXJyYXlMZW5ndGgoTywgbGVuKTtcbiAgICByZXR1cm4gbGVuO1xuICB9XG59KTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZSgkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHRjb25zdCBUd2lua2xlID0ge307XG5cdHdpbmRvdy5Ud2lua2xlIHx8PSBUd2lua2xlOyAvLyBhbGxvdyBnbG9iYWwgYWNjZXNzXG5cdC8vIFdyYXAgd2l0aCBhbm9ueW1vdXMgZnVuY3Rpb25cblx0Ly8gQ2hlY2sgaWYgYWNjb3VudCBpcyBleHBlcmllbmNlZCBlbm91Z2ggdG8gdXNlIFR3aW5rbGVcblx0aWYgKCFNb3JlYml0cy51c2VySXNJbkdyb3VwKCdhdXRvY29uZmlybWVkJykgJiYgIU1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ2NvbmZpcm1lZCcpKSB7XG5cdFx0Y29uc29sZS53YXJuKCdbVHdpbmtsZV0g6Z2e56Gu6K6k55So5oi35oiW6Ieq5Yqo56Gu6K6k55So5oi377yMVHdpbmtsZeS4jeS8mui/kOihjOOAgicpO1xuXHRcdHJldHVybjtcblx0fVxuXHQvKipcblx0ICogVHdpbmtsZS1zcGVjaWZpYyBkYXRhIHNoYXJlZCBieSBtdWx0aXBsZSBtb2R1bGVzXG5cdCAqIExpa2VseSBjdXN0b21pemVkIHBlciBpbnN0YWxsYXRpb25cblx0ICovXG5cdC8vIEN1c3RvbSBjaGFuZ2UgdGFnKHMpIHRvIGJlIGFwcGxpZWQgdG8gYWxsIFR3aW5rbGUgYWN0aW9ucywgY3JlYXRlIGF0IFNwZWNpYWw6VGFnc1xuXHRUd2lua2xlLmNoYW5nZVRhZ3MgPSAnVHdpbmtsZSc7XG5cdC8vIEF2YWlsYWJsZSBmb3IgYWN0aW9ucyB0aGF0IGRvbid0ICh5ZXQpIHN1cHBvcnQgdGFnc1xuXHRUd2lua2xlLnN1bW1hcnlBZCA9ICfvvIhbW0g6VFd8VHdpbmtsZV1d77yJJztcblx0Ly8gVmFyaW91cyBoYXRub3RlIHRlbXBsYXRlcywgdXNlZCB3aGVuIHRhZ2dpbmcgKGNzZC94ZmQvdGFnL3Byb2QvcHJvdGVjdCkgdG8gZW5zdXJlIG9yZGVyXG5cdFR3aW5rbGUuaGF0bm90ZVJlZ2V4ID1cblx0XHQnKD86U2hvcnRbIF9dZGVzY3JpcHRpb24pfCg/OlJlbGxpbmt8SGF0bm90ZXxIQVQpfCg/Ok1haW58W+e7hue0sF1b6IqC56+AXXxNYWluWyBfXWFydGljbGVzfOS4u1vmnaHmop1d55uufEh1cnJpY2FuZVsgX11tYWlufFvmnaHmop1d55uufOS4u3xb6aCB6aG1XemdonzkuLtb6aCB6aG1XemdonzkuLtb6aCB6aG1XXzkuLtb6aGM6aKYXeebrnxNYWluWyBfXWFydGljbGV8QVApfCg/Oldyb25ndGl0bGV8Q29ycmVjdFsgX110aXRsZSl8KD865Li75p2h55uu5raI5q2n5LmJfOS4u+aineebrua2iOatp+e+qXzmtojmrafkuYnpk77mjqV85raI5q2n576p6Y+I5o6lfOa2iOatp+e+qemAo+e1kHzmtojov5585raI6YCjfOa2iOatp+S5iei/nue7k3xEaXNhbWJMaW5rfE5vdGVyZWZ8RGFibGluayl8KD86RGlzdGluZ3Vpc2h85LiN5pivfE5vdHzmj5DnpLp85re35reGfOWIhuWIpXzliIbliKt85Y2A5YilfOWMuuWIq3zmnKzmnaHnm67nmoTkuLvpopjkuI3mmK985pys5qKd55uu55qE5Li76aGM5LiN5pivfOacrOadoeebruS4u+mimOS4jeaYr3zmnKzmop3nm67kuLvpoYzkuI3mmK985p2h55uu5Li76aKY5LiN5pivfOaineebruS4u+mhjOS4jeaYr3zkuLvpopjkuI3mmK985Li76aGM5LiN5pivfENvbmZ1c2VkfOWMuuWIhnzljYDliIZ8Q29uZnVzaW9ufENvbmZ1c2V8UmVkaXJlY3ROT1R8TWlzc3BlbGxpbmcpfCg/OkRpc3Rpbmd1aXNoMnxTZWxmRGlzdGluZ3Vpc2h8Tm90MnzkuI3mmK8yKXwoPzpGb3IpfCg/OkRldGFpbHN8RnVydGhlcnxTZWV85Y+m6KeBfOWPpuimi3xNb3JlfOebuOmXnOaineebrnznm7jlhbPmnaHnm658RGV0YWlsfOingXzopot85pu05aSa6LWE5paZfOabtOWkmuizh+aWmXxGdXJ0aGVyWyBfXWluZm9ybWF0aW9ufOabtOWkmui1hOiur3zmm7TlpJros4foqIp8TW9yZVsgX11pbmZvcm1hdGlvbnzmm7TlpJrkv6Hmga8pfCg/OlNlbGZyZWYpfCg/OkFib3V0fE90aGVydXNlczR85YWz5LqOfOmXnOaWvCl8KD86T3RoZXJbIF9ddXNlc3xPdGhlcnVzZXzmnaHnm67mtojmrafkuYl85qKd55uu5raI5q2n576pfOS7lueUqHxPdGhlcnVzZXMpfCg/Ok90aGVyWyBfXXVzZXMgbGlzdHxPdGhlcnVzZWxpc3R85Li75qKd55uu5raI5q2n576p5YiX6KGofOS4u+adoeebrua2iOatp+S5ieWIl+ihqHxPdGhlcnVzZXNsaXN0fEFib3V0bGlzdHxBYm91dFsgX11saXN0fE90aGVydXNlc1sgX11saXN0KXwoPzpSZWRpcmVjdHzph43lrprlkJHoh7PmraR8UmVkaXJlY3RzWyBfXWhlcmV8UmVkaXJlY3RbIF9ddG8pfCg/OlJlZGlyZWN0MnzkuLvmop3nm67mtojmrafnvqkyfOS4u+adoeebrua2iOatp+S5iTJ8UmVkaXJ86YeN5a6a5ZCR6Iez5q2kMil8KD86UmVkaXJlY3QzKXwoPzpSZWRpcmVjdDQpfCg/OlJlZGlyZWN0LWRpc3Rpbmd1aXNoKXwoPzpSZWRpcmVjdC1zeW5vbnltKXwoPzpSZWRpcmVjdC1tdWx0aSl8KD86U2VlWyBfXVdpa3Rpb25hcnl8U2Vld2lrdCl8KD86U2VlYWxzb3zlj4LnnIt85Y+D55yLfFNlZVsgX11hbHNvfOWPguingXzlj4Popot8QWxzbyl8KD86U2VlWyBfXWFsc28yfFNlZWFsc28yfOS4jei9ieaPm+WPg+imi3zkuI3ovazmjaLlj4Lop4EpfCg/Ok90aGVyWyBfXXBsYWNlcyl8KD86Q29udHJhc3R85bCN5q+UfOWvueavlCknO1xuXHRUd2lua2xlLmluaXRDYWxsYmFja3MgPSBbXTtcblx0LyoqXG5cdCAqIEFkZHMgYSBjYWxsYmFjayB0byBleGVjdXRlIHdoZW4gVHdpbmtsZSBoYXMgbG9hZGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZV0gLSBuYW1lIG9mIG1vZHVsZSB1c2VkIHRvIGNoZWNrIGlmIGlzIGRpc2FibGVkLlxuXHQgKiBJZiBuYW1lIGlzIG5vdCBnaXZlbiwgbW9kdWxlIGlzIGxvYWRlZCB1bmNvbmRpdGlvbmFsbHkuXG5cdCAqL1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayA9IChmdW5jLCBuYW1lKSA9PiB7XG5cdFx0VHdpbmtsZS5pbml0Q2FsbGJhY2tzLnB1c2goe1xuXHRcdFx0ZnVuYyxcblx0XHRcdG5hbWUsXG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuZGVmYXVsdENvbmZpZyA9IHt9O1xuXHQvKipcblx0ICogVGhpcyBob2xkcyB0aGUgZGVmYXVsdCBzZXQgb2YgcHJlZmVyZW5jZXMgdXNlZCBieSBUd2lua2xlLlxuXHQgKiBJdCBpcyBpbXBvcnRhbnQgdGhhdCBhbGwgbmV3IHByZWZlcmVuY2VzIGFkZGVkIGhlcmUsIGVzcGVjaWFsbHkgYWRtaW4tb25seSBvbmVzLCBhcmUgYWxzbyBhZGRlZCB0b1xuXHQgKiB8VHdpbmtsZS5jb25maWcuc2VjdGlvbnN8IGluIHR3aW5rbGVjb25maWcuanMsIHNvIHRoZXkgYXJlIGNvbmZpZ3VyYWJsZSB2aWEgdGhlIFR3aW5rbGUgcHJlZmVyZW5jZXMgcGFuZWwuXG5cdCAqIEZvciBoZWxwIG9uIHRoZSBhY3R1YWwgcHJlZmVyZW5jZXMsIHNlZSB0aGUgY29tbWVudHMgaW4gdHdpbmtsZWNvbmZpZy5qcy5cblx0ICpcblx0ICogRm9ybWVybHkgVHdpbmtsZS5kZWZhdWx0Q29uZmlnLnR3aW5rbGVcblx0ICovXG5cdFR3aW5rbGUuZGVmYXVsdENvbmZpZyA9IHtcblx0XHQvLyBHZW5lcmFsXG5cdFx0dXNlclRhbGtQYWdlTW9kZTogJ3RhYicsXG5cdFx0ZGlhbG9nTGFyZ2VGb250OiBmYWxzZSxcblx0XHRkaXNhYmxlZE1vZHVsZXM6IE1vcmViaXRzLnVzZXJJc1N5c29wID8gW10gOiBbJ2Jsb2NrJ10sXG5cdFx0Ly8gZGVmYXVsdCB0byBkaXNhYmxlIGJsb2NrIGZvciBub24tc3lzb3AsIGlmIGVuYWJsZSBtYW51YWxseSwgdGhleSBjYW4gb25seSB1c2UgaXQgdG8gdGFnIHVzZXJwYWdlXG5cdFx0ZGlzYWJsZWRTeXNvcE1vZHVsZXM6IFtdLFxuXHRcdC8vIEFSVlxuXHRcdHNwaVdhdGNoUmVwb3J0OiAneWVzJyxcblx0XHQvLyBCbG9ja1xuXHRcdGRlZmF1bHRUb0Jsb2NrNjQ6IGZhbHNlLFxuXHRcdGRlZmF1bHRUb1BhcnRpYWxCbG9ja3M6IGZhbHNlLFxuXHRcdGJsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2s6IGZhbHNlLFxuXHRcdHdhdGNoQmxvY2tOb3RpY2VzOiAneWVzJyxcblx0XHRjdXN0b21CbG9ja1JlYXNvbkxpc3Q6IFtdLFxuXHRcdC8vIEZsdWZmIChyZXZlcnQgYW5kIHJvbGxiYWNrKVxuXHRcdG9wZW5UYWxrUGFnZTogW10sXG5cdFx0b3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0OiBmYWxzZSxcblx0XHRyb2xsYmFja0luUGxhY2U6IGZhbHNlLFxuXHRcdG1hcmtSZXZlcnRlZFBhZ2VzQXNNaW5vcjogWyd2YW5kJ10sXG5cdFx0d2F0Y2hSZXZlcnRlZFBhZ2VzOiBbJ25vcm0nLCAndmFuZCcsICd0b3JldiddLFxuXHRcdHdhdGNoUmV2ZXJ0ZWRFeHBpcnk6ICd5ZXMnLFxuXHRcdG9mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQ6IHRydWUsXG5cdFx0Y29uZmlybU9uRmx1ZmY6IGZhbHNlLFxuXHRcdHNob3dSb2xsYmFja0xpbmtzOiBbJ2RpZmYnLCAnb3RoZXJzJ10sXG5cdFx0Y3VzdG9tUmV2ZXJ0U3VtbWFyeTogW10sXG5cdFx0Ly8gREkgKHR3aW5rbGVpbWFnZSlcblx0XHRub3RpZnlVc2VyT25EZWxpOiB0cnVlLFxuXHRcdGRlbGlXYXRjaFBhZ2U6ICdkZWZhdWx0Jyxcblx0XHRkZWxpV2F0Y2hVc2VyOiAnZGVmYXVsdCcsXG5cdFx0Ly8gUHJvdGVjdFxuXHRcdHdhdGNoUmVxdWVzdGVkUGFnZXM6ICd5ZXMnLFxuXHRcdHdhdGNoUFBUYWdnZWRQYWdlczogJ2RlZmF1bHQnLFxuXHRcdHdhdGNoUHJvdGVjdGVkUGFnZXM6ICdkZWZhdWx0Jyxcblx0XHQvLyBDU0Rcblx0XHRzcGVlZHlTZWxlY3Rpb25TdHlsZTogJ2J1dHRvbkNsaWNrJyxcblx0XHR3YXRjaFNwZWVkeVBhZ2VzOiBbJ2cxJywgJ2czJywgJ2c0JywgJ2c3JywgJ2c4J10sXG5cdFx0d2F0Y2hTcGVlZHlFeHBpcnk6ICd5ZXMnLFxuXHRcdG1hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkOiBmYWxzZSxcblx0XHR3YXRjaFNwZWVkeVVzZXI6ICcxIG1vbnRoJyxcblx0XHQvLyB0aGVzZSBuZXh0IHR3byBzaG91bGQgcHJvYmFibHkgYmUgaWRlbnRpY2FsIGJ5IGRlZmF1bHRcblx0XHRub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb246IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRcdCdmMScsXG5cdFx0XHQnZjInLFxuXHRcdFx0J2YzJyxcblx0XHRcdCdmNCcsXG5cdFx0XHQnZjUnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdF0sXG5cdFx0d2FyblVzZXJPblNwZWVkeURlbGV0ZTogW1xuXHRcdFx0J2RiJyxcblx0XHRcdCdnMScsXG5cdFx0XHQnZzInLFxuXHRcdFx0J2czJyxcblx0XHRcdCdnNCcsXG5cdFx0XHQnZzUnLFxuXHRcdFx0J2c2Jyxcblx0XHRcdCdnNycsXG5cdFx0XHQnZzgnLFxuXHRcdFx0J2c5Jyxcblx0XHRcdCdhMScsXG5cdFx0XHQnYTInLFxuXHRcdFx0J2EzJyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdFx0J2YxJyxcblx0XHRcdCdmMicsXG5cdFx0XHQnZjMnLFxuXHRcdFx0J2Y0Jyxcblx0XHRcdCdmNScsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XSxcblx0XHRwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnk6IFtdLFxuXHRcdG9wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZTogW10sXG5cdFx0ZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZTogdHJ1ZSxcblx0XHRkZWxldGVSZWRpcmVjdHNPbkRlbGV0ZTogdHJ1ZSxcblx0XHRkZWxldGVTeXNvcERlZmF1bHRUb0RlbGV0ZTogZmFsc2UsXG5cdFx0c3BlZWR5V2luZG93SGVpZ2h0OiA1MDAsXG5cdFx0c3BlZWR5V2luZG93V2lkdGg6IDgwMCxcblx0XHRsb2dTcGVlZHlOb21pbmF0aW9uczogdHJ1ZSxcblx0XHRzcGVlZHlMb2dQYWdlTmFtZTogJ0NTROaXpeW/lycsXG5cdFx0bm9Mb2dPblNwZWVkeU5vbWluYXRpb246IFsnbzEnXSxcblx0XHRlbmxhcmdlRzdJbnB1dDogZmFsc2UsXG5cdFx0Ly8gVW5saW5rXG5cdFx0dW5saW5rTmFtZXNwYWNlczogWycwJywgJzYnLCAnMTAnLCAnMzAyJ10sXG5cdFx0Ly8gV2FyblxuXHRcdGRlZmF1bHRXYXJuaW5nR3JvdXA6ICcxJyxcblx0XHRjb21iaW5lZFNpbmdsZXRNZW51czogZmFsc2UsXG5cdFx0d2F0Y2hXYXJuaW5nczogJ3llcycsXG5cdFx0b2xkU2VsZWN0OiBmYWxzZSxcblx0XHRjdXN0b21XYXJuaW5nTGlzdDogW10sXG5cdFx0YXV0b01lbnVBZnRlclJvbGxiYWNrOiBmYWxzZSxcblx0XHQvLyBYZkRcblx0XHRsb2dYZmROb21pbmF0aW9uczogdHJ1ZSxcblx0XHR4ZmRMb2dQYWdlTmFtZTogJ1hmROaXpeW/lycsXG5cdFx0bm9Mb2dPblhmZE5vbWluYXRpb246IFtdLFxuXHRcdHhmZFdhdGNoRGlzY3Vzc2lvbjogJ2RlZmF1bHQnLFxuXHRcdHhmZFdhdGNoUGFnZTogJ2RlZmF1bHQnLFxuXHRcdHhmZFdhdGNoVXNlcjogJ2RlZmF1bHQnLFxuXHRcdG1hcmtYZmRQYWdlc0FzUGF0cm9sbGVkOiB0cnVlLFxuXHRcdEZ3ZENzZFRvWGZkOiBNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRhZmREZWZhdWx0Q2F0ZWdvcnk6ICdkZWxldGUnLFxuXHRcdGFmZEZhbWVEZWZhdWx0UmVhc29uOiAn5rKh5pyJ6Laz5aSf55qE5Y+v6Z2g5p2l5rqQ6K+B5piO5q2k5p2h55uu56ym5ZCIW1tMSUI65pS25b2V5qCH5YeGfOaUtuW9leagh+WHhl1dJyxcblx0XHRhZmRTdWJzdHViRGVmYXVsdFJlYXNvbjogJ+i/h+acn+Wwj+Wwj+S9nOWTgScsXG5cdFx0WGZkQ2xvc2U6IE1vcmViaXRzLnVzZXJJc1N5c29wID8gJ2FsbCcgOiAnaGlkZScsXG5cdFx0Ly8gQ29weXZpb1xuXHRcdGNvcHl2aW9XYXRjaFBhZ2U6ICd5ZXMnLFxuXHRcdGNvcHl2aW9XYXRjaFVzZXI6ICd5ZXMnLFxuXHRcdG1hcmtDb3B5dmlvUGFnZXNBc1BhdHJvbGxlZDogdHJ1ZSxcblx0XHQvLyBIaWRkZW4gcHJlZmVyZW5jZXNcblx0XHRhdXRvbGV2ZWxTdGFsZURheXM6IDMsXG5cdFx0cmV2ZXJ0TWF4UmV2aXNpb25zOiA1MCxcblx0XHQvLyBpbnRlbnRpb25hbGx5IGxpbWl0ZWRcblx0XHRiYXRjaE1heDogNTAwMCxcblx0XHRiYXRjaENodW5rczogNTAsXG5cdFx0Y29uZmlnUGFnZTogJ0hlbHA6VHdpbmtsZS/lj4LmlbDorr7nva4nLFxuXHRcdHByb2plY3ROYW1lc3BhY2VOYW1lOiBtdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVs0XSxcblx0XHRzYW5kYm94UGFnZTogJ0xJQjrmspnnm5InLFxuXHRcdC8vIERlcHJlY2F0ZWQgb3B0aW9ucywgYXMgYSBmYWxsYmFjayBmb3IgYWRkLW9uIHNjcmlwdHMvbW9kdWxlc1xuXHRcdHN1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdGRlbGV0aW9uU3VtbWFyeUFkOiAn77yIW1tIOlRXfFR3aW5rbGVdXe+8iScsXG5cdFx0cHJvdGVjdGlvblN1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdGJsb2NrU3VtbWFyeUFkOiAn77yIW1tIOlRXfFR3aW5rbGVdXe+8iScsXG5cdFx0Ly8gVGFnXG5cdFx0Z3JvdXBCeURlZmF1bHQ6IHRydWUsXG5cdFx0d2F0Y2hUYWdnZWRQYWdlczogJ3llcycsXG5cdFx0d2F0Y2hNZXJnZURpc2N1c3Npb25zOiAneWVzJyxcblx0XHRtYXJrVGFnZ2VkUGFnZXNBc01pbm9yOiBmYWxzZSxcblx0XHRtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZDogdHJ1ZSxcblx0XHR0YWdBcnRpY2xlU29ydE9yZGVyOiAnY2F0Jyxcblx0XHRjdXN0b21UYWdMaXN0OiBbXSxcblx0XHRjdXN0b21GaWxlVGFnTGlzdDogW10sXG5cdFx0Y3VzdG9tUmVkaXJlY3RUYWdMaXN0OiBbXSxcblx0XHQvLyBTdHViXG5cdFx0d2F0Y2hTdHViYmVkUGFnZXM6IGZhbHNlLFxuXHRcdG1hcmtTdHViYmVkUGFnZXNBc01pbm9yOiBmYWxzZSxcblx0XHRtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQ6IHRydWUsXG5cdFx0c3R1YkFydGljbGVTb3J0T3JkZXI6ICdjYXQnLFxuXHRcdGN1c3RvbVN0dWJMaXN0OiBbXSxcblx0XHQvLyBUYWxrYmFja1xuXHRcdG1hcmtUYWxrYmFja0FzTWlub3I6IHRydWUsXG5cdFx0aW5zZXJ0VGFsa2JhY2tTaWduYXR1cmU6IHRydWUsXG5cdFx0Ly8gYWx3YXlzIHNpZ24gdGFsa2JhY2sgdGVtcGxhdGVzXG5cdFx0dGFsa2JhY2tIZWFkaW5nOiB3aW5kb3cud2dVTFMoJ+WbnuWkjemAmuWRiicsICflm57opobpgJrlkYonKSxcblx0XHRtYWlsSGVhZGluZzogd2luZG93LndnVUxTKCfmgqjmnInmlrDpgq7ku7bvvIEnLCAn5oKo5pyJ5paw6YO15Lu277yBJyksXG5cdH07XG5cdC8vIG5vdyBzb21lIHNraW4gZGVwZW5kZW50IGNvbmZpZy5cblx0c3dpdGNoIChtdy5jb25maWcuZ2V0KCdza2luJykpIHtcblx0XHRjYXNlICd2ZWN0b3InOlxuXHRcdGNhc2UgJ3ZlY3Rvci0yMDIyJzpcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0QXJlYSA9ICdyaWdodC1uYXZpZ2F0aW9uJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0SWQgPSAncC10d2lua2xlJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmFtZSA9ICdUVyc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldFR5cGUgPSAnbWVudSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5leHQgPSAncC1zZWFyY2gnO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnZ29uZ2JpJzpcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0QXJlYSA9XG5cdFx0XHRcdCRib2R5LmZpbmQoJyNwYWdlLXRvb2xzIC5zaWRlYmFyLWlubmVyJykubGVuZ3RoID4gMFxuXHRcdFx0XHRcdD8gJyNwYWdlLXRvb2xzIC5zaWRlYmFyLWlubmVyJ1xuXHRcdFx0XHRcdDogJyNwYWdlLW1vcmUgLnNpZGViYXItaW5uZXInO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRJZCA9ICdwLXR3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROYW1lID0gJ1R3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gbnVsbDtcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmV4dCA9XG5cdFx0XHRcdCRib2R5LmZpbmQoJyNwYWdlLXRvb2xzIC5zaWRlYmFyLWlubmVyJykubGVuZ3RoID4gMCA/ICdwYWdlLW1vcmUnIDogbnVsbDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2NpdGl6ZW4nOlxuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRBcmVhID0gJyNwYWdlLWFjdGlvbnMtbW9yZV9fY2FyZCc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldElkID0gJ3AtdHdpbmtsZSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5hbWUgPSAnVHdpbmtsZSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldFR5cGUgPSAnbmF2Jztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmV4dCA9ICdwLXRiJztcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldEFyZWEgPSBudWxsO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRJZCA9ICdwLWNhY3Rpb25zJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmFtZSA9IG51bGw7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldFR5cGUgPSBudWxsO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROZXh0ID0gbnVsbDtcblx0fVxuXHRUd2lua2xlLmdldFByZWYgPSAobmFtZSkgPT4ge1xuXHRcdGlmICh0eXBlb2YgVHdpbmtsZS5wcmVmcyA9PT0gJ29iamVjdCcgJiYgVHdpbmtsZS5wcmVmc1tuYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gVHdpbmtsZS5wcmVmc1tuYW1lXTtcblx0XHR9XG5cdFx0Ly8gT2xkIHByZWZlcmVuY2VzIGZvcm1hdCwgdXNlZCBiZWZvcmUgdHdpbmtsZW9wdGlvbnMuanMgd2FzIGEgdGhpbmdcblx0XHRpZiAodHlwZW9mIHdpbmRvdy5Ud2lua2xlQ29uZmlnID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuVHdpbmtsZUNvbmZpZ1tuYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gd2luZG93LlR3aW5rbGVDb25maWdbbmFtZV07XG5cdFx0fVxuXHRcdHJldHVybiBUd2lua2xlLmRlZmF1bHRDb25maWdbbmFtZV07XG5cdH07XG5cdC8qKlxuXHQgKiAqKioqKioqKioqKioqKioqIFR3aW5rbGUuYWRkUG9ydGxldCgpICoqKioqKioqKioqKioqKipcblx0ICpcblx0ICogQWRkcyBhIHBvcnRsZXQgbWVudSB0byBvbmUgb2YgdGhlIG5hdmlnYXRpb24gYXJlYXMgb24gdGhlIHBhZ2UuXG5cdCAqIFRoaXMgaXMgbmVjZXNzYXJpbHkgcXVpdGUgYSBoYWNrIHNpbmNlIHNraW5zLCBuYXZpZ2F0aW9uIGFyZWFzLCBhbmRcblx0ICogcG9ydGxldCBtZW51IHR5cGVzIGFsbCB3b3JrIHNsaWdodGx5IGRpZmZlcmVudC5cblx0ICpcblx0ICogQXZhaWxhYmxlIG5hdmlnYXRpb24gYXJlYXMgZGVwZW5kIG9uIHRoZSBza2luIHVzZWQuXG5cdCAqIFZlY3Rvcjpcblx0ICogLSBGb3IgZWFjaCBvcHRpb24sIHRoZSBvdXRlciBuYXYgY2xhc3MgY29udGFpbnMgXCJ2ZWN0b3ItbWVudVwiLCB0aGUgaW5uZXIgZGl2IGNsYXNzIGlzIFwidmVjdG9yLW1lbnUtY29udGVudFwiLCBhbmQgdGhlIHVsIGlzIFwidmVjdG9yLW1lbnUtY29udGVudC1saXN0XCJcblx0ICogLSBcIm13LXBhbmVsXCIsIG91dGVyIG5hdiBjbGFzcyBjb250YWlucyBcInZlY3Rvci1tZW51LXBvcnRhbFwiLiBFeGlzdGluZyBwb3J0bGV0cy9lbGVtZW50czogXCJwLWxvZ29cIiwgXCJwLW5hdmlnYXRpb25cIiwgXCJwLWludGVyYWN0aW9uXCIsIFwicC10YlwiLCBcInAtY29sbC1wcmludF9leHBvcnRcIlxuXHQgKiAtIFwibGVmdC1uYXZpZ2F0aW9uXCIsIG91dGVyIG5hdiBjbGFzcyBjb250YWlucyBcInZlY3Rvci1tZW51LXRhYnNcIiBvciBcInZlY3Rvci1tZW51LWRyb3Bkb3duXCIuIEV4aXN0aW5nIHBvcnRsZXRzOiBcInAtbmFtZXNwYWNlc1wiLCBcInAtdmFyaWFudHNcIiAobWVudSlcblx0ICogLSBcInJpZ2h0LW5hdmlnYXRpb25cIiwgb3V0ZXIgbmF2IGNsYXNzIGNvbnRhaW5zIFwidmVjdG9yLW1lbnUtdGFic1wiIG9yIFwidmVjdG9yLW1lbnUtZHJvcGRvd25cIi4gRXhpc3RpbmcgcG9ydGxldHM6IFwicC12aWV3c1wiLCBcInAtY2FjdGlvbnNcIiAobWVudSksIFwicC1zZWFyY2hcIlxuXHQgKiAtIFNwZWNpYWwgbGF5b3V0IG9mIHAtcGVyc29uYWwgcG9ydGxldCAocGFydCBvZiBcImhlYWRcIikgdGhyb3VnaCBzcGVjaWFsaXplZCBzdHlsZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYXZpZ2F0aW9uIC0tIGlkIG9mIHRoZSB0YXJnZXQgbmF2aWdhdGlvbiBhcmVhIChza2luIGRlcGVuZGFudCwgb24gdmVjdG9yIGVpdGhlciBvZiBcImxlZnQtbmF2aWdhdGlvblwiLCBcInJpZ2h0LW5hdmlnYXRpb25cIiwgb3IgXCJtdy1wYW5lbFwiKVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWQgLS0gaWQgb2YgdGhlIHBvcnRsZXQgbWVudSB0byBjcmVhdGUsIHByZWZlcmFibHkgc3RhcnQgd2l0aCBcInAtXCIuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0tIG5hbWUgb2YgdGhlIHBvcnRsZXQgbWVudSB0byBjcmVhdGUuIFZpc2liaWxpdHkgZGVwZW5kcyBvbiB0aGUgY2xhc3MgdXNlZC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLS0gdHlwZSBvZiBwb3J0bGV0LiBDdXJyZW50bHkgb25seSB1c2VkIGZvciB0aGUgdmVjdG9yIG5vbi1zaWRlYmFyIHBvcnRsZXRzLCBwYXNzIFwibWVudVwiIHRvIG1ha2UgdGhpcyBwb3J0bGV0IGEgZHJvcCBkb3duIG1lbnUuXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbmV4dG5vZGVpZCAtLSB0aGUgaWQgb2YgdGhlIG5vZGUgYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRkZWQsIHNob3VsZCBiZSBhbm90aGVyIGl0ZW0gaW4gdGhlIHNhbWUgbGlzdCwgb3IgdW5kZWZpbmVkIHRvIHBsYWNlIGl0IGF0IHRoZSBlbmQuXG5cdCAqXG5cdCAqIEByZXR1cm4ge05vZGV9IC0tIHRoZSBET00gbm9kZSBvZiB0aGUgbmV3IGl0ZW0gKGEgRElWIGVsZW1lbnQpIG9yIG51bGxcblx0ICovXG5cdFR3aW5rbGUuYWRkUG9ydGxldCA9IChuYXZpZ2F0aW9uLCBpZCwgdGV4dCwgdHlwZSwgbmV4dG5vZGVpZCkgPT4ge1xuXHRcdC8vIHNhbml0eSBjaGVja3MsIGFuZCBnZXQgcmVxdWlyZWQgRE9NIG5vZGVzXG5cdFx0Y29uc3Qgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoL14oPzojfFxcLikvLnRlc3QobmF2aWdhdGlvbikgPyBuYXZpZ2F0aW9uIDogYCMke25hdmlnYXRpb259YCk7XG5cdFx0aWYgKCFyb290KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0Y29uc3QgaXRlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfWApO1xuXHRcdGlmIChpdGVtKSB7XG5cdFx0XHRpZiAoaXRlbS5wYXJlbnROb2RlICYmIGl0ZW0ucGFyZW50Tm9kZSA9PT0gcm9vdCkge1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRsZXQgbmV4dG5vZGU7XG5cdFx0aWYgKG5leHRub2RlaWQpIHtcblx0XHRcdG5leHRub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7bmV4dG5vZGVpZH1gKTtcblx0XHR9XG5cdFx0Ly8gdmVyaWZ5L25vcm1hbGl6ZSBpbnB1dFxuXHRcdGNvbnN0IHNraW4gPSBtdy5jb25maWcuZ2V0KCdza2luJyk7XG5cdFx0aWYgKFxuXHRcdFx0KHNraW4gIT09ICd2ZWN0b3InICYmIHNraW4gIT09ICd2ZWN0b3ItMjAyMicpIHx8XG5cdFx0XHQobmF2aWdhdGlvbiAhPT0gJ2xlZnQtbmF2aWdhdGlvbicgJiYgbmF2aWdhdGlvbiAhPT0gJ3JpZ2h0LW5hdmlnYXRpb24nKVxuXHRcdCkge1xuXHRcdFx0dHlwZSA9IG51bGw7IC8vIG1lbnUgc3VwcG9ydGVkIG9ubHkgaW4gdmVjdG9yJ3MgI2xlZnQtbmF2aWdhdGlvbiAmICNyaWdodC1uYXZpZ2F0aW9uXG5cdFx0fVxuXHRcdGxldCBvdXRlck5hdkNsYXNzO1xuXHRcdGxldCBpbm5lckRpdkNsYXNzO1xuXHRcdHN3aXRjaCAoc2tpbikge1xuXHRcdFx0Y2FzZSAndmVjdG9yJzpcblx0XHRcdGNhc2UgJ3ZlY3Rvci0yMDIyJzpcblx0XHRcdFx0Ly8gWFhYOiBwb3J0YWwgZG9lc24ndCB3b3JrXG5cdFx0XHRcdGlmIChuYXZpZ2F0aW9uICE9PSAncG9ydGFsJyAmJiBuYXZpZ2F0aW9uICE9PSAnbGVmdC1uYXZpZ2F0aW9uJyAmJiBuYXZpZ2F0aW9uICE9PSAncmlnaHQtbmF2aWdhdGlvbicpIHtcblx0XHRcdFx0XHRuYXZpZ2F0aW9uID0gJ213LXBhbmVsJztcblx0XHRcdFx0fVxuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ213LXBvcnRsZXQgdmVjdG9yLW1lbnUnO1xuXHRcdFx0XHRpZiAobmF2aWdhdGlvbiA9PT0gJ213LXBhbmVsJykge1xuXHRcdFx0XHRcdG91dGVyTmF2Q2xhc3MgKz0gJyB2ZWN0b3ItbWVudS1wb3J0YWwnO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGUgPT09ICdtZW51Jykge1xuXHRcdFx0XHRcdG91dGVyTmF2Q2xhc3MgKz0gJyB2ZWN0b3ItbWVudS1kcm9wZG93biB2ZWN0b3ItZHJvcGRvd24gdmVjdG9yLW1lbnUtZHJvcGRvd24tbm9pY29uJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRvdXRlck5hdkNsYXNzICs9ICcgdmVjdG9yLW1lbnUtdGFicyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5uZXJEaXZDbGFzcyA9ICd2ZWN0b3ItbWVudS1jb250ZW50IHZlY3Rvci1kcm9wZG93bi1jb250ZW50Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdnb25nYmknOlxuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ213LXBvcnRsZXQnO1xuXHRcdFx0XHRpbm5lckRpdkNsYXNzID0gJ213LXBvcnRsZXQtYm9keSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnY2l0aXplbic6XG5cdFx0XHRcdG91dGVyTmF2Q2xhc3MgPSAnbXctcG9ydGxldCc7XG5cdFx0XHRcdGlubmVyRGl2Q2xhc3MgPSAnbXctcG9ydGxldC10d2lua2xlJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRuYXZpZ2F0aW9uID0gJ2NvbHVtbi1vbmUnO1xuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ3BvcnRsZXQnO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gQnVpbGQgdGhlIERPTSBlbGVtZW50cy5cblx0XHRsZXQgb3V0ZXJOYXY7XG5cdFx0bGV0IGhlYWRpbmc7XG5cdFx0aWYgKHNraW4gPT09ICd2ZWN0b3ItMjAyMicpIHtcblx0XHRcdG91dGVyTmF2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0ZXJOYXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduYXYnKTtcblx0XHRcdGhlYWRpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMycpO1xuXHRcdH1cblx0XHRvdXRlck5hdi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIGAke2lkfS1sYWJlbGApO1xuXHRcdC8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBoZXJlIChvdXRlck5hdkNsYXNzKTpcblx0XHQvLyAqIG13LXBvcnRsZXQgdmVjdG9yLW1lbnUgdmVjdG9yLW1lbnUtKlxuXHRcdC8vICogbXctcG9ydGxldFxuXHRcdC8vICogY29sdW1uLW9uZVxuXHRcdC8vIFZlY3RvciBnZXR0aW5nIHZlY3Rvci1tZW51LWVtcHR5IEZJWE1FIFRPRE9cblx0XHRvdXRlck5hdi5jbGFzc05hbWUgPSBgJHtvdXRlck5hdkNsYXNzfSBlbXB0eVBvcnRsZXRgO1xuXHRcdG91dGVyTmF2LmlkID0gaWQ7XG5cdFx0aWYgKG5leHRub2RlICYmIG5leHRub2RlLnBhcmVudE5vZGUgPT09IHJvb3QpIHtcblx0XHRcdHJvb3QuaW5zZXJ0QmVmb3JlKG91dGVyTmF2LCBuZXh0bm9kZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJvb3QuYXBwZW5kQ2hpbGQob3V0ZXJOYXYpO1xuXHRcdH1cblx0XHRoZWFkaW5nLmlkID0gYCR7aWR9LWxhYmVsYDtcblx0XHRjb25zdCB1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7XG5cdFx0aWYgKHNraW4gPT09ICd2ZWN0b3InIHx8IHNraW4gPT09ICd2ZWN0b3ItMjAyMicpIHtcblx0XHRcdGhlYWRpbmcuc2V0QXR0cmlidXRlKCdmb3InLCBgJHtpZH0tZHJvcGRvd24tY2hlY2tib3hgKTtcblx0XHRcdHVsLmNsYXNzTmFtZSA9ICd2ZWN0b3ItbWVudS1jb250ZW50LWxpc3QnO1xuXHRcdFx0aGVhZGluZy5jbGFzc05hbWUgPSAndmVjdG9yLW1lbnUtaGVhZGluZyB2ZWN0b3ItZHJvcGRvd24tbGFiZWwnO1xuXHRcdFx0Ly8gYWRkIGludmlzaWJsZSBjaGVja2JveCB0byBrZWVwIG1lbnUgb3BlbiB3aGVuIGNsaWNrZWRcblx0XHRcdC8vIHNpbWlsYXIgdG8gdGhlIHAtY2FjdGlvbnMgKFwiTW9yZVwiKSBtZW51XG5cdFx0XHRpZiAob3V0ZXJOYXZDbGFzcy5pbmNsdWRlcygndmVjdG9yLW1lbnUtZHJvcGRvd24nKSkge1xuXHRcdFx0XHRjb25zdCBjaGtib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRjaGtib3guaWQgPSBgJHtpZH0tZHJvcGRvd24tY2hlY2tib3hgO1xuXHRcdFx0XHRjaGtib3guY2xhc3NOYW1lID0gJ3ZlY3Rvci1tZW51LWNoZWNrYm94IHZlY3Rvci1kcm9wZG93bi1jaGVja2JveCc7XG5cdFx0XHRcdGNoa2JveC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTtcblx0XHRcdFx0Y2hrYm94LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgYCR7aWR9LWxhYmVsYCk7XG5cdFx0XHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKGNoa2JveCk7XG5cdFx0XHRcdC8vIFZlY3RvciBnZXRzIGl0cyB0aXRsZSBpbiBhIHNwYW47IGFsbCBvdGhlcnMgZXhjZXB0XG5cdFx0XHRcdC8vIGdvbmdiaSBoYXZlIG5vIHRpdGxlLCBhbmQgaXQgaGFzIG5vIHNwYW5cblx0XHRcdFx0Y29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG5cdFx0XHRcdGhlYWRpbmcuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cdFx0XHRcdGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdGEuaHJlZiA9ICcjJztcblx0XHRcdFx0JChhKS5vbignY2xpY2snLCAoZSkgPT4ge1xuXHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGhlYWRpbmcuYXBwZW5kQ2hpbGQoYSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEJhc2ljYWxseSBqdXN0IEdvbmdiaVxuXHRcdFx0aGVhZGluZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG5cdFx0fVxuXHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKGhlYWRpbmcpO1xuXHRcdGlmIChpbm5lckRpdkNsYXNzKSB7XG5cdFx0XHRjb25zdCBpbm5lckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0Ly8gVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB1c2VkIGhlcmUgKGlubmVyRGl2Q2xhc3MpOlxuXHRcdFx0Ly8gKiB2ZWN0b3ItbWVudS1jb250ZW50XG5cdFx0XHQvLyAqIG13LXBvcnRsZXQtYm9keVxuXHRcdFx0Ly8gKiBtdy1wb3J0bGV0LXR3aW5rbGVcblx0XHRcdC8vICogcG9ydGxldFxuXHRcdFx0aW5uZXJEaXYuY2xhc3NOYW1lID0gaW5uZXJEaXZDbGFzcztcblx0XHRcdGlubmVyRGl2LmFwcGVuZENoaWxkKHVsKTtcblx0XHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKGlubmVyRGl2KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0ZXJOYXYuYXBwZW5kQ2hpbGQodWwpO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0ZXJOYXY7XG5cdH07XG5cdC8qKlxuXHQgKiAqKioqKioqKioqKioqKioqIFR3aW5rbGUuYWRkUG9ydGxldExpbmsoKSAqKioqKioqKioqKioqKioqXG5cdCAqIEJ1aWxkcyBhIHBvcnRsZXQgbWVudSBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldCwgYW5kIGFkZCB0aGUgcG9ydGxldCBsaW5rLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbn0gdGFzayAtLSBFaXRoZXIgYSBVUkwgZm9yIHRoZSBwb3J0bGV0IGxpbmsgb3IgYSBmdW5jdGlvbiB0byBleGVjdXRlLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRvb2x0aXBcblx0ICogQHJldHVybiB7T2JqZWN0fSBsaW5rXG5cdCAqL1xuXHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rID0gKHRhc2ssIHRleHQsIGlkLCB0b29sdGlwKSA9PiB7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldEFyZWEnKSAhPT0gbnVsbCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0KFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXRBcmVhJyksXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldElkJyksXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldE5hbWUnKSxcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0VHlwZScpLFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXROZXh0Jylcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGNvbnN0IGxpbmsgPSBtdy51dGlsLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0SWQnKSxcblx0XHRcdHR5cGVvZiB0YXNrID09PSAnc3RyaW5nJyA/IHRhc2sgOiAnIycsXG5cdFx0XHR0ZXh0LFxuXHRcdFx0aWQsXG5cdFx0XHR0b29sdGlwXG5cdFx0KTtcblx0XHQkYm9keS5maW5kKCcuY2xpZW50LWpzIC5za2luLXZlY3RvciAjcC1jYWN0aW9ucycpLmNzcygnbWFyZ2luLXJpZ2h0JywgJ2luaXRpYWwnKTtcblx0XHRpZiAodHlwZW9mIHRhc2sgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdCQobGluaylcblx0XHRcdFx0LmZpbmQoJ2EnKVxuXHRcdFx0XHQub24oJ2NsaWNrJywgKGV2KSA9PiB7XG5cdFx0XHRcdFx0dGFzaygpO1xuXHRcdFx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoJC5jb2xsYXBzaWJsZVRhYnMpIHtcblx0XHRcdCQuY29sbGFwc2libGVUYWJzLmhhbmRsZVJlc2l6ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gbGluaztcblx0fTtcblx0LyoqXG5cdCAqICoqKioqKioqKioqKioqKiogR2VuZXJhbCBpbml0aWFsaXphdGlvbiBjb2RlICoqKioqKioqKioqKioqKipcblx0ICovXG5cdGNvbnN0IHNjcmlwdHVybCA9IG13LnV0aWwuZ2V0VXJsKGBVc2VyOiR7bXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpfS90d2lua2xlb3B0aW9ucy5qc2AsIHtcblx0XHRhY3Rpb246ICdyYXcnLFxuXHRcdGN0eXBlOiAndGV4dC9qYXZhc2NyaXB0Jyxcblx0XHRoYXBweTogJ3llcycsXG5cdH0pO1xuXHQvLyBSZXRyaWV2ZSB0aGUgdXNlcidzIFR3aW5rbGUgcHJlZmVyZW5jZXMgKHdpbmRvdy5Ud2lua2xlLnByZWZzKVxuXHRUd2lua2xlLnByZWZzIHx8PSB7fTtcblx0bXcubG9hZGVyXG5cdFx0LmdldFNjcmlwdChzY3JpcHR1cmwpXG5cdFx0LmZhaWwoKCkgPT4ge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5pyq6IO95Yqg6L295oKo55qEVHdpbmtsZeWPguaVsOiuvue9ricsICfmnKrog73ovInlhaXmgqjnmoRUd2lua2xl5YGP5aW96Kit5a6aJyksIHtcblx0XHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZScsXG5cdFx0XHR9KTtcblx0XHR9KVxuXHRcdC5hbHdheXMoKCkgPT4ge1xuXHRcdFx0JChUd2lua2xlLmxvYWQpO1xuXHRcdH0pO1xuXHQvLyBEZXZlbG9wZXJzOiB5b3UgY2FuIGltcG9ydCBjdXN0b20gVHdpbmtsZSBtb2R1bGVzIGhlcmVcblx0Ly8gRm9yIGV4YW1wbGUsIG13LmxvYWRlci5sb2FkKHNjcmlwdHBhdGhiZWZvcmUgKyBcIlVzZXI6VW5jbGVEb3VnZ2llL21vcmViaXRzLXRlc3QuanNcIiArIHNjcmlwdHBhdGhhZnRlcik7XG5cdFR3aW5rbGUubG9hZCA9ICgpID0+IHtcblx0XHQvLyBEb24ndCBhY3RpdmF0ZSBvbiBzcGVjaWFsIHBhZ2VzIG90aGVyIHRoYW4gdGhvc2UgbGlzdGVkIGhlcmUsIHNvXG5cdFx0Ly8gdGhhdCBvdGhlcnMgbG9hZCBmYXN0ZXIsIGVzcGVjaWFsbHkgdGhlIHdhdGNobGlzdC5cblx0XHRsZXQgYWN0aXZlU3BlY2lhbFBhZ2VMaXN0ID0gWydCbG9jaycsICdDb250cmlidXRpb25zJywgJ0FidXNlTG9nJywgJ1JlY2VudGNoYW5nZXMnLCAnUmVjZW50Y2hhbmdlc2xpbmtlZCddOyAvLyB3Z1JlbGV2YW50VXNlck5hbWUgZGVmaW5lZCBmb3Igbm9uLXN5c29wcyBvbiBTcGVjaWFsOkJsb2NrXG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRhY3RpdmVTcGVjaWFsUGFnZUxpc3QgPSBbXG5cdFx0XHRcdC4uLmFjdGl2ZVNwZWNpYWxQYWdlTGlzdCxcblx0XHRcdFx0J0RlbGV0ZWRDb250cmlidXRpb25zJyxcblx0XHRcdFx0J1ByZWZpeGluZGV4Jyxcblx0XHRcdFx0J0Jyb2tlblJlZGlyZWN0cycsXG5cdFx0XHRdO1xuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAtMSAmJlxuXHRcdFx0IWFjdGl2ZVNwZWNpYWxQYWdlTGlzdC5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBQcmV2ZW50IGNsaWNramFja2luZ1xuXHRcdGlmICh3aW5kb3cudG9wICE9PSB3aW5kb3cuc2VsZikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBTZXQgY3VzdG9tIEFwaS1Vc2VyLUFnZW50IGhlYWRlciwgZm9yIHNlcnZlci1zaWRlIGxvZ2dpbmcgcHVycG9zZXNcblx0XHRUd2lua2xlLnVzZXJBZ2VudCA9ICdUd2lua2xlLzEuMSc7XG5cdFx0TW9yZWJpdHMud2lraS5hcGkuc2V0QXBpVXNlckFnZW50KFR3aW5rbGUudXNlckFnZW50KTtcblx0XHRUd2lua2xlLmRpc2FibGVkTW9kdWxlcyA9IFsuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkTW9kdWxlcycpLCAuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkU3lzb3BNb2R1bGVzJyldO1xuXHRcdC8vIFJlZGVmaW5lIGFkZEluaXRDYWxsYmFjayBzbyB0aGF0IGFueSBtb2R1bGVzIGJlaW5nIGxvYWRlZCBub3cgb24gYXJlIGRpcmVjdGx5XG5cdFx0Ly8gaW5pdGlhbGlzZWQgcmF0aGVyIHRoYW4gYWRkZWQgdG8gaW5pdENhbGxiYWNrcyBhcnJheVxuXHRcdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrID0gKGZ1bmMsIG5hbWUpID0+IHtcblx0XHRcdGlmICghbmFtZSB8fCAhVHdpbmtsZS5kaXNhYmxlZE1vZHVsZXMuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdFx0ZnVuYygpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gSW5pdGlhbGlzZSBtb2R1bGVzIHRoYXQgd2VyZSBzYXZlZCBpbiBpbml0Q2FsbGJhY2tzIGFycmF5XG5cdFx0Zm9yIChjb25zdCBtb2R1bGUgb2YgVHdpbmtsZS5pbml0Q2FsbGJhY2tzKSB7XG5cdFx0XHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhtb2R1bGUuZnVuYywgbW9kdWxlLm5hbWUpO1xuXHRcdH1cblx0XHQvLyBJbmNyZWFzZXMgdGV4dCBzaXplIGluIFR3aW5rbGUgZGlhbG9ncywgaWYgc28gY29uZmlndXJlZFxuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2RpYWxvZ0xhcmdlRm9udCcpKSB7XG5cdFx0XHRtdy51dGlsLmFkZENTUyhcblx0XHRcdFx0Jy5tb3JlYml0cy1kaWFsb2ctY29udGVudCwubW9yZWJpdHMtZGlhbG9nLWZvb3Rlcmxpbmtze2ZvbnQtc2l6ZToxMDAlIWltcG9ydGFudH0ubW9yZWJpdHMtZGlhbG9nIGlucHV0LC5tb3JlYml0cy1kaWFsb2cgc2VsZWN0LC5tb3JlYml0cy1kaWFsb2ctY29udGVudCBidXR0b257Zm9udC1zaXplOmluaGVyaXQgIWltcG9ydGFudH0nXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvLyBIaWRlIHRoZSBsaW5nZXJpbmcgc3BhY2UgaWYgdGhlIFRXIG1lbnUgaXMgZW1wdHlcblx0XHRjb25zdCBpc1ZlY3RvciA9IFsndmVjdG9yJywgJ3ZlY3Rvci0yMDIyJ10uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnc2tpbicpKTtcblx0XHRpZiAoaXNWZWN0b3IgJiYgVHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0VHlwZScpID09PSAnbWVudScgJiYgJGJvZHkuZmluZCgnI3AtdHdpbmtsZScpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0JGJvZHkuZmluZCgnI3AtY2FjdGlvbnMnKS5jc3MoJ21hcmdpbi1yaWdodCcsICdpbml0aWFsJyk7XG5cdFx0fVxuXHR9O1xuXHQvKipcblx0ICogVHdpbmtsZS1zcGVjaWZpYyB1dGlsaXR5IGZ1bmN0aW9ucyBzaGFyZWQgYnkgbXVsdGlwbGUgbW9kdWxlc1xuXHQgKlxuXHQgKiBAcGFyYW0geyp9IGZpcnN0XG5cdCAqIEBwYXJhbSB7Kn0gc2Vjb25kXG5cdCAqL1xuXHQvLyBVc2VkIGluIGJhdGNoLCB1bmxpbmssIGFuZCBkZXByb2QgdG8gc29ydCBwYWdlcyBieSBuYW1lc3BhY2UsIGFzXG5cdC8vIGpzb24gZm9ybWF0dmVyc2lvbj0yIHNvcnRzIGJ5IHBhZ2VpZCBpbnN0ZWFkICgjMTI1MSlcblx0VHdpbmtsZS5zb3J0QnlOYW1lc3BhY2UgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuXHRcdHJldHVybiBmaXJzdC5ucyAtIHNlY29uZC5ucyB8fCAoZmlyc3QudGl0bGUgPiBzZWNvbmQudGl0bGUgPyAxIDogLTEpO1xuXHR9O1xuXHQvLyBVc2VkIGluIHVubGluayBsaXN0aW5ncyB0byBsaW5rIHRoZSBwYWdlIHRpdGxlXG5cdFR3aW5rbGUuZ2VuZXJhdGVCYXRjaFBhZ2VMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICRjaGVja2JveC52YWwoKSk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3R3LWJhdGNocGFnZS1saW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgkY2hlY2tib3gudmFsKCkpKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdCRjaGVja2JveC5uZXh0KCkucHJlcGVuZChbbGluaywgJyAnXSk7XG5cdH07XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYXJ2LmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWFydigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZWFydi5qczogQVJWIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJBUlZcIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicywgZXRjLilcblx0ICovXG5cdFR3aW5rbGUuYXJ2ID0gKCkgPT4ge1xuXHRcdGNvbnN0IHVzZXJuYW1lID0gbXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyk7XG5cdFx0aWYgKCF1c2VybmFtZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBpc0lQID0gbXcudXRpbC5pc0lQQWRkcmVzcyh1c2VybmFtZSk7XG5cdFx0Y29uc3QgdGl0bGUgPSBpc0lQXG5cdFx0XHQ/IHdpbmRvdy53Z1VMUygn5oql5ZGKSVDnu5nnrqHnkIblkZgnLCAn5aCx5ZGKSVDntabnrqHnkIblk6EnKVxuXHRcdFx0OiB3aW5kb3cud2dVTFMoJ+aKpeWRiueUqOaIt+e7meeuoeeQhuS6uuWRmCcsICfloLHlkYrkvb/nlKjogIXntabnrqHnkIbkurrlk6EnKTtcblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmFydi5jYWxsYmFjayh1c2VybmFtZSwgaXNJUCk7XG5cdFx0XHR9LFxuXHRcdFx0d2luZG93LndnVUxTKCflkYrnirYnLCAn5ZGK54uAJyksXG5cdFx0XHQndHctYXJ2Jyxcblx0XHRcdHRpdGxlXG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sgPSAodWlkLCBpc0lQKSA9PiB7XG5cdFx0aWYgKHVpZCA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfkvaDkuI3mg7PmiqXlkYrkvaDoh6rlt7HvvIzlr7nlkKfvvJ8nLCAn5L2g5LiN5oOz5aCx5ZGK5L2g6Ieq5bex77yM5bCN5ZCn77yfJyksIHtcblx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNTAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmiqXlkYrnlKjmiLfnu5nnrqHnkIbkurrlkZgnLCAn5aCx5ZGK5L2/55So6ICF57Wm566h55CG5Lq65ZOhJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflkYrnirborr7nva4nLCAn5ZGK54uA6Kit5a6aJyksICdIOlRXL1BSRUYjYXJ2Jyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcj5ZGK54uAJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5hcnYuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGNvbnN0IGNhdGVnb3JpZXMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdjYXRlZ29yeScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nmiqXlkYrnsbvlnovvvJonLCAn6YG45pOH5aCx5ZGK6aGe5Yil77yaJyksXG5cdFx0XHRldmVudDogVHdpbmtsZS5hcnYuY2FsbGJhY2suY2hhbmdlQ2F0ZWdvcnksXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnoLTlnY/vvIhMSUI6VklQ77yJJywgJ+egtOWjnu+8iExJQjpWSVDvvIknKSxcblx0XHRcdHZhbHVlOiAnYWl2Jyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8lui+keS6ieiuru+8iExJQjpFV0lQ77yJJywgJ+e3qOi8r+eIreitsO+8iExJQjpFV0lQ77yJJyksXG5cdFx0XHR2YWx1ZTogJ2V3aXAnLFxuXHRcdH0pO1xuXHRcdGNhdGVnb3JpZXMuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35ZCN77yITElCOlVBQe+8iScsICfkvb/nlKjogIXlkI3nqLHvvIhMSUI6VUFB77yJJyksXG5cdFx0XHR2YWx1ZTogJ3VzZXJuYW1lJyxcblx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHVpZCksXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflgoDlhKHosIPmn6XvvIhMSUI6U1BJ77yJJywgJ+WCgOWEoeiqv+afpe+8iExJQjpTUEnvvIknKSxcblx0XHRcdHZhbHVlOiAnc3BpJyxcblx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHVpZCksXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRsYWJlbDogJycsXG5cdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdGlkOiAndHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICdXb3JrIGFyZWEnLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRsYWJlbDogJ+aPkOS6pCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2hpZGRlbicsXG5cdFx0XHRuYW1lOiAndWlkJyxcblx0XHRcdHZhbHVlOiB1aWQsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIHVzZXIgaXMgYmxvY2tlZCwgdXBkYXRlIG5vdGljZVxuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0bGlzdDogJ2Jsb2NrcycsXG5cdFx0XHRia3Byb3A6ICdyYW5nZXxmbGFncycsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHR9O1xuXHRcdGlmIChpc0lQKSB7XG5cdFx0XHRxdWVyeS5ia2lwID0gdWlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gdWlkO1xuXHRcdH1cblx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkod2luZG93LndnVUxTKCfmo4Dmn6XnlKjmiLfnmoTlsIHnpoHnirbmgIEnLCAn5qqi5p+l5L2/55So6ICF55qE5bCB6Y6W54uA5oWLJyksIHF1ZXJ5LCAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBibG9ja2xpc3QgPSBhcGlvYmouZ2V0UmVzcG9uc2UoKS5xdWVyeS5ibG9ja3M7XG5cdFx0XHRpZiAoYmxvY2tsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBbYmxvY2tdID0gYmxvY2tsaXN0O1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9XG5cdFx0XHRcdFx0KGlzSVAgPyB3aW5kb3cud2dVTFMoJ+atpElQ5Zyw5Z2AJywgJ+atpElQ5L2N5Z2AJykgOiB3aW5kb3cud2dVTFMoJ+atpOi0puWPtycsICfmraTos6zomZ8nKSkgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bey57uP6KKrJywgJ+W3sue2k+iiqycpICtcblx0XHRcdFx0XHQoYmxvY2sucGFydGlhbCA/ICfpg6jliIYnIDogJycpO1xuXHRcdFx0XHQvLyBTdGFydCBhbmQgZW5kIGRpZmZlciwgcmFuZ2UgYmxvY2tlZFxuXHRcdFx0XHRtZXNzYWdlICs9IGJsb2NrLnJhbmdlc3RhcnQgPT09IChibG9jay5yYW5nZWVuZCA/ICfmrrUnIDogJycpICsgd2luZG93LndnVUxTKCflsIHnpoHjgIInLCAn5bCB6Y6W44CCJyk7XG5cdFx0XHRcdGlmIChibG9jay5wYXJ0aWFsKSB7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtYXJ2LWJsb2Nrd2FybmluZycpLmNzcygnY29sb3InLCAnYmxhY2snKTsgLy8gTGVzcyBzZXZlcmVcblx0XHRcdFx0fVxuXHRcdFx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJykudGV4dChtZXNzYWdlKTtcblx0XHRcdH1cblx0XHR9KS5wb3N0KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZVxuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2Lmx0YV9saXN0ID0gW1xuXHRcdHtcblx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmFydi5jYWxsYmFjay5zb2NrbWFzdGVyX2NoYW5nZWQgPSAoZSkgPT4ge1xuXHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnNldF9zb2NrbWFzdGVyKGUudGFyZ2V0LnZhbHVlKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIgPSAoc29ja21hc3RlcikgPT4ge1xuXHRcdCRib2R5LmZpbmQoJ2NvZGUudHctYXJ2LXNvY2ttYXN0ZXInKS50ZXh0KCd7eycuY29uY2F0KCdzdWJzdDonLCBgU29ja3N1c3BlY3Rub3RpY2V8MT0ke3NvY2ttYXN0ZXJ9fX1gKSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmNoYW5nZUNhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCB2YWx1ZV8gPSBlLnRhcmdldC52YWx1ZTtcblx0XHRjb25zdCByb290XyA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyb290XywgJ3dvcmtfYXJlYScpO1xuXHRcdGxldCB3b3JrX2FyZWEgPSBudWxsO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdHByZXZpZXdsaW5rLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblx0XHRwcmV2aWV3bGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6aKE6KeIJywgJ+mgkOimvScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnByZXZpZXcocm9vdF8pO1xuXHRcdH0pO1xuXHRcdHN3aXRjaCAodmFsdWVfKSB7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aKpeWRiue8lui+keS6ieiuricsICfloLHlkYrnt6jovK/niK3orbAnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ebuOWFs+mhtemdou+8micsICfnm7jpl5zpoIHpnaLvvJonKSxcblx0XHRcdFx0XHRzdWJsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLvvJonLCAn6aCB6Z2i77yaJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflpoLkuI3luIzmnJvorqnmiqXlkYrpk77mjqXliLDpobXpnaLvvIzor7fnlZnnqbonLCAn5aaC5LiN5biM5pyb6K6T5aCx5ZGK6YCj57WQ5Yiw6aCB6Z2i77yM6KuL55WZ56m6JyksXG5cdFx0XHRcdFx0bWluOiAxLFxuXHRcdFx0XHRcdG1heDogMTAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK5LiN5b2T55So5oi35ZCNJywgJ+WgseWRiuS4jeeVtuS9v+eUqOiAheWQjeeosScpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5b2T55So5oi35ZCN57G75Z6LJywgJ+S4jeeVtuS9v+eUqOiAheWQjeeosemhnuWIpScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmnInlhb3moaPmoYjppobkuI3lhYHorrjkvb/nlKjluKbmnInor6/lr7zmgKfjgIHlrqPkvKDmgKfjgIHkvq7ovrHmgKfmiJbnoLTlnY/mgKfnmoTnlKjmiLflkI3jgILmraTlpJbvvIzkvb/nlKjln5/lkI3lj4rpgq7nrrHlnLDlnYDnmoTnlKjmiLflkI3kuqbooqvnpoHmraLjgILov5nkupvlh4bliJnkv7HlupTlupTnlKjoh7PnlKjmiLflkI3lj4rnrb7lkI3jgILlnKjlhbbku5bor63oqIDkuK3kuI3lvZPnmoTnlKjmiLflkI3miJbpgJrov4fplJnmi7zjgIHmm7/ku6PjgIHmmpfnpLrjgIHmi4blrZfmiJbku7vkvZXpl7TmjqXmlrnms5Xovr7miJDnmoTpnZ7lpqXlvZPnlKjmiLflkI3lkIzmoLfop4bkuLrov53op4TjgIInLFxuXHRcdFx0XHRcdFx0J+acieeNuOaqlOahiOmkqOS4jeWFgeioseS9v+eUqOW4tuacieiqpOWwjuaAp+OAgeWuo+WCs+aAp+OAgeS+rui+seaAp+aIluegtOWjnuaAp+eahOS9v+eUqOiAheWQjeeoseOAguatpOWklu+8jOS9v+eUqOWfn+WQjeWPiumbu+WtkOS/oeeuseS9jeWdgOeahOS9v+eUqOiAheWQjeeoseS6puiiq+emgeatouOAgumAmeS6m+a6luWJh+S/seaHieaHieeUqOiHs+S9v+eUqOiAheWQjeeoseWPiuewveWQjeOAguWcqOWFtuS7luiqnuiogOS4reS4jeeVtueahOS9v+eUqOiAheWQjeeoseaIlumAmumBjumMr+aLvOOAgeabv+S7o+OAgeaal+ekuuOAgeaLhuWtl+aIluS7u+S9lemWk+aOpeaWueazlemBlOaIkOeahOmdnuWmpeeVtuS9v+eUqOiAheWQjeeoseWQjOaoo+imlueCuumBleimj+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor6/lr7zmgKfnlKjmiLflkI0nLCAn6Kqk5bCO5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+ivr+WvvOaApycsICfoqqTlsI7mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor6/lr7zmgKfnlKjmiLflkI3pmpDlkKvnnYDkuI7otKHnjK7ogIXnm7jlhbPmiJbor6/lr7zku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lrp7op4LngrnjgIHmmpfnpLrotKblj7fmi6XmnInnibnlrprmnYPpmZDmiJbmmpfnpLror6XotKblj7flubbpnZ7nlLHkuIDkurrmi6XmnInogIzmmK/nlLHkuIDkuKrnu4TnvqTjgIHkuIDkuKrpobnnm67miJbkuIDkuKrpm4bkvZPov5DkvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoqqTlsI7mgKfkvb/nlKjogIXlkI3nqLHpmrHlkKvokZfoiIfosqLnjbvogIXnm7jpl5zmiJboqqTlsI7ku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lr6bop4Dpu57jgIHmmpfnpLros6zomZ/mk4HmnInnibnlrprmrIrpmZDmiJbmmpfnpLroqbLos6zomZ/kuKbpnZ7nlLHkuIDkurrmk4HmnInogIzmmK/nlLHkuIDlgIvnvqTntYTjgIHkuIDlgIvoqIjnlavmiJbkuIDlgIvpm4bpq5TpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrqPkvKDmgKfnlKjmiLflkI0nLCAn5a6j5YKz5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+Wuo+S8oOaApycsICflrqPlgrPmgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflrqPkvKDmgKfnlKjmiLflkI3kvJrkuo7mnInlhb3moaPmoYjppobkuIrotbfmjqjplIDkuIDkuKrnu4TnvqTmiJbkuIDpl7Tlhazlj7jnmoTkvZznlKjjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmnIPmlrzmnInnjbjmqpTmoYjppKjkuIrotbfmjqjpirfkuIDlgIvnvqTntYTmiJbkuIDplpPlhazlj7jnmoTkvZznlKjjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmpfnpLrlubbpnZ7nlLHkuIDkurrmi6XmnIknLCAn5pqX56S65Lim6Z2e55Sx5LiA5Lq65pOB5pyJJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnc2hhcmVkJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/kuKrotKblj7flj6rlj6/ku6Xku6PooajkuKrkurrvvIjlrrnorrjkuIDkupvkvovlpJbmg4XlhrXvvInvvIzmiYDmnInkuI7ku5bkurrliIbkuqvotKblj7fnmoTooYzkuLrvvIjljIXmi6zliIbkuqvotKblj7flr4bnoIHvvInlnYfooqvnpoHmraLjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/lgIvos6zomZ/lj6rlj6/ku6Xku6PooajlgIvkurrvvIjlrrnoqLHkuIDkupvkvovlpJbmg4Xms4HvvInvvIzmiYDmnInoiIfku5bkurrliIbkuqvos6zomZ/nmoTooYzngrrvvIjljIXmi6zliIbkuqvos6zomZ/lr4bnorzvvInlnYfooqvnpoHmraLjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvq7ovrHmgKfnlKjmiLflkI0nLCAn5L6u6L6x5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAn5L6u6L6x5oCnJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfnlKjmiLflkI3ku6TljY/osIPnvJbovpHlj5jlvpflm7Dpmr7vvIznlJroh7Pml6Dlj6/og73jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHku6TljZToqr/nt6jovK/ororlvpflm7Dpm6PvvIznlJroh7PnhKHlj6/og73jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnoLTlnY/mgKfnlKjmiLflkI0nLCAn56C05aOe5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+egtOWdj+aApycsICfnoLTlo57mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlnY/mgKfnlKjmiLflkI3ljIXmi6zkurrouqvmlLvlh7vjgIHkvKrlhpLku5bkurrmiJblhbbku5bkuIDliIfmnInnnYDmuIXmmbDlj6/op4HnmoTnoLTlnY/mnInlhb3moaPmoYjppobmhI/lm77nmoTnlKjmiLflkI3jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlo57mgKfkvb/nlKjogIXlkI3nqLHljIXmi6zkurrouqvmlLvmk4rjgIHlgb3lhpLku5bkurrmiJblhbbku5bkuIDliIfmnInokZfmuIXmmbDlj6/opovnmoTnoLTlo57mnInnjbjmqpTmoYjppKjmhI/lnJbnmoTkvb/nlKjogIXlkI3nqLHjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5LiK6ZqQ6JeP55So5oi35ZCN77yI6ZyA55uR552j55qE55So5oi35ZCN6K+35Yu/5LqO56uZ5YaF5oql5ZGK77yM5Yu+6YCJ5q2k6aG55bm25LiN5p6E5oiQ6IO95Zyo56uZ5YaF5oql5ZGK55qE55CG55Sx77yJJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK6Zqx6JeP5L2/55So6ICF5ZCN56ix77yI6ZyA55uj552j55qE5L2/55So6ICF5ZCN56ix6KuL5Yu/5pa856uZ5YWn5aCx5ZGK77yM5Yu+6YG45q2k6aCF5Lim5LiN5qeL5oiQ6IO95Zyo56uZ5YWn5aCx5ZGK55qE55CG55Sx77yJJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeeUqOaIt+WQjeS4jeW9k+ivt+WLvumAieatpOmhue+8jOazqOaEj++8muivt+iAg+iZkeengeS4i+iBlOezu+euoeeQhuWRmOWkhOeQhuOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeS9v+eUqOiAheWQjeeoseS4jeeVtuiri+WLvumBuOatpOmghe+8jOazqOaEj++8muiri+iAg+aFruengeS4i+iBr+e1oeeuoeeQhuWToeiZleeQhuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2hpZGVuYW1lJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdoaWRlbmFtZScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0c3R5bGU6ICdmb250LXdlaWdodDogYm9sZDsnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor4TorrrvvJonLCAn6KmV6KuW77yaJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3NwaSc6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5HotbflgoDlhKHosIPmn6UnLCAn55m86LW35YKA5YSh6Kq/5p+lJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzb2NrbWFzdGVyJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+S4u+i0puWPt+eahOeUqOaIt+WQje+8iOS4jeWQq1VzZXI65YmN57yA77yJJywgJ+S4u+izrOiZn+eahOS9v+eUqOiAheWQjeeose+8iOS4jeWQq1VzZXI65a2X6aaW77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6IHJvb3RfLnVpZC52YWx1ZSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5hcnYuY2FsbGJhY2suc29ja21hc3Rlcl9jaGFuZ2VkLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXNwaW5vdGljZWJveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvY2twdXBwZXQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YKA5YShJyxcblx0XHRcdFx0XHRzdWJsYWJlbDogJ+WCgOWEoe+8micsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflgoDlhKHnmoTnlKjmiLflkI3vvIjkuI3lkKtVc2VyOuWJjee8gO+8iScsICflgoDlhKHnmoTkvb/nlKjogIXlkI3nqLHvvIjkuI3lkKtVc2VyOuWtl+mmlu+8iScpLFxuXHRcdFx0XHRcdG1pbjogMixcblx0XHRcdFx0XHRtYXg6IDksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivgeaNru+8micsICforYnmk5rvvJonKSxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L6T5YWl6IO95aSf55So5p2l5L2T546w6L+Z5Lqb55So5oi35Y+v6IO95rul55So5aSa6YeN6LSm5Y+355qE6K+B5o2u77yM6L+Z6YCa5bi45YyF5ous6Iy26aaG5Y+R6KiA44CB6aG16Z2i5Y6G5Y+y5oiW5YW25LuW5pyJ5YWz55qE5L+h5oGv44CC6K+36YG/5YWN5Zyo5q2k5aSE5o+Q5L6b6Z2e5LiO5YKA5YSh5oiW5rul55So5aSa6YeN6LSm5Y+355u45YWz55qE5YW25LuW6K6o6K6644CCJyxcblx0XHRcdFx0XHRcdCfovLjlhaXog73lpKDnlKjkvobpq5Tnj77pgJnkupvkvb/nlKjogIXlj6/og73mv6vnlKjlpJrph43os6zomZ/nmoTorYnmk5rvvIzpgJnpgJrluLjljIXmi6zojLbppKjnmbzoqIDjgIHpoIHpnaLmrbflj7LmiJblhbbku5bmnInpl5znmoTos4foqIrjgILoq4vpgb/lhY3lnKjmraTomZXmj5DkvpvpnZ7oiIflgoDlhKHmiJbmv6vnlKjlpJrph43os6zomZ/nm7jpl5znmoTlhbbku5boqI7oq5bjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLnlKjmiLfmn6XmoLgnLCAn6KuL5rGC5L2/55So6ICF5p+l5qC4JyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdjaGVja3VzZXInLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOaIt+afpeaguOaYr+S4gOenjeeUqOS6juiOt+WPluWCgOWEoeaMh+aOp+ebuOWFs+aKgOacr+ivgeaNrueahOW3peWFt++8jOiLpeayoeacieato+W9k+eQhueUseWImeS4jeS8muS9v+eUqO+8jOaCqOW/hemhu+WcqOivgeaNruWtl+auteWFheWIhuino+mHiuS4uuS7gOS5iOmcgOimgeS9v+eUqOivpeW3peWFt+OAgueUqOaIt+afpeaguOS4jeS8mueUqOS6juWFrOW8gOi/nuaOpeeUqOaIt+i0puWPt+S9v+eUqOeahElQ5Zyw5Z2A44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So6ICF5p+l5qC45piv5LiA56iu55So5pa8542y5Y+W5YKA5YSh5oyH5o6n55u46Zec5oqA6KGT6K2J5pOa55qE5bel5YW377yM6Iul5rKS5pyJ5q2j55W255CG55Sx5YmH5LiN5pyD5L2/55So77yM5oKo5b+F6aCI5Zyo6K2J5pOa5qyE5L2N5YWF5YiG6Kej6YeL54K65LuA6bq86ZyA6KaB5L2/55So6Kmy5bel5YW344CC5L2/55So6ICF5p+l5qC45LiN5pyD55So5pa85YWs6ZaL6YCj5o6l5L2/55So6ICF6LOs6Jmf5L2/55So55qESVDkvY3lnYDjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRsYWJlbDogW1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fkvb/nlKjluLjor4blhrPlrprmmK/lkKbku6UnLCAn6KuL5L2/55So5bi46K2Y5rG65a6a5piv5ZCm5LulJyksXG5cdFx0XHRcdFx0XHQkKCc8Y29kZT4nKS5hZGRDbGFzcygndHctYXJ2LXNvY2ttYXN0ZXInKS5jc3MoJ21hcmdpbicsICcycHg7JylbMF0sXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfpgJrnn6XnlKjmiLfjgILov5nkuI3mmK/lv4XpobvnmoTvvIzlr7nkuo7mtonlj4rmlrDnlKjmiLfnmoTmiqXlkYrogIzoqIDvvIzpgJrnn6Xku5bku6zog73orqnmiqXlkYrmmL7lvpfmm7TlhazlubPvvIzkvYbmmK/orrjlpJrmg4XlhrXkuIvvvIjlpoLplb/mnJ/noLTlnY/ogIXvvInpgJrnn6Xmm7Tlj6/og73pgILlvpflhbblj43jgIInLFxuXHRcdFx0XHRcdFx0XHQn6YCa55+l5L2/55So6ICF44CC6YCZ5LiN5piv5b+F6aCI55qE77yM5bCN5pa85raJ5Y+K5paw5L2/55So6ICF55qE5aCx5ZGK6ICM6KiA77yM6YCa55+l5LuW5YCR6IO96K6T5aCx5ZGK6aGv5b6X5pu05YWs5bmz77yM5L2G5piv6Kix5aSa5oOF5rOB5LiL77yI5aaC6ZW35pyf56C05aOe6ICF77yJ6YCa55+l5pu05Y+v6IO96YGp5b6X5YW25Y+N44CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhID0gd29ya19hcmVhLnJlbmRlcigpO1xuXHRcdFx0XHQkKCdpbnB1dDp0ZXh0W25hbWU9c29ja3B1cHBldF0nLCB3b3JrX2FyZWEpLmZpcnN0KCkudmFsKHJvb3RfLnVpZC52YWx1ZSk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRyb290Xy5zcGlub3RpY2VwcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KFxuXHRcdFx0XHRcdCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1zcGlub3RpY2Vib3gnKS5sYXN0KClbMF1cblx0XHRcdFx0KTtcblx0XHRcdFx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIocm9vdF8udWlkLnZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK55So5oi356C05Z2PJywgJ+WgseWRiuS9v+eUqOiAheegtOWjnicpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmj5DmiqXlgoDlhKHlupTkvJjlhYjlj5HpgIHoh7PlgoDlhKHosIPmn6XvvIzpmaTpnZ7nm7jlhbPnmoTotKblj7fmnInpq5jpopHnjofjgIHmtonlj4rlpJrkuKrpobXpnaLnrYnntKfmgKXkuKXph43nmoTnoLTlnY/ooYzkuLrjgIInLFxuXHRcdFx0XHRcdFx0J+aPkOWgseWCgOWEoeaHieWEquWFiOeZvOmAgeiHs+WCgOWEoeiqv+afpe+8jOmZpOmdnuebuOmXnOeahOizrOiZn+aciemrmOmgu+eOh+OAgea2ieWPiuWkmuWAi+mggemdouetiee3iuaApeWatOmHjeeahOegtOWjnuihjOeCuuOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55u45YWz6aG16Z2i77yaJywgJ+ebuOmXnOmggemdou+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5aaC5LiN5biM5pyb6K6p5oql5ZGK6ZO+5o6l5Yiw6aG16Z2i77yM6K+355WZ56m6JywgJ+WmguS4jeW4jOacm+iuk+WgseWRiumAo+e1kOWIsOmggemdou+8jOiri+eVmeepuicpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCAnJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB7dmFsdWV9ID0gZXZlbnQudGFyZ2V0O1xuXHRcdFx0XHRcdFx0Y29uc3Qgcm9vdCA9IGV2ZW50LnRhcmdldC5mb3JtO1xuXHRcdFx0XHRcdFx0aWYgKHZhbHVlID09PSAnJykge1xuXHRcdFx0XHRcdFx0XHRyb290LmJhZGlkLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0cm9vdC5nb29kaWQuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cm9vdC5iYWRpZC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyb290Lmdvb2RpZC5kaXNhYmxlZCA9IHJvb3QuYmFkaWQudmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdiYWRpZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+X5Yiw56C05Z2P55qE5L+u6K6i54mI5pys77yaJywgJ+WPl+WIsOegtOWjnueahOS/ruiogueJiOacrO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55WZ56m65Lul55Wl6L+H5beu5byCJywgJ+eVmeepuuS7peeVpemBjuW3rueVsCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpIHx8ICcnLFxuXHRcdFx0XHRcdGRpc2FibGVkOiAhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qge3ZhbHVlfSA9IGV2ZW50LnRhcmdldDtcblx0XHRcdFx0XHRcdGNvbnN0IHJvb3QgPSBldmVudC50YXJnZXQuZm9ybTtcblx0XHRcdFx0XHRcdHJvb3QuZ29vZGlkLmRpc2FibGVkID0gdmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnb29kaWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdj+WJjeeahOS/ruiuoueJiOacrO+8micsICfnoLTlo57liY3nmoTkv67oqILniYjmnKzvvJonKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+eVmeepuuS7peeVpei/h+W3ruW8gueahOi+g+aXqeeJiOacrCcsICfnlZnnqbrku6XnlaXpgY7lt67nlbDnmoTovIPml6nniYjmnKwnKSxcblx0XHRcdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlZ29vZHJldmlkJykgfHwgJycsXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6ICFtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflt7Llj5Hlh7rmnIDlkI7orablkYonLCAn5bey55m85Ye65pyA5b6M6K2m5ZGKJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnZmluYWwnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6L+H5pyf5ZCO6ZqP5Y2z56C05Z2PJywgJ+WwgemOlumBjuacn+W+jOmaqOWNs+egtOWjnicpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3Bvc3RibG9jaycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoTnuq/noLTlnY/nlKjmiLcnLCAn6aGv6ICM5piT6KaL55qE57SU56C05aOe5L2/55So6ICFJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndmFuZGFsb25seScsXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHJvb3RfLnVpZC52YWx1ZSksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoRzcGFtYm905oiW5aSx56qD6LSm5Y+3JywgJ+mhr+iAjOaYk+imi+eahHNwYW1ib3TmiJblpLHnq4ros6zomZ8nKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdzcGFtYm90Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heeUqOadpeaVo+WPkeW5v+WRiuWuo+S8oOeahOeUqOaItycsICflg4XnlKjkvobmlaPnmbzlu6PlkYrlrqPlgrPnmoTkvb/nlKjogIUnKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdwcm9tb29ubHknLFxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZDogbXcudXRpbC5pc0lQQWRkcmVzcyhyb290Xy51aWQudmFsdWUpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFtdy51dGlsLmlzSVBBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuWPiue8lui+keaRmOimgemakOiXj+eUqOaIt+WQjScsICflnKjpoIHpnaLkuIrlj4rnt6jovK/mkZjopoHpmrHol4/kvb/nlKjogIXlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul55So5oi35ZCN5LiN5b2T6K+35Yu+6YCJ5q2k6aG577yM5rOo5oSP77ya6K+36ICD6JmR56eB5LiL6IGU57O7566h55CG5ZGY5aSE55CG44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjogIXlkI3nqLHkuI3nlbboq4vli77pgbjmraTpoIXvvIzms6jmhI/vvJroq4vogIPmha7np4HkuIvoga/ntaHnrqHnkIblk6HomZXnkIbjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyb290Xy5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1wcmV2aWV3Ym94JykubGFzdCgpWzBdKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sucHJldmlldyA9IChmb3JtKSA9PiB7XG5cdFx0Y29uc3QgcmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRsZXQgdGl0bGU7XG5cdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0Y2FzZSAndmlwJzpcblx0XHRcdFx0dGl0bGUgPSAnTElCX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0dGl0bGUgPSAnTElCX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd1c2VybmFtZSc6XG5cdFx0XHRcdHRpdGxlID0gJ0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3BpJzpcblx0XHRcdFx0dGl0bGUgPSAnTElCX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aXRsZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKGBfX05PVE9DX18ke3JlYXNvblswXX1gLCB0aXRsZSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0ID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0bGV0IHJlYXNvbiA9ICcnO1xuXHRcdGxldCBjb21tZW50ID0gJyc7XG5cdFx0Y29uc3Qge3VpZH0gPSBpbnB1dDtcblx0XHRjb25zdCBjaGVja1RpdGxlID0gKHRpdGxlLCByZXZpZCkgPT4ge1xuXHRcdFx0aWYgKC9odHRwcz86XFwvXFwvLy50ZXN0KHRpdGxlKSkge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfpobXpnaLlkI3np7DkuI3og73kvb/nlKjnvZHlnYDjgIInLCAn6aCB6Z2i5ZCN56ix5LiN6IO95L2/55So57ay5Z2A44CCJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRsZXQgcGFnZV87XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwYWdlXyA9IG5ldyBtdy5UaXRsZSh0aXRsZSk7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0bXcubm90aWZ5KFxuXHRcdFx0XHRcdGAke1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJwnLCAn44CMJykgK1xuXHRcdFx0XHRcdFx0dGl0bGUgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn4oCd5LiN5piv5LiA5Liq5pyJ5pWI55qE6aG16Z2i5ZCN56ew77yM5aaC6KaB5L2/55So5beu5byC6ZO+5o6l6K+35pS+5Zyo4oCc6K+E6K664oCdJyxcblx0XHRcdFx0XHRcdFx0J+OAjeS4jeaYr+S4gOWAi+acieaViOeahOmggemdouWQjeeose+8jOWmguimgeS9v+eUqOW3rueVsOmAo+e1kOiri+aUvuWcqOOAjOipleirluOAjSdcblx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0KHJldmlkID8gd2luZG93LndnVUxTKCfvvIzmiJbmraPnoa7ovpPlhaXigJzkv67orqLniYjmnKzigJ0nLCAn77yM5oiW5q2j56K66Ly45YWl44CM5L+u6KiC54mI5pys44CNJykgOiAnJylcblx0XHRcdFx0XHR944CCYCxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmIChwYWdlXy5uYW1lc3BhY2UgPT09IC0xKSB7XG5cdFx0XHRcdG13Lm5vdGlmeShcblx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRcdHRpdGxlICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+KAneWxnuS6jueJueauiumhtemdou+8jOWmguimgeS9v+eUqOW3ruW8gumTvuaOpeivt+aUvuWcqOKAnOivhOiuuuKAnScsXG5cdFx0XHRcdFx0XHRcdCfjgI3lsazmlrznibnmrorpoIHpnaLvvIzlpoLopoHkvb/nlKjlt67nlbDpgKPntZDoq4vmlL7lnKjjgIzoqZXoq5bjgI0nXG5cdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdChyZXZpZCA/IHdpbmRvdy53Z1VMUygn77yM5oiW5q2j56Gu6L6T5YWl4oCc5L+u6K6i54mI5pys4oCdJywgJ++8jOaIluato+eiuui8uOWFpeOAjOS/ruiogueJiOacrOOAjScpIDogJycpXG5cdFx0XHRcdFx0feOAgmAsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcGFnZV87XG5cdFx0fTtcblx0XHRsZXQgcGFnZTtcblx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHQvLyBSZXBvcnQgM1JSXG5cdFx0XHRjYXNlICdld2lwJzoge1xuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uID09PSAnJykge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumueQhueUsScsICfmgqjlv4XpoIjmjIflrprnkIbnlLEnKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlYXNvbiArPSBgPT0g57yW6L6R5oiY5Li+5oql77yIJHt1aWR977yJID09XFxuYDtcblx0XHRcdFx0cmVhc29uICs9IGAqICcnJ3t7dmFuZGFsfCR7L1s9XS8udGVzdCh1aWQpID8gJzE9JyA6ICcnfSR7dWlkfX19JycnXFxuYDtcblx0XHRcdFx0Y29uc3QgcGFnZXMgPSAkKCdpbnB1dDp0ZXh0W25hbWU9cGFnZV0nLCBmb3JtKS5tYXAoKG8sIGUpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlKS52YWwoKSB8fCBudWxsO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9yIChjb25zdCBwYWdlXyBvZiBwYWdlcykge1xuXHRcdFx0XHRcdHBhZ2UgPSBjaGVja1RpdGxlKHBhZ2VfLCBmYWxzZSk7XG5cdFx0XHRcdFx0aWYgKCFwYWdlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbW1lbnQgKz0gYCoge3twYWdlbGlua3N8JHtcblx0XHRcdFx0XHRcdHBhZ2UuZ2V0UHJlZml4ZWRUZXh0KCkuaW5jbHVkZXMoJz0nKSA/ICcxPScgOiAnJ1xuXHRcdFx0XHRcdH0ke3BhZ2UuZ2V0UHJlZml4ZWRUZXh0KCl9fX1cXG5gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlucHV0LnJlYXNvbiA9IGlucHV0LnJlYXNvbi5yZXBsYWNlKC9cXG5cXG4rL2csICdcXG4nKTtcblx0XHRcdFx0aW5wdXQucmVhc29uID0gaW5wdXQucmVhc29uLnJlcGxhY2UoL1xccj9cXG4vZywgJ1xcbio6Jyk7IC8vIGluZGVudCBuZXdsaW5lc1xuXHRcdFx0XHRjb21tZW50ICs9IGAqICR7aW5wdXQucmVhc29ufVxcbmA7XG5cdFx0XHRcdGNvbW1lbnQgPSBjb21tZW50LnRyaW0oKTtcblx0XHRcdFx0Y29tbWVudCA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihjb21tZW50KTtcblx0XHRcdFx0cmVhc29uICs9IGAke2NvbW1lbnR9XFxuKiDmj5DmiqXkurrvvJp+fmAuY29uY2F0KCd+flxcbiog5aSE55CG77yaJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gUmVwb3J0IGluYXBwcm9wcmlhdGUgdXNlcm5hbWVcblx0XHRcdGNhc2UgJ3VzZXJuYW1lJzoge1xuXHRcdFx0XHRsZXQgdHlwZXMgPSBpbnB1dC5hcnZ0eXBlLm1hcChNb3JlYml0cy5zdHJpbmcudG9Mb3dlckNhc2VGaXJzdENoYXIpO1xuXHRcdFx0XHRjb25zdCBoYXNTaGFyZWQgPSB0eXBlcy5pbmNsdWRlcygnc2hhcmVkJyk7XG5cdFx0XHRcdGlmIChoYXNTaGFyZWQpIHtcblx0XHRcdFx0XHR0eXBlcy5zcGxpY2UodHlwZXMuaW5kZXhPZignc2hhcmVkJyksIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0eXBlcy5pbmNsdWRlcygn5L6u6L6x5oCnJykgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4pemHjeeahOS+rui+seaAp+eUqOaIt+WQjeWSjOmSiOWvueeJueWumuS4quS6uueahOS+rui+seaAp+eUqOaIt+WQjeS4jeW6lOWcqOWFrOW8gOmhtemdouaKpeWRiu+8jOiAjOaYr+W6lOW9k+engeS4i+iBlOezu+ebkeedo+WRmOWkhOeQhuOAguaYr+WQpue7p+e7re+8nycsXG5cdFx0XHRcdFx0XHRcdCforablkYrvvJrlmrTph43nmoTkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHlkozph53lsI3nibnlrprlgIvkurrnmoTkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHkuI3mh4nlnKjlhazplovpoIHpnaLloLHlkYrvvIzogIzmmK/mh4nnlbbnp4HkuIvoga/ntaHnm6PnnaPlk6HomZXnkIbjgILmmK/lkKbnubznuozvvJ8nXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVzLmxlbmd0aCA8PSAyKSB7XG5cdFx0XHRcdFx0dHlwZXMgPSB0eXBlcy5qb2luKCflkownKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0eXBlcyA9IFt0eXBlcy5zbGljZSgwLCAtMSkuam9pbign44CBJyksIHR5cGVzLnNsaWNlKC0xKV0uam9pbign5ZKMJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSBgKnt7dXNlci11YWF8MT0ke3VpZH1gO1xuXHRcdFx0XHRpZiAoaW5wdXQuaGlkZW5hbWUpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICd8aGlkZW5hbWU9MSc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSAnfX0gJm5kYXNoOyAnO1xuXHRcdFx0XHRpZiAodHlwZXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSB0eXBlcyArIHdpbmRvdy53Z1VMUygn55So5oi35ZCNJywgJ+S9v+eUqOiAheWQjeeosScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlcy5sZW5ndGggJiYgaGFzU2hhcmVkKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAn77yMJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaGFzU2hhcmVkKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSB3aW5kb3cud2dVTFMoJ+aal+ekuuivpei0puWPt+W5tumdnueUseS4gOS6uuaLpeaciScsICfmmpfnpLroqbLos6zomZ/kuKbpnZ7nlLHkuIDkurrmk4HmnIknKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZXMubGVuZ3RoIHx8IGhhc1NoYXJlZCkge1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gJ+OAgic7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGlucHV0LnJlYXNvbikge1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gTW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGlucHV0LnJlYXNvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihjb21tZW50KTtcblx0XHRcdFx0Y29tbWVudCArPSAnLS1+ficuY29uY2F0KCd+ficpO1xuXHRcdFx0XHRjb21tZW50ID0gY29tbWVudC5yZXBsYWNlKC9cXHI/XFxuL2csICdcXG4qOicpOyAvLyBpbmRlbnQgbmV3bGluZXNcblx0XHRcdFx0cmVhc29uID0gYD09IOS4jeW9k+eUqOaIt+WQjeaKpeWRiu+8iCR7XG5cdFx0XHRcdFx0aW5wdXQuaGlkZW5hbWUgPyB3aW5kb3cud2dVTFMoJ+W3sumakOiXj+eUqOaIt+WQjScsICflt7LpmrHol4/kvb/nlKjogIXlkI3nqLEnKSA6IHVpZFxuXHRcdFx0XHR977yJID09XFxuYDtcblx0XHRcdFx0cmVhc29uICs9IGNvbW1lbnQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gTElCOlNQSVxuXHRcdFx0Y2FzZSAnc3BpJzoge1xuXHRcdFx0XHRpZiAoIWlucHV0LnJlYXNvbikge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+i+k+WFpeivgeaNruOAgicsICfoq4vovLjlhaXorYnmk5rjgIInKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHNvY2twdXBwZXRzID0gTW9yZWJpdHMuYXJyYXkudW5pcShcblx0XHRcdFx0XHRbLi4uJCgnaW5wdXQ6dGV4dFtuYW1lPXNvY2twdXBwZXRdJywgZm9ybSldLm1hcCgobykgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuICQobykudmFsKCkudHJpbSgpIHx8IG51bGw7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKCFzb2NrcHVwcGV0c1swXSkge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOayoeacieaMh+WumuS7u+S9leWCgOWEoeOAgicsICfmgqjmspLmnInmjIflrprku7vkvZXlgoDlhKHjgIInKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgKz0gJ3t7Jy5jb25jYXQoJ3N1YnN0OicsICdTUEkgcmVwb3J0fCcpO1xuXHRcdFx0XHRpZiAoIXNvY2twdXBwZXRzLmluY2x1ZGVzKGlucHV0LnNvY2ttYXN0ZXIpKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAnMT17eycuY29uY2F0KFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHQnI2lmZXhpc3Q6e3snLFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHRgRlVMTFBBR0VOQU1FfX18fCR7aW5wdXQuc29ja21hc3Rlcn19fXxgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ICs9IGAke3NvY2twdXBwZXRzXG5cdFx0XHRcdFx0Lm1hcCgoc29jaywgaW5kZXgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBgJHtpbmRleCArIDJ9PSR7c29ja31gO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oJ3wnKX1cXG58ZXZpZGVuY2U9JHtNb3JlYml0cy5zdHJpbmcuYXBwZW5kUHVuY3R1YXRpb24oaW5wdXQucmVhc29uKX1cXG5gO1xuXHRcdFx0XHRpZiAoaW5wdXQuY2hlY2t1c2VyKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAnfGNoZWNrdXNlcj15ZXMnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgKz0gJ319Jztcblx0XHRcdFx0cmVhc29uID0gY29tbWVudDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlcG9ydCB1c2VyIGZvciB2YW5kYWxpc21cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGlmICghaW5wdXQuYXJ2dHlwZS5sZW5ndGggJiYgaW5wdXQucmVhc29uID09PSAnJykge1xuXHRcdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumueQhueUsScsICfmgqjlv4XpoIjmjIflrprnkIbnlLEnKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlYXNvbiArPSBgPT0gJHtpbnB1dC5oaWRlbmFtZSA/IHdpbmRvdy53Z1VMUygn5bey6ZqQ6JeP55So5oi35ZCNJywgJ+W3sumaseiXj+S9v+eUqOiAheWQjeeosScpIDogdWlkfSA9PVxcbmA7XG5cdFx0XHRcdHJlYXNvbiArPSBgKiAnJyd7e3ZhbmRhbHwkey9bPV0vLnRlc3QodWlkKSA/ICcxPScgOiAnJ30ke3VpZH1gO1xuXHRcdFx0XHRpZiAoaW5wdXQuaGlkZW5hbWUpIHtcblx0XHRcdFx0XHRyZWFzb24gKz0gJ3xoaWRlbmFtZT0xJztcblx0XHRcdFx0fVxuXHRcdFx0XHRyZWFzb24gKz0gXCJ9fScnJ1xcblwiO1xuXHRcdFx0XHRjb25zdCB0eXBlcyA9IGlucHV0LmFydnR5cGVcblx0XHRcdFx0XHQubWFwKCh2KSA9PiB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHYpIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSAnZmluYWwnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5bey5Y+R5Ye65pyA5ZCO6K2m5ZGKJztcblx0XHRcdFx0XHRcdFx0Y2FzZSAncG9zdGJsb2NrJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+Wwgeemgei/h+acn+WQjumaj+WNs+egtOWdjyc7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3NwYW1ib3QnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5pi+6ICM5piT6KeB55qEc3BhbWJvdOaIluWkseeqg+i0puWPtyc7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3ZhbmRhbG9ubHknOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5pi+6ICM5piT6KeB55qE57qv56C05Z2P55So5oi3Jztcblx0XHRcdFx0XHRcdFx0Y2FzZSAncHJvbW9vbmx5Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+S7heeUqOadpeaVo+WPkeW5v+WRiuWuo+S8oOeahOeUqOaItyc7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICfmnKrnn6XnkIbnlLEnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oJ++8jCcpO1xuXHRcdFx0XHRpZiAoaW5wdXQucGFnZSAhPT0gJycpIHtcblx0XHRcdFx0XHRwYWdlID0gY2hlY2tUaXRsZShpbnB1dC5wYWdlLCB0cnVlKTtcblx0XHRcdFx0XHRpZiAoIXBhZ2UpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29tbWVudCArPSBgKiB7e3BhZ2VsaW5rc3wke1xuXHRcdFx0XHRcdFx0cGFnZS5nZXRQcmVmaXhlZFRleHQoKS5pbmNsdWRlcygnPScpID8gJzE9JyA6ICcnXG5cdFx0XHRcdFx0fSR7cGFnZS5nZXRQcmVmaXhlZFRleHQoKX19fWA7XG5cdFx0XHRcdFx0aWYgKGlucHV0LmJhZGlkKSB7XG5cdFx0XHRcdFx0XHRjb21tZW50ICs9IGDvvIh7e2RpZmZ8JHtwYWdlLmdldFByZWZpeGVkVGV4dCgpfXwke2lucHV0LmJhZGlkfXwke2lucHV0Lmdvb2RpZCA/PyAnJ318ZGlmZn1977yJYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29tbWVudCArPSAnXFxuJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZXMpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9IGAqICR7dHlwZXN9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdGlucHV0LnJlYXNvbiA9IGlucHV0LnJlYXNvbi5yZXBsYWNlKC9cXG5cXG4rL2csICdcXG4nKTtcblx0XHRcdFx0XHRpbnB1dC5yZWFzb24gPSBpbnB1dC5yZWFzb24ucmVwbGFjZSgvXFxyP1xcbi9nLCAnXFxuKjonKTsgLy8gaW5kZW50IG5ld2xpbmVzXG5cdFx0XHRcdFx0Y29tbWVudCArPSAodHlwZXMgPyAn44CCJyA6ICcqICcpICsgaW5wdXQucmVhc29uO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgPSBjb21tZW50LnRyaW0oKTtcblx0XHRcdFx0Y29tbWVudCA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihjb21tZW50KTtcblx0XHRcdFx0cmVhc29uICs9IGAke2NvbW1lbnR9XFxuKiDlj5HnjrDkurrvvJp+fmAuY29uY2F0KCd+flxcbiog5aSE55CG77yaJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gW3JlYXNvbiwgY29tbWVudF07XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBmb3JtID0gZS50YXJnZXQ7XG5cdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdGNvbnN0IHt1aWR9ID0gaW5wdXQ7XG5cdFx0bGV0IHJlYXNvbjtcblx0XHRsZXQgc3VtbWFyeTtcblx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHQvLyBSZXBvcnQgM1JSXG5cdFx0XHRjYXNlICdld2lwJzoge1xuXHRcdFx0XHRyZWFzb24gPSBUd2lua2xlLmFydi5jYWxsYmFjay5nZXRSZXBvcnRXaWtpdGV4dChmb3JtKTtcblx0XHRcdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnkgPSBgJHt3aW5kb3cud2dVTFMoJ+aKpeWRiicsICfloLHlkYonKX1bW1NwZWNpYWw6Q29udHJpYnMvJHt1aWR9fCR7dWlkfV1dYDtcblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gJ0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBld2lwUGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0J0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvycsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflpITnkIZFV0lQ6K+35rGCJywgJ+iZleeQhkVXSVDoq4vmsYInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRld2lwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0ZXdpcFBhZ2UubG9hZCgoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdGV4dCA9IGV3aXBQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3QgJGV3aXBMaW5rID0gJzxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL0xJQjpFV0lQXCI+TElCOkVXSVA8L2E+Jztcblx0XHRcdFx0XHQvLyBjaGVjayBpZiB1c2VyIGhhcyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWRcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRgPT09XFxcXHMqXFxcXHtcXFxce1xcXFxzKig/OltWdl1hbmRhbClcXFxccypcXFxcfFxcXFxzKig/OjE9KT9cXFxccyoke01vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0dWlkXG5cdFx0XHRcdFx0XHRcdCl9XFxcXHMqXFxcXH1cXFxcfVxcXFxzKj09PWBcblx0XHRcdFx0XHRcdCkudGVzdCh0ZXh0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0ZXdpcFBhZ2Vcblx0XHRcdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdFx0XHQuZXJyb3Iod2luZG93LndnVUxTKCfmiqXlkYrlt7LlrZjlnKjvvIzlsIbkuI3kvJrliqDlhaXmlrDnmoQnLCAn5aCx5ZGK5bey5a2Y5Zyo77yM5bCH5LiN5pyD5Yqg5YWl5paw55qEJykpO1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnByaW50VXNlclRleHQoXG5cdFx0XHRcdFx0XHRcdHJlYXNvblsxXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovpPlhaXnmoTor4Torrrlt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIblhbbliqDlhaXliLAnLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovLjlhaXnmoToqZXoq5blt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIflhbbliqDlhaXliLAnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdCRld2lwTGluayArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflt7LlrZjlnKjnmoTlsI/oioLkuK3vvJonLCAn5bey5a2Y5Zyo55qE5bCP56+A5Lit77yaJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGV3aXBQYWdlLnNldFBhZ2VTZWN0aW9uKDApO1xuXHRcdFx0XHRcdGV3aXBQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5zdGF0dXMod2luZG93LndnVUxTKCfliqDlhaXmlrDmiqXlkYrigKYnLCAn5Yqg5YWl5paw5aCx5ZGK4oCmJykpO1xuXHRcdFx0XHRcdGV3aXBQYWdlLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkpO1xuXHRcdFx0XHRcdGV3aXBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRld2lwUGFnZS5zZXRBcHBlbmRUZXh0KGBcXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHRld2lwUGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gUmVwb3J0IGluYXBwcm9wcmlhdGUgdXNlcm5hbWVcblx0XHRcdGNhc2UgJ3VzZXJuYW1lJzoge1xuXHRcdFx0XHRyZWFzb24gPSBUd2lua2xlLmFydi5jYWxsYmFjay5nZXRSZXBvcnRXaWtpdGV4dChmb3JtKTtcblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gJ0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCB1YWFQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnTElCX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jyxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WkhOeQhlVBQeivt+axgicsICfomZXnkIZVQUHoq4vmsYInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1YWFQYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHR1YWFQYWdlLmxvYWQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRleHQgPSB1YWFQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdXNlciBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0YFxcXFx7XFxcXHtcXFxccyp1c2VyLXVhYVxcXFxzKlxcXFx8XFxcXHMqKDFcXFxccyo9XFxcXHMqKT8ke01vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0dWlkXG5cdFx0XHRcdFx0XHRcdCl9XFxcXHMqKFxcXFx8fFxcXFx9KWBcblx0XHRcdFx0XHRcdCkudGVzdCh0ZXh0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0dWFhUGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflt7LooqvliJflhaXjgIInLCAn5L2/55So6ICF5bey6KKr5YiX5YWl44CCJykpO1xuXHRcdFx0XHRcdFx0Y29uc3QgJHVhYUxpbmsgPSAnPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvTElCOlVBQVwiPkxJQjpVQUE8L2E+Jztcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0KFxuXHRcdFx0XHRcdFx0XHRyZWFzb25bMV0sXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo6L6T5YWl55qE6K+E6K665bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCG5YW25omL5bel5Yqg5YWlJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo6Ly45YWl55qE6KmV6KuW5bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCH5YW25omL5bel5Yqg5YWlJ1xuXHRcdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdFx0XHQkdWFhTGluayArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuIror6XnlKjmiLfnmoTmiqXlkYrkuK3vvJonLCAn5LiK6Kmy5L2/55So6ICF55qE5aCx5ZGK5Lit77yaJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHVhYVBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaKpeWRiuKApicsICfliqDlhaXmlrDloLHlkYrigKYnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+aWsOaPkOaKpScsICfmlrDmj5DloLEnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRBcHBlbmRUZXh0KGBcXG5cXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHR1YWFQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBMSUI6U1BJXG5cdFx0XHRjYXNlICdzcGknOiB7XG5cdFx0XHRcdHJlYXNvbiA9IFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0Y29uc3QgcmVwb3J0cGFnZSA9ICdMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHJlcG9ydHBhZ2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBzcGlQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShyZXBvcnRwYWdlLCB3aW5kb3cud2dVTFMoJ+aKk+WPluiuqOiuuumhtemdoicsICfmipPlj5boqI7oq5bpoIHpnaInKSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfliqDlhaXmlrDmj5DmiqUnLCAn5Yqg5YWl5paw5o+Q5aCxJykpO1xuXHRcdFx0XHRzcGlQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRBcHBlbmRUZXh0KHJlYXNvblswXSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignc3BpV2F0Y2hSZXBvcnQnKSk7XG5cdFx0XHRcdHNwaVBhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXBvcnQgdXNlciBmb3IgdmFuZGFsaXNtXG5cdFx0XHQvKiBjYXNlICdhaXYnOiAqL1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRyZWFzb24gPSBUd2lua2xlLmFydi5jYWxsYmFjay5nZXRSZXBvcnRXaWtpdGV4dChmb3JtKTtcblx0XHRcdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnkgPSBgJHt3aW5kb3cud2dVTFMoJ+aKpeWRiicsICfloLHlkYonKX1bW1NwZWNpYWw6Q29udHJpYnMvJHt1aWR9fCR7dWlkfV1dYDtcblx0XHRcdFx0aWYgKGlucHV0LmhpZGVuYW1lKSB7XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5LiA5ZCN55So5oi3JywgJ+WgseWRiuS4gOWQjeS9v+eUqOiAhScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9ICdMSUJfdGFsazrmiqXlkYrlvZPliY3noLTlnY8nO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+aKpeWRiuWujOaIkCcsICfloLHlkYrlrozmiJAnKTtcblx0XHRcdFx0Y29uc3QgYWl2UGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0J0xJQl90YWxrOuaKpeWRiuW9k+WJjeegtOWdjycsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflpITnkIZWSVDor7fmsYInLCAn6JmV55CGVklQ6KuL5rGCJylcblx0XHRcdFx0KTtcblx0XHRcdFx0YWl2UGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0YWl2UGFnZS5sb2FkKCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0ZXh0ID0gYWl2UGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRcdGNvbnN0ICRhaXZMaW5rID0gJzxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL0xJQjpWSVBcIj5MSUI6VklQPC9hPic7XG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdXNlciBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0YD09PVxcXFxzKlxcXFx7XFxcXHtcXFxccyooPzpbVnZdYW5kYWwpXFxcXHMqXFxcXHxcXFxccyooPzoxPSk/XFxcXHMqJHtNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRcdHVpZFxuXHRcdFx0XHRcdFx0XHQpfVxcXFxzKlxcXFx9XFxcXH1cXFxccyo9PT1gXG5cdFx0XHRcdFx0XHQpLnRlc3QodGV4dClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGFpdlBhZ2Vcblx0XHRcdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdFx0XHQuZXJyb3Iod2luZG93LndnVUxTKCfmiqXlkYrlt7LlrZjlnKjvvIzlsIbkuI3kvJrliqDlhaXmlrDnmoQnLCAn5aCx5ZGK5bey5a2Y5Zyo77yM5bCH5LiN5pyD5Yqg5YWl5paw55qEJykpO1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnByaW50VXNlclRleHQoXG5cdFx0XHRcdFx0XHRcdHJlYXNvblsxXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovpPlhaXnmoTor4Torrrlt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIblhbbliqDlhaXliLAnLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovLjlhaXnmoToqZXoq5blt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIflhbbliqDlhaXliLAnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdCRhaXZMaW5rICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suWtmOWcqOeahOWwj+iKguS4re+8micsICflt7LlrZjlnKjnmoTlsI/nr4DkuK3vvJonKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRQYWdlU2VjdGlvbigwKTtcblx0XHRcdFx0XHRhaXZQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5zdGF0dXMod2luZG93LndnVUxTKCfliqDlhaXmlrDmiqXlkYrigKYnLCAn5Yqg5YWl5paw5aCx5ZGK4oCmJykpO1xuXHRcdFx0XHRcdGFpdlBhZ2Uuc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRBcHBlbmRUZXh0KGBcXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHRhaXZQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmFydiwgJ2FydicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXdhcm4uanMgKi9cbihmdW5jdGlvbiB0d2lua2xld2FybigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZXdhcm4uanM6IFdhcm4gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIldhcm5cIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicyxcblx0ICogZXRjLiksIGFzIHdlbGwgYXMgdGhlIHJvbGxiYWNrIHN1Y2Nlc3MgcGFnZVxuXHQgKi9cblx0Y29uc3QgcmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRUd2lua2xlLndhcm4gPSAoKSA9PiB7XG5cdFx0aWYgKHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjayxcblx0XHRcdFx0J+itpuWRiicsXG5cdFx0XHRcdCd0dy13YXJuJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCforablkYrmiJbmj5DphpLnlKjmiLcnLCAn6K2m5ZGK5oiW5o+Q6YaS5L2/55So6ICFJylcblx0XHRcdCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignYXV0b01lbnVBZnRlclJvbGxiYWNrJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMyAmJlxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSAmJlxuXHRcdFx0XHQhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdub2F1dG93YXJuJylcblx0XHRcdCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2soKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gTW9kaWZ5IFVSTCBvZiB0YWxrIHBhZ2Ugb24gcm9sbGJhY2sgc3VjY2VzcyBwYWdlcywgbWFrZXMgdXNlIG9mIGFcblx0XHQvLyBjdXN0b20gbWVzc2FnZSBib3ggaW4gW1tNZWRpYVdpa2k6Um9sbGJhY2stc3VjY2Vzc11dXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICdyb2xsYmFjaycpIHtcblx0XHRcdGNvbnN0ICR2YW5kYWxUYWxrTGluayA9ICRib2R5LmZpbmQoJyNtdy1yb2xsYmFjay1zdWNjZXNzJykuZmluZCgnLm13LXVzZXJ0b29sbGlua3MgYScpLmZpcnN0KCk7XG5cdFx0XHRpZiAoJHZhbmRhbFRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKCR2YW5kYWxUYWxrTGluaywgTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHRcdFx0JHZhbmRhbFRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQWJ1c2VMb2cnICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0FidXNlRmlsdGVyVmFyaWFibGVzJykgIT09IG51bGxcblx0XHQpIHtcblx0XHRcdGNvbnN0IGFmVGFsa0xpbmsgPSAkYm9keS5maW5kKCcubXctdXNlcnRvb2xsaW5rcy10YWxrJykuZmlyc3QoKTtcblx0XHRcdGlmIChhZlRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKGFmVGFsa0xpbmssIG13LmNvbmZpZy5nZXQoJ3dnQWJ1c2VGaWx0ZXJWYXJpYWJsZXMnKS5wYWdlX3ByZWZpeGVkdGl0bGUpO1xuXHRcdFx0XHRhZlRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS53YXJuLm1ha2VWYW5kYWxUYWxrTGluayA9ICgkdmFuZGFsVGFsa0xpbmssIHBhZ2VuYW1lKSA9PiB7XG5cdFx0JHZhbmRhbFRhbGtMaW5rLndyYXBJbm5lcihcblx0XHRcdCQoJzxzcGFuPicpLmF0dHIoXG5cdFx0XHRcdCd0aXRsZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5aaC5p6c5ZCI6YCC77yM5oKo5Y+v5Lul55SoVHdpbmtsZeWcqOivpeeUqOaIt+iuqOiuuumhteS4iuWBmuWHuuitpuWRiuOAgicsXG5cdFx0XHRcdFx0J+WmguaenOWQiOmBqe+8jOaCqOWPr+S7peeUqFR3aW5rbGXlnKjoqbLkvb/nlKjogIXoqI7oq5bpoIHkuIrlgZrlh7rorablkYrjgIInXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHRcdGNvbnN0IGV4dHJhUGFyYW0gPSBgdmFuYXJ0aWNsZT0ke213LnV0aWwucmF3dXJsZW5jb2RlKHBhZ2VuYW1lKX1gO1xuXHRcdGNvbnN0IGhyZWYgPSAkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicpO1xuXHRcdGlmIChocmVmLmluY2x1ZGVzKCc/JykpIHtcblx0XHRcdCR2YW5kYWxUYWxrTGluay5hdHRyKCdocmVmJywgYCR7aHJlZn0mJHtleHRyYVBhcmFtfWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9PyR7ZXh0cmFQYXJhbX1gKTtcblx0XHR9XG5cdH07XG5cdC8vIFVzZWQgdG8gY2xvc2Ugd2luZG93IHdoZW4gc3dpdGNoaW5nIHRvIEFSViBpbiBhdXRvbGV2ZWxcblx0VHdpbmtsZS53YXJuLmRpYWxvZyA9IG51bGw7XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRyZWxldmFudFVzZXJOYW1lID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5bCG6KaB6K2m5ZGK6Ieq5bex77yB5oKo56Gu5a6a6KaB57un57ut5ZCX77yfJywgJ+aCqOWwh+imgeitpuWRiuiHquW3se+8geaCqOeiuuWumuimgee5vOe6jOWXju+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLndhcm4uZGlhbG9nID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQ0MCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLndhcm47XG5cdFx0ZGlhbG9nLnNldFRpdGxlKHdpbmRvdy53Z1VMUygn6K2m5ZGK44CB5o+Q6YaS55So5oi3JywgJ+itpuWRiuOAgeaPkOmGkuS9v+eUqOiAhScpKTtcblx0XHRkaWFsb2cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdGRpYWxvZy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6K2m5ZGK6K6+572uJywgJ+itpuWRiuioreWumicpLCAnSDpUVy9QUkVGI3dhcm4nKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjd2FybicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUud2Fybi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgbWFpbl9zZWxlY3QgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup6KaB5Y+R6YCB55qE6K2m5ZGK5oiW5o+Q6YaS57G75Z6LJywgJ+mBuOaTh+imgeWCs+mAgeeahOitpuWRiuaIluaPkOmGkumhnuWIpScpLFxuXHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfpppblhYjpgInmi6nkuIDnu4TvvIzlho3pgInmi6nlhbfkvZPnmoTorablkYrmqKHmnb/jgIInLCAn6aaW5YWI6YG45pOH5LiA57WE77yM5YaN6YG45pOH5YW36auU55qE6K2m5ZGK5qih5p2/44CCJyksXG5cdFx0fSk7XG5cdFx0Y29uc3QgbWFpbl9ncm91cCA9IG1haW5fc2VsZWN0LmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdtYWluX2dyb3VwJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3orr7nva7pu5jorqTpgInmi6nnmoTpgInpobknLFxuXHRcdFx0XHQn5oKo5Y+v5ZyoVHdpbmtsZeWBj+WlveioreWumuS4reioreWumumgkOioremBuOaTh+eahOmBuOmghSdcblx0XHRcdCksXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSxcblx0XHR9KTtcblx0XHRjb25zdCBkZWZhdWx0R3JvdXAgPSBOdW1iZXIucGFyc2VJbnQoVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0V2FybmluZ0dyb3VwJyksIDYpO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5Yqo6YCJ5oup5bGC57qnJywgJ+iHquWLlemBuOaTh+WxpOe0micpLFxuXHRcdFx0dmFsdWU6ICdhdXRvbGV2ZWwnLFxuXHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNyxcblx0XHR9KTtcblx0XHRtYWluX2dyb3VwLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiAnMe+8muaPkOmGkicsXG5cdFx0XHR2YWx1ZTogJ2xldmVsMScsXG5cdFx0XHRzZWxlY3RlZDogZGVmYXVsdEdyb3VwID09PSAxLFxuXHRcdH0pO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6ICcy77ya6K2m5ZGKJyxcblx0XHRcdHZhbHVlOiAnbGV2ZWwyJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDIsXG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY29tYmluZWRTaW5nbGV0TWVudXMnKSkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5raI5oGvJywgJ+WWruWxpOe0muioiuaBrycpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZWNvbWJpbmVkJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gMyB8fCBkZWZhdWx0R3JvdXAgPT09IDQsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5o+Q6YaSJywgJ+WWruWxpOe0muaPkOmGkicpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZW5vdGljZScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDMsXG5cdFx0XHR9KTtcblx0XHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+itpuWRiicsICfllq7lsaTntJrorablkYonKSxcblx0XHRcdFx0dmFsdWU6ICdzaW5nbGV3YXJuJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNCxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLmxlbmd0aCkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6K2m5ZGKJywgJ+iHquioguitpuWRiicpLFxuXHRcdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDUsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogJ+aJgOacieitpuWRiuaooeadvycsXG5cdFx0XHR2YWx1ZTogJ2tpdGNoZW5zaW5rJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDYsXG5cdFx0fSk7XG5cdFx0bWFpbl9zZWxlY3QuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ3N1Yl9ncm91cCcsXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeSxcblx0XHR9KTsgLy8gV2lsbCBiZSBlbXB0eSB0byBiZWdpbiB3aXRoLlxuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLpk77mjqUnLCAn6aCB6Z2i6YCj57WQJyksXG5cdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJykgfHwgJycsXG5cdFx0XHRzaXplOiA1MCxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn57uZ5qih5p2/5Lit5Yqg5YWl5LiA6aG16Z2i6ZO+5o6l77yM5Y+v55WZ56m644CCJywgJ+e1puaooeadv+S4reWKoOWFpeS4gOmggemdoumAo+e1kO+8jOWPr+eVmeepuuOAgicpLFxuXHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+S7hemZkOS4gOS4qu+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJyxcblx0XHRcdFx0J+WDhemZkOS4gOWAi++8jOWLv+S9v+eUqOe2suWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJ1xuXHRcdFx0KSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0aWQ6ICd0d2lua2xlLXdhcm4td2FybmluZy1tZXNzYWdlcycsXG5cdFx0fSk7XG5cdFx0Y29uc3QgbW9yZSA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRuYW1lOiAncmVhc29uR3JvdXAnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K2m5ZGK5L+h5oGvJywgJ+itpuWRiuizh+ioiicpLFxuXHRcdH0pO1xuXHRcdG1vcmUuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6/pgInkv6Hmga/vvJonLCAn5Y+v6YG46LOH6KiK77yaJyksXG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55CG55Sx5oiW5piv6ZmE5Yqg5L+h5oGvJywgJ+eQhueUseaIluaYr+mZhOWKoOizh+ioiicpLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFja3MucHJldmlldyhyZXN1bHQpOyAvLyB8cmVzdWx0fCBpcyBkZWZpbmVkIGJlbG93XG5cdFx0fSk7XG5cblx0XHRwcmV2aWV3bGluay5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cdFx0cHJldmlld2xpbmsudGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+mihOiniCcsICfpoJDopr0nKTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnd2FybmluZ3ByZXZpZXcnLFxuXHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0fSk7XG5cdFx0bW9yZS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3R3aW5rbGV3YXJuLXByZXZpZXdib3gnLFxuXHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHR9KTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdGRpYWxvZy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0ZGlhbG9nLmRpc3BsYXkoKTtcblx0XHRyZXN1bHQubWFpbl9ncm91cC5yb290ID0gcmVzdWx0O1xuXHRcdHJlc3VsdC5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQocmVzdWx0KS5maW5kKCdkaXYjdHdpbmtsZXdhcm4tcHJldmlld2JveCcpLmxhc3QoKVswXSk7XG5cdFx0Ly8gUG90ZW50aWFsIG5vdGljZXMgZm9yIHN0YWxlbmVzcyBhbmQgbWlzc2VkIHJldmVydHNcblx0XHRsZXQgbWVzc2FnZSA9ICcnO1xuXHRcdGxldCBxdWVyeSA9IHt9O1xuXHRcdGNvbnN0IHZhbnJldmlkID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlcmV2aWQnKTtcblx0XHRpZiAodmFucmV2aWQpIHtcblx0XHRcdC8vIElmIHlvdSB0cmllZCByZXZlcnRpbmcsIGNoZWNrIGlmICp5b3UqIGFjdHVhbGx5IHJldmVydGVkXG5cdFx0XHRpZiAoIW13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgnbm9hdXRvd2FybicpICYmIG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpKSB7XG5cdFx0XHRcdC8vIFZpYSBmbHVmZiBsaW5rXG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHR0aXRsZXM6IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2c3RhcnRpZDogdmFucmV2aWQsXG5cdFx0XHRcdFx0cnZsaW1pdDogMixcblx0XHRcdFx0XHRydmRpcjogJ25ld2VyJyxcblx0XHRcdFx0XHRydnByb3A6ICd1c2VyJyxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5qOA5p+l5oKo5piv5ZCm5oiQ5Yqf5Zue6YCA6K+l6aG16Z2iJywgJ+aqouafpeaCqOaYr+WQpuaIkOWKn+WbnumAgOipsumggemdoicpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHJldmVydFVzZXIgPSAkKGFwaW9iai5nZXRSZXNwb25zZSgpKS5maW5kKCdyZXZpc2lvbnMgcmV2JylbMV0uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRcdFx0XHRpZiAocmV2ZXJ0VXNlciAmJiByZXZlcnRVc2VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpIHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huivpemhtemdou+8jOW5tuWPr+iDveW3sue7j+itpuWRiuivpeeUqOaIt+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huipsumggemdou+8jOS4puWPr+iDveW3sue2k+itpuWRiuipsuS9v+eUqOiAheOAgidcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBDb25maXJtIGVkaXQgd2Fzbid0IHRvbyBvbGQgZm9yIGEgd2FybmluZ1xuXHRcdFx0Y29uc3QgY2hlY2tTdGFsZSA9ICh2YW50aW1lc3RhbXBfKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJldkRhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZSh2YW50aW1lc3RhbXBfKTtcblx0XHRcdFx0aWYgKHZhbnRpbWVzdGFtcF8gJiYgcmV2RGF0ZS5pc1ZhbGlkKCkgJiYgcmV2RGF0ZS5hZGQoMjQsICdob3VycycpLmlzQmVmb3JlKG5ldyBEYXRlKCkpKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L+Z56yU57yW6L6R5piv5ZyoMjTlsI/ml7bliY3lgZrlh7rnmoTvvIznjrDlnKjorablkYrlj6/og73lt7Lov4fml7bjgIInLFxuXHRcdFx0XHRcdFx0J+mAmeethue3qOi8r+aYr+WcqDI05bCP5pmC5YmN5YGa5Ye655qE77yM54++5Zyo6K2m5ZGK5Y+v6IO95bey6YGO5pmC44CCJ1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0bGV0IHZhbnRpbWVzdGFtcCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFudGltZXN0YW1wJyk7XG5cdFx0XHQvLyBQcm92aWRlZCBmcm9tIGEgZmx1ZmYgbW9kdWxlLWJhc2VkIHJldmVydCwgbm8gQVBJIGxvb2t1cCBuZWNlc3Nhcnlcblx0XHRcdGlmICh2YW50aW1lc3RhbXApIHtcblx0XHRcdFx0Y2hlY2tTdGFsZSh2YW50aW1lc3RhbXApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2cHJvcDogJ3RpbWVzdGFtcCcsXG5cdFx0XHRcdFx0cmV2aWRzOiB2YW5yZXZpZCxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn6I635Y+W54mI5pys5pe26Ze05oizJywgJ+WPluW+l+eJiOacrOaZgumWk+aIsycpLCBxdWVyeSwgKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRcdHZhbnRpbWVzdGFtcCA9ICQoYXBpb2JqLmdldFJlc3BvbnNlKCkpLmZpbmQoJ3JldmlzaW9ucyByZXYnKS5hdHRyKCd0aW1lc3RhbXAnKTtcblx0XHRcdFx0XHRjaGVja1N0YWxlKHZhbnRpbWVzdGFtcCk7XG5cdFx0XHRcdH0pLnBvc3QoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgaW5pdCA9ICgpID0+IHtcblx0XHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgZmlyc3QgY2hvaWNlIChHZW5lcmFsIE5vdGUpO1xuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5tYWluX2dyb3VwLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHR9O1xuXHRcdGluaXQoKTtcblx0fTtcblx0Ly8gVGhpcyBpcyBhbGwgdGhlIG1lc3NhZ2VzIHRoYXQgbWlnaHQgYmUgZGlzcGF0Y2hlZCBieSB0aGUgY29kZVxuXHQvLyBFYWNoIG9mIHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcyByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246XG5cdC8vICAgbGFiZWwgKHJlcXVpcmVkKTogQSBzaG9ydCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gdGhlIGRpYWxvZ1xuXHQvLyAgIHN1bW1hcnkgKHJlcXVpcmVkKTogVGhlIGVkaXQgc3VtbWFyeSB1c2VkLiBJZiBhbiBhcnRpY2xlIG5hbWUgaXMgZW50ZXJlZCwgdGhlIHN1bW1hcnkgaXMgcG9zdGZpeGVkIHdpdGggXCJvbiBbW2FydGljbGVdXVwiLCBhbmQgaXQgaXMgYWx3YXlzIHBvc3RmaXhlZCB3aXRoIFwiLiAkc3VtbWFyeUFkXCJcblx0Ly8gICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnkgKG9wdGlvbmFsKTogU2V0IHRvIHRydWUgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnkuIFVzZWZ1bCBpZiB0aGUgd2FybmluZyByZWxhdGVzIHRvIGF0dGFjayBwYWdlcywgb3Igc29tZSBzdWNoLlxuXHRUd2lua2xlLndhcm4ubWVzc2FnZXMgPSB7XG5cdFx0bGV2ZWxzOiBbXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+S4jeWQjOexu+Wei+eahOmdnuW7uuiuvue8lui+kScsICfkuI3lkIzpoZ7liKXnmoTpnZ7lu7roqK3nt6jovK8nKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1jb3B5cmlnaHQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L6154qv6JGX5L2c5p2DJywgJ+S+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS+teeKr+iRl+S9nOadgycsICfms6jmhI/vvJrkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh5L6154qv6JGX5L2c5p2DJywgJ+WkmuasoeS+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWkmuasoeS+teeKr+iRl+S9nOadgycsICforablkYrvvJrlpJrmrKHkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctY3J5c3RhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJywgJ+azqOaEj++8muWKoOWFpeiHhua4rOaIluacqueiuuiqjeeahOioiuaBrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpJrmrKHliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1kZWxldGUnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctaW1hZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICfms6jmhI/vvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICforablkYrvvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctbmV3cGFnZSc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+azqOaEj++8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+itpuWRiu+8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1ub3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICfms6jmhI/vvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICforablkYrvvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctb3Bvdic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+azqOaEj++8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+itpuWRiu+8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1yZWRpcmVjdCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rnoLTlnY/mgKfnmoTph43lrprlkJEnLCAn5bu656uL56C05aOe5oCn55qE6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu656C05Z2P5oCn55qE6YeN5a6a5ZCRJywgJ+azqOaEj++8muW7uueri+egtOWjnuaAp+eahOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rmgbbmhI/ph43lrprlkJEnLCAn5bu656uL5oOh5oSP6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65oG25oSP6YeN5a6a5ZCRJywgJ+itpuWRiu+8muW7uueri+aDoeaEj+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy11cGxvYWQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4iuS8oOS4jeW9k+WbvuWDjycsICfms6jmhI/vvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4iuS8oOS4jeW9k+WbvuWDjycsICforablkYrvvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdmFuZGFsaXNtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmmI7mmL7noLTlnY8nLCAn5rOo5oSP77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrmmI7mmL7noLTlnY8nLCAn6K2m5ZGK77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LXRkZWwnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muenu+mZpOe7tOaKpOaAp+aooeadvycsICfms6jmhI/vvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muenu+mZpOe7tOaKpOaAp+aooeadvycsICforablkYrvvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+WinuWKoOW5v+WRiicsICflop7liqDlu6PlkYonKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1zcGFtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOS4jeWQiOmAgueahOWklumDqOmTvuaOpScsICflop7liqDkuI3lkIjpgannmoTlpJbpg6jpgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlop7liqDkuI3lkIjpgILnmoTlpJbpg6jpk77mjqUnLCAn5rOo5oSP77ya5aKe5Yqg5LiN5ZCI6YGp55qE5aSW6YOo6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOWeg+WcvumTvuaOpScsICflop7liqDlnoPlnL7pgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlop7liqDlnoPlnL7pk77mjqUnLCAn6K2m5ZGK77ya5aKe5Yqg5Z6D5Zy+6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LWFkdmVydCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmnInlhb3moaPmoYjppobmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5pyJ5YW95qGj5qGI6aaG5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmnInlhb3moaPmoYjppobmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5pyJ5YW95qGj5qGI6aaG5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5pyJ54245qqU5qGI6aSo5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn5Yqg5o+S5LiN5a6e44CB6K+96LCk5paH5a2XJywgJ+WKoOaPkuS4jeWvpuOAgeiqueisl+aWh+WtlycpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWJpb2cnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctZXJyb3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICfms6jmhI/vvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICforablkYrvvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdW5zb3VyY2VkJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCfnv7vor5Hlk4HotKgnLCAn57+76K2v5ZOB6LOqJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctcm91Z2h0cmFuc2xhdGlvbic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmgqjnv7vor5HnmoTotKjph4/mnInlvoXmlLnlloQnLCAn5oKo57+76K2v55qE6LOq6YeP5pyJ5b6F5pS55ZaEJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5oKo57+76K+R55qE6LSo6YeP5pyJ5b6F5pS55ZaEJywgJ+azqOaEj++8muaCqOe/u+itr+eahOizqumHj+acieW+heaUueWWhCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnspfliqPnv7vor5EnLCAn57KX5Yqj57+76K2vJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya57KX5Yqj57+76K+RJywgJ+itpuWRiu+8mueyl+WKo+e/u+itrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn6Z2e6IO95o6l5Y+X5LiU6L+d5Y+N5p2h5L6L55qE5Y2V5pa56Z2i6KGM5Li65oiW5pON5L2cJywgJ+mdnuiDveaOpeWPl+S4lOmBleWPjeaineS+i+eahOWWruaWuemdouihjOeCuuaIluaTjeS9nCcpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWFmZCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/JywgJ+enu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya56e76Zmke3thZmR9fe+8iOmggemdouWtmOW7ouiojuirlu+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsICfnp7vpmaR7e2FmZH1977yI6aCB6Z2i5a2Y5bui6KiO6KuW77yJ5qih5p2/JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muenu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LW1vcyc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1tb3ZlJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aXoOaVheenu+WKqOadoeebri/mlrDlkI3np7DkuI3nrKblkIjlkb3lkI3op4TojIMnLFxuXHRcdFx0XHRcdFx0XHRcdCfnhKHmlYXnp7vli5Xmop3nm64v5paw5ZCN56ix5LiN56ym5ZCI5ZG95ZCN6KaP56+EJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICfms6jmhI/vvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aG16Z2i56e75Yqo5Yiw5LiN5oGw5b2T44CB6L+d5Y+N5ZG95ZCN5bi46KeE5oiW6L+d5Y+N5YWx6K+G55qE5qCH6aKYJyxcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aCB6Z2i56e75YuV5Yiw5LiN5oGw55W244CB6YGV5Y+N5ZG95ZCN5bi46KaP5oiW6YGV5Y+N5YWx6K2Y55qE5qiZ6aGMJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICforablkYrvvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc3BlZWR5Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLCAn56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muenu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yiq6Zmk77yJ5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/JywgJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKrpmaTvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdGFsa3BhZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mui/neWPjeiuqOiuuumhteinhOiMgycsICfms6jmhI/vvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8mui/neWPjeiuqOiuuumhteinhOiMgycsICforablkYrvvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdHB2Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+azqOaEj++8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+itpuWRiu+8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCflr7nlhbbku5bnlKjmiLflkozmnaHnm67nmoTmgIHluqYnLCAn5bCN5YW25LuW55So5oi25ZKM5qKd55uu55qE5oWL5bqmJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctaWxsZWdhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXov53ms5Xov53op4TlhoXlrrknLCAn5Yqg5YWl6YGV5rOV6YGV6KaP5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6L+d5rOV6L+d6KeE5YaF5a65JywgJ+azqOaEj++8muWKoOWFpemBleazlemBleimj+WFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXov53ms5Xov53op4TlhoXlrrknLCAn5Yqg5YWl6YGV5rOV6YGV6KaP5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yqg5YWl6L+d5rOV6L+d6KeE5YaF5a65JywgJ+itpuWRiu+8muWKoOWFpemBleazlemBleimj+WFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1vd24nOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu5omA5pyJ5p2DJywgJ+S4u+W8teaineebruaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4u+W8oOadoeebruaJgOacieadgycsICfms6jmhI/vvJrkuLvlvLXmop3nm67miYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu55qE5omA5pyJ5p2DJywgJ+S4u+W8teaineebrueahOaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4u+W8oOadoeebrueahOaJgOacieadgycsICforablkYrvvJrkuLvlvLXmop3nm67nmoTmiYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc29jaWFsbWVkaWEnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5pyJ5YW95qGj5qGI6aaG5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwhuacieWFveaho+ahiOmmhuW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5pyJ5YW95qGj5qGI6aaG5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwhuacieWFveaho+ahiOmmhuW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwh+acieeNuOaqlOahiOmkqOeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XSxcblx0XHRzaW5nbGVub3RpY2U6IHtcblx0XHRcdCd1dy0ycmVkaXJlY3QnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOenu+WKqOmhtemdouWQjuW6lOivpeS/ruWkjeWPjOmHjemHjeWumuWQkScsICflnKjnp7vli5XpoIHpnaLlvozmh4noqbLkv67lvqnpm5nph43ph43lrprlkJEnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlnKjnp7vliqjpobXpnaLlkI7lupTor6Xkv67lpI3lj4zph43ph43lrprlkJEnLCAn5rOo5oSP77ya5Zyo56e75YuV6aCB6Z2i5b6M5oeJ6Kmy5L+u5b6p6ZuZ6YeN6YeN5a6a5ZCRJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWFpdic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li+5oql5LqL6aG55bm25LiN5piv56C05Z2P6KGM5Li6JywgJ+iIieWgseS6i+mgheS4puS4jeaYr+egtOWjnuihjOS4uicpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOS4vuaKpeegtOWdjycsICfms6jmhI/vvJrkuI3mgbDnlbblnLDoiInloLHnoLTlo54nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXJ0aWNsZXNpZyc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit562+5ZCNJywgJ+WcqOaineebruS4reewveWQjScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reetvuWQjScsICfms6jmhI/vvJrlnKjmop3nm67kuK3nsL3lkI0nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXV0b2Jpb2dyYXBoeSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu66Ieq5LygJywgJ+W7uueri+iHquWCsycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIm+W7uuiHquS8oCcsICfms6jmhI/vvJrlu7rnq4voh6rlgrMnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYmFkY2F0Jzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXplJnor6/nmoTpobXpnaLliIbnsbsnLCAn5Yqg5YWl6Yyv6Kqk55qE6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6ZSZ6K+v55qE6aG16Z2i5YiG57G7JywgJ+azqOaEj++8muWKoOWFpemMr+iqpOeahOmggemdouWIhumhnicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1iaXRlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvKTlrrPmlrDmiYsnLCAn5YK35a6z5paw5omLJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Lyk5a6z5paw5omLJywgJ+azqOaEj++8muWCt+Wus+aWsOaJiycpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jaGluZXNlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fkvb/nlKjmoIflh4bmsYnor63msp/pgJonLCAn6KuL5L2/55So5qiZ5rqW5ryi6Kqe5rqd6YCaJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6K+35L2/55So5qCH5YeG5rGJ6K+t5rKf6YCaJywgJ+azqOaEj++8muiri+S9v+eUqOaomea6lua8ouiqnua6nemAmicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jcG1vdmUnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJqui0tOenu+WKqCcsICfliarosrznp7vli5UnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrliarotLTnp7vliqgnLCAn5rOo5oSP77ya5Ymq6LK856e75YuVJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWRhYic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5raI5q2n5LmJ6aG15qC85byP6ZSZ6K+vJywgJ+a2iOatp+e+qemggeagvOW8j+mMr+iqpCcpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mua2iOatp+S5iemhteagvOW8j+mUmeivrycsICfms6jmhI/vvJrmtojmrafnvqnpoIHmoLzlvI/pjK/oqqQnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctbmV3cGFnZS1kcmFmdCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyA6L+R5Yib5bu655qE6aG16Z2i6KKr56e75Yqo5Yiw6I2J56i/JywgJ+acgOi/keW7uueri+eahOmggemdouiiq+enu+WLleWIsOiNieeovycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muacgOi/keWIm+W7uueahOmhtemdouiiq+enu+WKqOWIsOiNieeovycsICfms6jmhI/vvJrmnIDov5Hlu7rnq4vnmoTpoIHpnaLooqvnp7vli5XliLDojYnnqL8nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc2VsZnJldmVydCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oSf6LCi5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5rWL6K+V77yM5Lul5ZCO5LiN6KaB5YaN6L+Z5qC35YGa5LqGJyxcblx0XHRcdFx0XHQn5oSf6Kyd5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5ris6Kmm77yM5Lul5b6M5LiN6KaB5YaN6YCZ5qij5YGa5LqGJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWbnumAgOS4quS6uueahOa1i+ivlScsICfms6jmhI/vvJrlm57pgIDlgIvkurrnmoTmuKzoqaYnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc3Vic3R1Yic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu65bCP5bCP5L2c5ZOBJywgJ+W7uueri+Wwj+Wwj+S9nOWTgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWIm+W7uuWwj+Wwj+S9nOWTgScsICforablkYrvvJrlu7rnq4vlsI/lsI/kvZzlk4EnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdGFsa2luYXJ0aWNsZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu6aG15Lit55WZ5LiL5oSP6KeBJywgJ+WcqOaineebrumggeS4reeVmeS4i+aEj+imiycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebrumhteS4reeVmeS4i+aEj+ingScsICfms6jmhI/vvJrlnKjmop3nm67poIHkuK3nlZnkuIvmhI/oposnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdW5zaWduZWQnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ayoeacieWcqOiuqOiuuumhteS4iuetvuWQjScsICfmspLmnInlnKjoqI7oq5bpoIHkuIrnsL3lkI0nKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmsqHmnInlnKjorqjorrrpobXkuIrnrb7lkI0nLCAn5rOo5oSP77ya5rKS5pyJ5Zyo6KiO6KuW6aCB5LiK57C95ZCNJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LXdyb25nY3NkJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTnkIbnlLHkuI3lvZMnLCAn5b+r6YCf5Yiq6Zmk55CG55Sx5LiN55W2JyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5b+r6YCf5Yig6Zmk55CG55Sx5LiN5b2TJywgJ+azqOaEj++8muW/q+mAn+WIqumZpOeQhueUseS4jeeVticpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy13cm9uZ3N1bW1hcnknOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOe8lui+keaRmOimgeWItumAoOS4jemAguW9k+eahOWGheWuuScsICflnKjnt6jovK/mkZjopoHoo73pgKDkuI3pgannlbbnmoTlhaflrrknKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlnKjnvJbovpHmkZjopoHliLbpgKDkuI3pgILlvZPnmoTlhoXlrrknLCAn6K2m5ZGK77ya5Zyo57eo6Lyv5pGY6KaB6KO96YCg5LiN6YGp55W255qE5YWn5a65JyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0c2luZ2xld2Fybjoge1xuXHRcdFx0J3V3LTNycic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35r2c5Zyo6L+d5Y+N5Zue6YCA5LiN6L+H5LiJ5Y6f5YiZ55qE5Y+v6IO95oCnJywgJ+eUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaIt+a9nOWcqOi/neWPjeWbnumAgOS4jei/h+S4ieWOn+WImeeahOWPr+iDveaApycsXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApydcblx0XHRcdFx0KSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXR0YWNrJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkurrouqvmlLvlh7snLCAn5Lq66Lqr5pS75pOKJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Lq66Lqr5pS75Ye7JywgJ+itpuWRiu+8muS6uui6q+aUu+aTiicpLFxuXHRcdFx0XHRzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IHRydWUsXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWNvaSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yip55uK5Yay56qBJywgJ+WIqeebiuihneeqgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIqeebiuWGsueqgScsICfms6jmhI/vvJrliKnnm4rooZ3nqoEnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctZmFrZXNvdXJjZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Jma5p6E5pWw5o2u5rqQ5oiW5byV5paHJywgJ+iZm+ani+izh+aWmeS+hua6kOaIluW8leaWhycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muiZmuaehOaVsOaNrua6kOaIluW8leaWhycsICforablkYrvvJromZvmp4vos4fmlpnkvobmupDmiJblvJXmlocnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctcGluZm8nOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W8oOi0tOS7luS6uumakOengScsICflvLXosrzku5bkurrpmrHnp4EnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlvKDotLTku5bkurrpmpDnp4EnLCAn6K2m5ZGK77ya5by16LK85LuW5Lq66Zqx56eBJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWlsbGVnYWxhdmF0YXInOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WktOWDj+i/neinhCcsICfpoK3lg4/pgZXopo8nKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfmgqjov5HmnJ/kuIrkvKDnmoTlpLTlg4/ov53op4QnLCAn5oKo6L+R5pyf5LiK5YKz55qE6aCt5YOP6YGV6KaPJyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdH07XG5cdC8vIFVzZWQgcmVwZWF0ZWRseSBiZWxvdyBhY3Jvc3MgbWVudSByZWJ1aWxkc1xuXHRUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnByZXZfcmVhc29uID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSA9IGZ1bmN0aW9uIGNoYW5nZV9jYXRlZ29yeShlKSB7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHtzdWJfZ3JvdXB9ID0gZS50YXJnZXQucm9vdDtcblx0XHRzdWJfZ3JvdXAubWFpbl9ncm91cCA9IHZhbHVlO1xuXHRcdGxldCBvbGRfc3VidmFsdWUgPSBzdWJfZ3JvdXAudmFsdWU7XG5cdFx0bGV0IG9sZF9zdWJ2YWx1ZV9yZTtcblx0XHRpZiAob2xkX3N1YnZhbHVlKSB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICdraXRjaGVuc2luaycpIHtcblx0XHRcdFx0Ly8gRXhhY3QgbWF0Y2ggcG9zc2libGUgaW4ga2l0Y2hlbnNpbmsgbWVudVxuXHRcdFx0XHRvbGRfc3VidmFsdWVfcmUgPSBuZXcgUmVnRXhwKG13LnV0aWwuZXNjYXBlUmVnRXhwKG9sZF9zdWJ2YWx1ZSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b2xkX3N1YnZhbHVlID0gb2xkX3N1YnZhbHVlLnJlcGxhY2UoL1xcZCooaW0pPyQvLCAnJyk7XG5cdFx0XHRcdG9sZF9zdWJ2YWx1ZV9yZSA9IG5ldyBSZWdFeHAoYCR7bXcudXRpbC5lc2NhcGVSZWdFeHAob2xkX3N1YnZhbHVlKX0oXFxcXGQqPykkYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlIChzdWJfZ3JvdXAuaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRzdWJfZ3JvdXAucmVtb3ZlQ2hpbGQoc3ViX2dyb3VwLmZpcnN0Q2hpbGQpO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyB3b3JrZXIgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBjb21ibyBib3ggZW50cmllc1xuXHRcdGNvbnN0IGNyZWF0ZUVudHJpZXMgPSAoY29udGVudHMsIGNvbnRhaW5lciwgd3JhcEluT3B0Z3JvdXAsIHZhbCA9IHZhbHVlKSA9PiB7XG5cdFx0XHQvLyBsZXZlbDItPjIsIHNpbmdsZXdhcm4tPicnOyBhbHNvIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlXG5cdFx0XHQvLyBzY2FsZWQgbGV2ZWxzIGZyb20gc2luZ2xlbm90aWNlLCBzaW5nbGV3YXJuLCBhbmQgY3VzdG9tXG5cdFx0XHRjb25zdCBsZXZlbCA9IHZhbC5yZXBsYWNlKC9eXFxEKy9nLCAnJyk7XG5cdFx0XHQvLyBkdWUgdG8gYW4gYXBwYXJlbnQgaU9TIGJ1Zywgd2UgaGF2ZSB0byBhZGQgYW4gb3B0aW9uLWdyb3VwIHRvIHByZXZlbnQgdHJ1bmNhdGlvbiBvZiB0ZXh0XG5cdFx0XHQvLyAoc2VhcmNoIFdUOlRXIGFyY2hpdmVzIGZvciBcIlByb2JsZW0gc2VsZWN0aW5nIHdhcm5pbmdzIG9uIGFuIGlQaG9uZVwiKVxuXHRcdFx0aWYgKHdyYXBJbk9wdGdyb3VwICYmICQuY2xpZW50LnByb2ZpbGUoKS5wbGF0Zm9ybSA9PT0gJ2lwaG9uZScpIHtcblx0XHRcdFx0bGV0IHdyYXBwZXJPcHRncm91cCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRsYWJlbDogJ+WPr+eUqOaooeadvycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3cmFwcGVyT3B0Z3JvdXAgPSB3cmFwcGVyT3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyT3B0Z3JvdXApO1xuXHRcdFx0XHRjb250YWluZXIgPSB3cmFwcGVyT3B0Z3JvdXA7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IFtpdGVtS2V5LCBpdGVtUHJvcGVydGllc10gb2YgT2JqZWN0LmVudHJpZXMoY29udGVudHMpKSB7XG5cdFx0XHRcdC8vIFNraXAgaWYgdGhlIGN1cnJlbnQgdGVtcGxhdGUgZG9lc24ndCBoYXZlIGEgdmVyc2lvbiBmb3IgdGhlIGN1cnJlbnQgbGV2ZWxcblx0XHRcdFx0aWYgKCEhbGV2ZWwgJiYgIWl0ZW1Qcm9wZXJ0aWVzW3ZhbF0pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qga2V5ID0gdHlwZW9mIGl0ZW1LZXkgPT09ICdzdHJpbmcnID8gaXRlbUtleSA6IGl0ZW1Qcm9wZXJ0aWVzLnZhbHVlO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZSA9IGtleSArIGxldmVsO1xuXHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogYHt7JHt0ZW1wbGF0ZX19fTogJHtsZXZlbCA/IGl0ZW1Qcm9wZXJ0aWVzW3ZhbF0ubGFiZWwgOiBpdGVtUHJvcGVydGllcy5sYWJlbH1gLFxuXHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vIFNlbGVjdCBpdGVtIGJlc3QgY29ycmVzcG9uZGluZyB0byBwcmV2aW91cyBzZWxlY3Rpb25cblx0XHRcdFx0aWYgKCFzZWxlY3RlZCAmJiBvbGRfc3VidmFsdWUgJiYgb2xkX3N1YnZhbHVlX3JlLnRlc3QodGVtcGxhdGUpKSB7XG5cdFx0XHRcdFx0ZWxlbS5kYXRhLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRzZWxlY3RlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZWxlbVJlbmRlcmVkID0gY29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW0ucmVuZGVyKCkpO1xuXHRcdFx0XHQkKGVsZW1SZW5kZXJlZCkuZGF0YSgnbWVzc2FnZURhdGEnLCBpdGVtUHJvcGVydGllcyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRzd2l0Y2ggKHZhbHVlKSB7XG5cdFx0XHRjYXNlICdzaW5nbGVub3RpY2UnOlxuXHRcdFx0Y2FzZSAnc2luZ2xld2Fybic6XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzW3ZhbHVlXSwgc3ViX2dyb3VwLCB0cnVlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzaW5nbGVjb21iaW5lZCc6IHtcblx0XHRcdFx0Y29uc3QgdW5Tb3J0ZWRTaW5nbGV0cyA9IHtcblx0XHRcdFx0XHQuLi5Ud2lua2xlLndhcm4ubWVzc2FnZXMuc2luZ2xlbm90aWNlLFxuXHRcdFx0XHRcdC4uLlR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGV3YXJuLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBzb3J0ZWRTaW5nbGV0TWVzc2FnZXMgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModW5Tb3J0ZWRTaW5nbGV0cykuc29ydCgpKSB7XG5cdFx0XHRcdFx0c29ydGVkU2luZ2xldE1lc3NhZ2VzW2tleV0gPSB1blNvcnRlZFNpbmdsZXRzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3JlYXRlRW50cmllcyhzb3J0ZWRTaW5nbGV0TWVzc2FnZXMsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnY3VzdG9tJzpcblx0XHRcdFx0Y3JlYXRlRW50cmllcyhUd2lua2xlLmdldFByZWYoJ2N1c3RvbVdhcm5pbmdMaXN0JyksIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAna2l0Y2hlbnNpbmsnOlxuXHRcdFx0XHRmb3IgKGNvbnN0IGx2bCBvZiBbJ2xldmVsMScsICdsZXZlbDInXSkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgc3ViX2dyb3VwLCB0cnVlLCBsdmwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjcmVhdGVFbnRyaWVzKFR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGVub3RpY2UsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzLnNpbmdsZXdhcm4sIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLCBzdWJfZ3JvdXAsIHRydWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2xldmVsMSc6XG5cdFx0XHRjYXNlICdsZXZlbDInOlxuXHRcdFx0XHQvLyBDcmVhdGVzIHN1Ymdyb3VwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVyZSBpcyBhbnl0aGluZyB0byBwbGFjZSBpbiBpdDtcblx0XHRcdFx0Ly8gbGVhdmVzIFwiUmVtb3ZhbCBvZiBkZWxldGlvbiB0YWdzXCIgZW1wdHkgZm9yIGxldmVsIDJcblx0XHRcdFx0Zm9yIChjb25zdCBsZXZlbEdyb3VwIG9mIFR3aW5rbGUud2Fybi5tZXNzYWdlcy5sZXZlbHMpIHtcblx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBsZXZlbEdyb3VwLmNhdGVnb3J5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG9wdGdyb3VwID0gb3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdFx0c3ViX2dyb3VwLmFwcGVuZENoaWxkKG9wdGdyb3VwKTtcblx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgb3B0Z3JvdXAsIGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F1dG9sZXZlbCc6IHtcblx0XHRcdFx0Ly8gQ2hlY2sgdXNlciBwYWdlIHRvIGRldGVybWluZSBhcHByb3ByaWF0ZSBsZXZlbFxuXHRcdFx0XHRjb25zdCBhdXRvbGV2ZWxQcm9jID0gKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHdpa2l0ZXh0ID0gVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gaGlzdG9yeSBub3QgbmVlZGVkIGZvciBhdXRvbGV2ZWxcblx0XHRcdFx0XHRjb25zdCBbbGF0ZXN0XSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3Npbmcod2lraXRleHQpO1xuXHRcdFx0XHRcdC8vIFBzZXVkby1wYXJhbXMgd2l0aCBvbmx5IHdoYXQncyBuZWVkZWQgdG8gcGFyc2UgdGhlIGxldmVsIGkuZS4gbm8gbWVzc2FnZURhdGFcblx0XHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRzdWJfZ3JvdXA6IG9sZF9zdWJ2YWx1ZSxcblx0XHRcdFx0XHRcdGFydGljbGU6IGUudGFyZ2V0LnJvb3QuYXJ0aWNsZS52YWx1ZSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGNvbnN0IGx2bCA9IGBsZXZlbCR7VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5hdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0KHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdClbMV19YDtcblx0XHRcdFx0XHQvLyBJZGVudGljYWwgdG8gbGV2ZWwxLCBldGMuIGFib3ZlIGJ1dCBleHBsaWNpdGx5IHByb3ZpZGVzIHRoZSBsZXZlbFxuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0Z3JvdXAnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogbGV2ZWxHcm91cC5jYXRlZ29yeSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5yZW5kZXIoKTtcblx0XHRcdFx0XHRcdHN1Yl9ncm91cC5hcHBlbmRDaGlsZChvcHRncm91cCk7XG5cdFx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRcdGNyZWF0ZUVudHJpZXMobGV2ZWxHcm91cC5saXN0LCBvcHRncm91cCwgZmFsc2UsIGx2bCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIFRyaWdnZXIgc3ViY2F0ZWdvcnkgY2hhbmdlLCBhZGQgc2VsZWN0IG1lbnUsIGV0Yy5cblx0XHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2sucG9zdENhdGVnb3J5Q2xlYW51cChlKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaikge1xuXHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCB1c2VydGFsa19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWAsXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4iuasoeitpuWRiicsICfovInlhaXkuIrmrKHorablkYonKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5sb2FkKFxuXHRcdFx0XHRcdFx0KHBhZ2VvYmopID0+IHtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqXG5cdFx0XHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIENhdGNoIGFuZCB3YXJuIGlmIHRoZSB0YWxrcGFnZSBjYW4ndCBsb2FkLFxuXHRcdFx0XHRcdFx0XHQvLyBtb3N0IGxpa2VseSBiZWNhdXNlIGl0J3MgYSBjcm9zcy1uYW1lc3BhY2UgcmVkaXJlY3Rcblx0XHRcdFx0XHRcdFx0Ly8gU3VwZXJzZWRlcyB0aGUgdHlwaWNhbCAkYXV0b2xldmVsTWVzc2FnZSBhZGRlZCBpbiBhdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0XG5cdFx0XHRcdFx0XHRcdGNvbnN0ICRub1RhbGtQYWdlTm9kZSA9ICQoJzxzdHJvbmc+Jylcblx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCAndHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJylcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdjb2xvcicsICcjZjAwJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+aXoOazleWKoOi9veeUqOaIt+iuqOiuuumhte+8jOi/meWPr+iDveaYr+WboOS4uuWug+aYr+i3qOWRveWQjeepuumXtOmHjeWumuWQke+8jOiHquWKqOmAieaLqeitpuWRiue6p+WIq+WwhuS4jeS8mui/kOS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCfnhKHms5XovInlhaXkvb/nlKjogIXoqI7oq5bpoIHvvIzpgJnlj6/og73mmK/lm6DngrrlroPmmK/ot6jlkb3lkI3nqbrplpPph43mlrDlsI7lkJHvvIzoh6rli5Xpgbjmk4forablkYrntJrliKXlsIfkuI3mnIPpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JG5vVGFsa1BhZ2VOb2RlLmluc2VydEJlZm9yZSgkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLXdhcm5pbmctbWVzc2FnZXMnKSk7XG5cdFx0XHRcdFx0XHRcdC8vIElmIGEgcHJldmlldyB3YXMgb3BlbmVkIHdoaWxlIGluIGEgZGlmZmVyZW50IG1vZGUsIGNsb3NlIGl0XG5cdFx0XHRcdFx0XHRcdC8vIFNob3VsZCBudWxsaWZ5IHRoZSBuZWVkIHRvIGNhdGNoIHRoZSBlcnJvciBpbiBwcmV2aWV3IGNhbGxiYWNrXG5cdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCd0d2lua2xld2Fybu+8muacquefpeeahOitpuWRiue7hCcsICd0d2lua2xld2Fybu+8muacquefpeeahOitpuWRiue1hCcpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGV3YXJuJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBUcmlnZ2VyIHN1YmNhdGVnb3J5IGNoYW5nZSwgYWRkIHNlbGVjdCBtZW51LCBldGMuXG5cdFx0Ly8gSGVyZSBiZWNhdXNlIG9mIHRoZSBhc3luYyBsb2FkIGZvciBhdXRvbGV2ZWxcblx0XHRpZiAodmFsdWUgIT09ICdhdXRvbGV2ZWwnKSB7XG5cdFx0XHQvLyByZXNldCBhbnkgYXV0b2xldmVsLXNwZWNpZmljIG1lc3NhZ2VzIHdoaWxlIHdlJ3JlIGhlcmVcblx0XHRcdCRib2R5LmZpbmQoJyN0d2lua2xlLXdhcm4tYXV0b2xldmVsLW1lc3NhZ2UnKS5yZW1vdmUoKTtcblx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjay5wb3N0Q2F0ZWdvcnlDbGVhbnVwKGUpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLnBvc3RDYXRlZ29yeUNsZWFudXAgPSAoZSkgPT4ge1xuXHRcdC8vIGNsZWFyIG92ZXJyaWRkZW4gbGFiZWwgb24gYXJ0aWNsZSB0ZXh0Ym94XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRUb29sdGlwVmlzaWJpbGl0eShlLnRhcmdldC5yb290LmFydGljbGUsIHRydWUpO1xuXHRcdE1vcmViaXRzLnF1aWNrRm9ybS5yZXNldEVsZW1lbnRMYWJlbChlLnRhcmdldC5yb290LmFydGljbGUpO1xuXHRcdC8vIFRyaWdnZXIgY3VzdG9tIGxhYmVsL2NoYW5nZSBvbiBtYWluIGNhdGVnb3J5IGNoYW5nZVxuXHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjay5jaGFuZ2Vfc3ViY2F0ZWdvcnkoZSk7XG5cdFx0Ly8gVXNlIHNlbGVjdDIgdG8gbWFrZSB0aGUgc2VsZWN0IG1lbnUgc2VhcmNoYWJsZVxuXHRcdGlmICghVHdpbmtsZS5nZXRQcmVmKCdvbGRTZWxlY3QnKSkge1xuXHRcdFx0JGJvZHlcblx0XHRcdFx0LmZpbmQoJ3NlbGVjdFtuYW1lPXN1Yl9ncm91cF0nKVxuXHRcdFx0XHQuc2VsZWN0Mih7XG5cdFx0XHRcdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRcdFx0XHRtYXRjaGVyOiBNb3JlYml0cy5zZWxlY3QyLm1hdGNoZXJzLm9wdGdyb3VwRnVsbCxcblx0XHRcdFx0XHR0ZW1wbGF0ZVJlc3VsdDogTW9yZWJpdHMuc2VsZWN0Mi5oaWdobGlnaHRTZWFyY2hNYXRjaGVzLFxuXHRcdFx0XHRcdGxhbmd1YWdlOiB7XG5cdFx0XHRcdFx0XHRzZWFyY2hpbmc6IE1vcmViaXRzLnNlbGVjdDIucXVlcnlJbnRlcmNlcHRvcixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2hhbmdlKFR3aW5rbGUud2Fybi5jYWxsYmFjay5jaGFuZ2Vfc3ViY2F0ZWdvcnkpO1xuXHRcdFx0JGJvZHkuZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uJykub24oJ2tleWRvd24nLCBNb3JlYml0cy5zZWxlY3QyLmF1dG9TdGFydCkudHJpZ2dlcignZm9jdXMnKTtcblx0XHRcdG13LnV0aWwuYWRkQ1NTKFxuXHRcdFx0XHQvKiBJbmNyZWFzZSBoZWlnaHQ7XG5cdFx0XHRcdCAqIFJlZHVjZSBwYWRkaW5nO1xuXHRcdFx0XHQgKiBBZGp1c3QgZm9udCBzaXplLlxuXHRcdFx0XHQgKiAqL1xuXHRcdFx0XHQnLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWRyb3Bkb3duIC5zZWxlY3QyLXJlc3VsdHM+LnNlbGVjdDItcmVzdWx0c19fb3B0aW9uc3ttYXgtaGVpZ2h0OjM1MHB4fS5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItcmVzdWx0c19fZ3JvdXAsLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb257cGFkZGluZy10b3A6MXB4O3BhZGRpbmctYm90dG9tOjFweH0uc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItZHJvcGRvd24gLnNlbGVjdDItcmVzdWx0cywuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdGlvbiAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVke2ZvbnQtc2l6ZToxM3B4fSdcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2suY2hhbmdlX3N1YmNhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCBtYWluX2dyb3VwID0gZS50YXJnZXQuZm9ybS5tYWluX2dyb3VwLnZhbHVlO1xuXHRcdGNvbnN0IHt2YWx1ZX0gPSBlLnRhcmdldC5mb3JtLnN1Yl9ncm91cDtcblx0XHQvLyBUYWdzIHRoYXQgZG9uJ3QgdGFrZSBhIGxpbmtlZCBhcnRpY2xlLCBidXQgc29tZXRoaW5nIGVsc2UgKG9mdGVuIGEgdXNlcm5hbWUpLlxuXHRcdC8vIFRoZSB2YWx1ZSBvZiBlYWNoIHRhZyBpcyB0aGUgbGFiZWwgbmV4dCB0byB0aGUgaW5wdXQgZmllbGRcblx0XHRjb25zdCBub3RMaW5rZWRBcnRpY2xlID0ge1xuXHRcdFx0J3V3LWJpdGUnOiB3aW5kb3cud2dVTFMoJ+iiq+KAnOWSrOWIsOKAneeahOeUqOaIt++8iOS4jeWQq1VzZXI677yJICcsICfooqvjgIzlkqzliLDjgI3nmoTkvb/nlKjogIXvvIjkuI3lkKtVc2VyOu+8iSAnKSxcblx0XHRcdCd1dy1haXYnOiB3aW5kb3cud2dVTFMoJ+WPr+mAiei+k+WFpeiiq+itpuWRiueahOeUqOaIt+WQje+8iOS4jeWQq1VzZXI677yJICcsICflj6/pgbjovLjlhaXooqvorablkYrnmoTkvb/nlKjogIXlkI3nqLHvvIjkuI3lkKtVc2VyOu+8iSAnKSxcblx0XHR9O1xuXHRcdGlmIChbJ3NpbmdsZW5vdGljZScsICdzaW5nbGV3YXJuJywgJ3NpbmdsZWNvbWJpbmVkJywgJ2tpdGNoZW5zaW5rJ10uaW5jbHVkZXMobWFpbl9ncm91cCkpIHtcblx0XHRcdGlmIChub3RMaW5rZWRBcnRpY2xlW3ZhbHVlXSkge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS53YXJuLnByZXZfYXJ0aWNsZSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi5wcmV2X2FydGljbGUgPSBlLnRhcmdldC5mb3JtLmFydGljbGUudmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5hcnRpY2xlLm5vdEFydGljbGUgPSB0cnVlO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUudmFsdWUgPSAnJztcblx0XHRcdFx0Ly8gY2hhbmdlIGZvcm0gbGFiZWxzIGFjY29yZGluZyB0byB0aGUgd2FybmluZyBzZWxlY3RlZFxuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5KGUudGFyZ2V0LmZvcm0uYXJ0aWNsZSwgZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0ub3ZlcnJpZGVFbGVtZW50TGFiZWwoZS50YXJnZXQuZm9ybS5hcnRpY2xlLCBub3RMaW5rZWRBcnRpY2xlW3ZhbHVlXSk7XG5cdFx0XHR9IGVsc2UgaWYgKGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS5ub3RBcnRpY2xlKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0ZS50YXJnZXQuZm9ybS5hcnRpY2xlLnZhbHVlID0gVHdpbmtsZS53YXJuLnByZXZfYXJ0aWNsZTtcblx0XHRcdFx0XHRUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUubm90QXJ0aWNsZSA9IGZhbHNlO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5KGUudGFyZ2V0LmZvcm0uYXJ0aWNsZSwgdHJ1ZSk7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5yZXNldEVsZW1lbnRMYWJlbChlLnRhcmdldC5mb3JtLmFydGljbGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBhZGQgYmlnIHJlZCBub3RpY2UsIHdhcm5pbmcgdXNlcnMgYWJvdXQgaG93IHRvIHVzZSB7e3V3LVtjb2ktXXVzZXJuYW1lfX0gYXBwcm9wcmlhdGVseVxuXHRcdCRib2R5LmZpbmQoJyN0dy13YXJuLXJlZC1ub3RpY2UnKS5yZW1vdmUoKTtcblx0fTtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrcyA9IHtcblx0XHRnZXRXYXJuaW5nV2lraXRleHQ6ICh0ZW1wbGF0ZU5hbWUsIGFydGljbGUsIHJlYXNvbiwgaXNDdXN0b20sIG5vU2lnbikgPT4ge1xuXHRcdFx0bGV0IHRleHQgPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgdGVtcGxhdGVOYW1lKTtcblx0XHRcdC8vIGFkZCBsaW5rZWQgYXJ0aWNsZSBmb3IgdXNlciB3YXJuaW5nc1xuXHRcdFx0aWYgKGFydGljbGUpIHtcblx0XHRcdFx0dGV4dCArPSBgfDE9JHthcnRpY2xlfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmVhc29uKSB7XG5cdFx0XHRcdC8vIGFkZCBleHRyYSBtZXNzYWdlXG5cdFx0XHRcdHRleHQgKz0gYHwyPSR7cmVhc29ufWA7XG5cdFx0XHR9XG5cdFx0XHR0ZXh0ICs9ICd8c3Vic3Q9Jy5jb25jYXQoJ3N1YnN0OicpO1xuXHRcdFx0aWYgKCFub1NpZ24pIHtcblx0XHRcdFx0dGV4dCArPSAnfHNpZz1+ficuY29uY2F0KCd+ficpO1xuXHRcdFx0fVxuXHRcdFx0dGV4dCArPSAnfX0nO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fSxcblx0XHRzaG93UHJldmlldzogKGZvcm0sIHRlbXBsYXRlbmFtZSkgPT4ge1xuXHRcdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdFx0Ly8gUHJvdmlkZWQgb24gYXV0b2xldmVsLCBub3Qgb3RoZXJ3aXNlXG5cdFx0XHR0ZW1wbGF0ZW5hbWUgfHw9IGlucHV0LnN1Yl9ncm91cDtcblx0XHRcdGNvbnN0IGxpbmtlZGFydGljbGUgPSBpbnB1dC5hcnRpY2xlO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGV0ZXh0ID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5nZXRXYXJuaW5nV2lraXRleHQoXG5cdFx0XHRcdHRlbXBsYXRlbmFtZSxcblx0XHRcdFx0bGlua2VkYXJ0aWNsZSxcblx0XHRcdFx0aW5wdXQucmVhc29uLFxuXHRcdFx0XHRpbnB1dC5tYWluX2dyb3VwID09PSAnY3VzdG9tJ1xuXHRcdFx0KTtcblx0XHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKHRlbXBsYXRldGV4dCwgYFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0XHR9LFxuXG5cdFx0Ly8gSnVzdCBhIHBhc3MtdGhyb3VnaCB1bmxlc3MgdGhlIGF1dG9sZXZlbCBvcHRpb24gd2FzIHNlbGVjdGVkXG5cdFx0cHJldmlldzogKGZvcm0pID0+IHtcblx0XHRcdGlmIChmb3JtLm1haW5fZ3JvdXAudmFsdWUgPT09ICdhdXRvbGV2ZWwnKSB7XG5cdFx0XHRcdC8vIEFsd2F5cyBnZXQgYSBuZXcsIHVwZGF0ZWQgdGFsa3BhZ2UgZm9yIGF1dG9sZXZlbCBwcm9jZXNzaW5nXG5cdFx0XHRcdGNvbnN0IHVzZXJ0YWxrX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWAsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDovb3kuIrmrKHorablkYonLCAn6LyJ5YWl5LiK5qyh6K2m5ZGKJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dXNlcnRhbGtfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdC8vIFdpbGwgZmFpbCBzaWxlbnRseSBpZiB0aGUgdGFsayBwYWdlIGlzIGEgY3Jvc3MtbnMgcmVkaXJlY3QsXG5cdFx0XHRcdC8vIHJlbW92YWwgb2YgdGhlIHByZXZpZXcgYm94IGhhbmRsZWQgd2hlbiBsb2FkaW5nIHRoZSBtZW51XG5cdFx0XHRcdHVzZXJ0YWxrX3BhZ2UubG9hZCgocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaiA9IHBhZ2VvYmo7IC8vIFVwZGF0ZSB0YWxrcGFnZU9ialxuXHRcdFx0XHRcdGNvbnN0IHdpa2l0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRcdC8vIGhpc3Rvcnkgbm90IG5lZWRlZCBmb3IgYXV0b2xldmVsXG5cdFx0XHRcdFx0Y29uc3QgW2xhdGVzdF0gPSBUd2lua2xlLndhcm4uY2FsbGJhY2tzLmRhdGVQcm9jZXNzaW5nKHdpa2l0ZXh0KTtcblx0XHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRzdWJfZ3JvdXA6IGZvcm0uc3ViX2dyb3VwLnZhbHVlLFxuXHRcdFx0XHRcdFx0YXJ0aWNsZTogZm9ybS5hcnRpY2xlLnZhbHVlLFxuXHRcdFx0XHRcdFx0bWVzc2FnZURhdGE6ICQoZm9ybS5zdWJfZ3JvdXApXG5cdFx0XHRcdFx0XHRcdC5maW5kKGBvcHRpb25bdmFsdWU9XCIkeyQoZm9ybS5zdWJfZ3JvdXApLnZhbCgpfVwiXWApXG5cdFx0XHRcdFx0XHRcdC5kYXRhKCdtZXNzYWdlRGF0YScpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Y29uc3QgW3RlbXBsYXRlXSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuYXV0b2xldmVsUGFyc2VXaWtpdGV4dCh3aWtpdGV4dCwgcGFyYW1zLCBsYXRlc3QpO1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFja3Muc2hvd1ByZXZpZXcoZm9ybSwgdGVtcGxhdGUpO1xuXHRcdFx0XHRcdC8vIElmIHRoZSB0ZW1wbGF0ZXMgaGF2ZSBkaXZlcmdlZCwgZmFrZSBhIGNoYW5nZSBldmVudFxuXHRcdFx0XHRcdC8vIHRvIHJlbG9hZCB0aGUgbWVudSB3aXRoIHRoZSB1cGRhdGVkIHBhZ2VvYmpcblx0XHRcdFx0XHRpZiAoZm9ybS5zdWJfZ3JvdXAudmFsdWUgIT09IHRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdFx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRcdFx0Zm9ybS5tYWluX2dyb3VwLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5zaG93UHJldmlldyhmb3JtKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFVzZWQgaW4gdGhlIG1haW4gYW5kIGF1dG9sZXZlbCBsb29wcyB0byBkZXRlcm1pbmUgd2hlbiB0byB3YXJuXG5cdFx0ICogYWJvdXQgZXhjZXNzaXZlbHkgcmVjZW50LCBzdGFsZSwgb3IgaWRlbnRpY2FsIHdhcm5pbmdzLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHdpa2l0ZXh0ICBUaGUgdGV4dCBvZiBhIHVzZXIncyB0YWxrIHBhZ2UsIGZyb20gZ2V0UGFnZVRleHQoKVxuXHRcdCAqIEByZXR1cm5zIHtPYmplY3RbXX0gLSBBcnJheSBvZiBvYmplY3RzOiBsYXRlc3QgY29udGFpbnMgbW9zdCByZWNlbnRcblx0XHQgKiB3YXJuaW5nIGFuZCBkYXRlOyBoaXN0b3J5IGxpc3RzIGFsbCBwcmlvciB3YXJuaW5nc1xuXHRcdCAqL1xuXHRcdGRhdGVQcm9jZXNzaW5nOiAod2lraXRleHQpID0+IHtcblx0XHRcdGNvbnN0IGhpc3RvcnlfcmUgPVxuXHRcdFx0XHQvPCEtLVxccz9UZW1wbGF0ZTooW3VVXXctLio/KVxccz8tLT4uKj8oXFxkezR9KeW5tChcXGR7MSwyfSnmnIgoXFxkezEsMn0p5pelIFxcKFvml6XkuIDkuozkuInlm5vkupTlha1dXFwpIChcXGR7MSwyfSk6KFxcZHsxLDJ9KSBcXChDU1RcXCkvZztcblx0XHRcdGNvbnN0IGhpc3RvcnkgPSB7fTtcblx0XHRcdGNvbnN0IGxhdGVzdCA9IHtcblx0XHRcdFx0ZGF0ZTogbmV3IE1vcmViaXRzLmRhdGUoMCksXG5cdFx0XHRcdHR5cGU6ICcnLFxuXHRcdFx0fTtcblx0XHRcdGxldCBjdXJyZW50O1xuXHRcdFx0d2hpbGUgKChjdXJyZW50ID0gaGlzdG9yeV9yZS5leGVjKHdpa2l0ZXh0KSkgIT09IG51bGwpIHtcblx0XHRcdFx0Y29uc3QgWywgdGVtcGxhdGVdID0gY3VycmVudDtcblx0XHRcdFx0Y29uc3QgY3VycmVudF9kYXRlID0gbmV3IE1vcmViaXRzLmRhdGUoXG5cdFx0XHRcdFx0YCR7Y3VycmVudFsyXX0tJHtjdXJyZW50WzNdfS0ke2N1cnJlbnRbNF19ICR7Y3VycmVudFs1XX06JHtjdXJyZW50WzZdfSAoQ1NUKWBcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKCEodGVtcGxhdGUgaW4gaGlzdG9yeSkgfHwgaGlzdG9yeVt0ZW1wbGF0ZV0uaXNCZWZvcmUoY3VycmVudF9kYXRlKSkge1xuXHRcdFx0XHRcdGhpc3RvcnlbdGVtcGxhdGVdID0gY3VycmVudF9kYXRlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghbGF0ZXN0LmRhdGUuaXNBZnRlcihjdXJyZW50X2RhdGUpKSB7XG5cdFx0XHRcdFx0bGF0ZXN0LmRhdGUgPSBjdXJyZW50X2RhdGU7XG5cdFx0XHRcdFx0bGF0ZXN0LnR5cGUgPSB0ZW1wbGF0ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFtsYXRlc3QsIGhpc3RvcnldO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogTWFpbiBsb29wIGZvciBkZWNpZGluZyB3aGF0IHRoZSBsZXZlbCBzaG91bGQgaW5jcmVtZW50IHRvLiBNb3N0IG9mXG5cdFx0ICogdGhpcyBpcyByZWFsbHkganVzdCBlcnJvciBjYXRjaGluZyBhbmQgdXBkYXRpbmcgdGhlIHN1YnNlcXVlbnQgZGF0YS5cblx0XHQgKiBNYXkgcHJvZHVjZSB1cCB0byB0d28gbm90aWNlcyBpbiBhIHR3aW5rbGUtd2Fybi1hdXRvbGV2ZWwtbWVzc2FnZXMgZGl2XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gd2lraXRleHQgIFRoZSB0ZXh0IG9mIGEgdXNlcidzIHRhbGsgcGFnZSwgZnJvbSBnZXRQYWdlVGV4dCgpIChyZXF1aXJlZClcblx0XHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zICBQYXJhbXMgb2JqZWN0OiBzdWJfZ3JvdXAgaXMgdGhlIHRlbXBsYXRlIChyZXF1aXJlZCk7XG5cdFx0ICogYXJ0aWNsZSBpcyB0aGUgdXNlci1wcm92aWRlZCBhcnRpY2xlIChmb3JtLmFydGljbGUpIHVzZWQgdG8gbGluayBBUlYgb24gcmVjZW50IGxldmVsMiB3YXJuaW5ncztcblx0XHQgKiBtZXNzYWdlRGF0YSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiBnZXR0aW5nIHRoZSBmdWxsIHRlbXBsYXRlLCBhcyBpdCdzXG5cdFx0ICogdXNlZCB0byBlbnN1cmUgYSB2YWxpZCB0ZW1wbGF0ZSBvZiB0aGF0IGxldmVsIGV4aXN0c1xuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBsYXRlc3QgIEZpcnN0IGVsZW1lbnQgb2YgdGhlIGFycmF5IHJldHVybmVkIGZyb21cblx0XHQgKiBkYXRlUHJvY2Vzc2luZy4gUHJvdmlkZWQgaGVyZSByYXRoZXIgdGhhbiBwcm9jZXNzZWQgd2l0aGluIHRvIGF2b2lkXG5cdFx0ICogcmVwZWF0ZWQgY2FsbCB0byBkYXRlUHJvY2Vzc2luZ1xuXHRcdCAqIEBwYXJhbSB7KERhdGV8TW9yZWJpdHMuZGF0ZSl9IGRhdGUgIERhdGUgZnJvbSB3aGljaCBzdGFsZW5lc3MgaXMgZGV0ZXJtaW5lZFxuXHRcdCAqIEBwYXJhbSB7TW9yZWJpdHMuc3RhdHVzfSBzdGF0ZWxlbSAgU3RhdHVzIGVsZW1lbnQsIG9ubHkgdXNlZCBmb3IgaGFuZGxpbmcgZXJyb3IgaW4gZmluYWwgZXhlY3V0aW9uXG5cdFx0ICpcblx0XHQgKiBAcmV0dXJucyB7QXJyYXl9IC0gQXJyYXkgdGhhdCBjb250YWlucyB0aGUgZnVsbCB0ZW1wbGF0ZSBhbmQganVzdCB0aGUgd2FybmluZyBsZXZlbFxuXHRcdCAqL1xuXHRcdGF1dG9sZXZlbFBhcnNlV2lraXRleHQ6ICh3aWtpdGV4dCwgcGFyYW1zLCBsYXRlc3QsIGRhdGUsIHN0YXRlbGVtKSA9PiB7XG5cdFx0XHRsZXQgbGV2ZWw7IC8vIHVuZGVmaW5lZCByYXRoZXIgdGhhbiAnJyBtZWFucyB0aGUgaXNOYU4gYmVsb3cgd2lsbCByZXR1cm4gdHJ1ZVxuXHRcdFx0aWYgKC9cXGQ/JC8udGVzdChsYXRlc3QudHlwZSkpIHtcblx0XHRcdFx0Ly8gbGV2ZWwxLTJcblx0XHRcdFx0bGV2ZWwgPSBOdW1iZXIucGFyc2VJbnQobGF0ZXN0LnR5cGUucmVwbGFjZSgvLiooXFxkKT8kLywgJyQxJyksIDEwKTtcblx0XHRcdH0gZWxzZSBpZiAobGF0ZXN0LnR5cGUpIHtcblx0XHRcdFx0bGV2ZWwgPSAxOyAvLyBzaW5nbGVub3RpY2Ugb3Igbm90IGZvdW5kXG5cdFx0XHR9XG5cdFx0XHRjb25zdCAkYXV0b2xldmVsTWVzc2FnZSA9ICQoJzxkaXY+JykuYXR0cignaWQnLCAndHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJyk7XG5cdFx0XHRpZiAoTnVtYmVyLmlzTmFOKGxldmVsKSkge1xuXHRcdFx0XHQvLyBObyBwcmlvciB3YXJuaW5ncyBmb3VuZCwgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRcdFx0bGV2ZWwgPSAxO1xuXHRcdFx0fSBlbHNlIGlmIChsZXZlbCA+IDIgfHwgbGV2ZWwgPCAxKSB7XG5cdFx0XHRcdC8vIFNob3VsZG4ndCBoYXBwZW5cblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5peg5rOV6Kej5p6Q5LiK5qyh55qE6K2m5ZGK5bGC57qn77yM6K+35omL5Yqo6YCJ5oup5LiA5Liq6K2m5ZGK5bGC57qn44CCJyxcblx0XHRcdFx0XHQn54Sh5rOV6Kej5p6Q5LiK5qyh55qE6K2m5ZGK5bGk57Sa77yM6KuL5omL5YuV6YG45pOH5LiA5YCL6K2m5ZGK5bGk57Sa44CCJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoc3RhdGVsZW0pIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcihtZXNzYWdlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRtdy5ub3RpZnkobWVzc2FnZSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXdhcm4nLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGUgfHw9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdGNvbnN0IGF1dG9UaW1lb3V0ID0gbmV3IE1vcmViaXRzLmRhdGUobGF0ZXN0LmRhdGUuZ2V0VGltZSgpKS5hZGQoXG5cdFx0XHRcdFx0TnVtYmVyLnBhcnNlSW50KFR3aW5rbGUuZ2V0UHJlZignYXV0b2xldmVsU3RhbGVEYXlzJyksIDEwKSxcblx0XHRcdFx0XHQnZGF5J1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoYXV0b1RpbWVvdXQuaXNBZnRlcihkYXRlKSkge1xuXHRcdFx0XHRcdGlmIChsZXZlbCA9PT0gMikge1xuXHRcdFx0XHRcdFx0bGV2ZWwgPSAyO1xuXHRcdFx0XHRcdFx0Ly8gQmFzaWNhbGx5IGluZGljYXRlcyB3aGV0aGVyIHdlJ3JlIGluIHRoZSBmaW5hbCBNYWluIGV2YWx1YXRpb24gb3Igbm90LFxuXHRcdFx0XHRcdFx0Ly8gYW5kIHRodXMgd2hldGhlciB3ZSBjYW4gY29udGludWUgb3IgbmVlZCB0byBkaXNwbGF5IHRoZSB3YXJuaW5nIGFuZCBsaW5rXG5cdFx0XHRcdFx0XHRpZiAoIXN0YXRlbGVtKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0ICRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICcjJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WNleWHu+atpOWkhOaJk+W8gOWRiueKtuW3peWFtycsICfpu57mk4rmraTomZXmiZPplovlkYrni4Dlt6XlhbcnKSlcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdmb250LXdlaWdodCcsICdib2xkJylcblx0XHRcdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS53YXJuLmRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS5hcnYuY2FsbGJhY2socmVsZXZhbnRVc2VyTmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHQkYm9keS5maW5kKCdpbnB1dFtuYW1lPXBhZ2VdJykudmFsKHBhcmFtcy5hcnRpY2xlKTsgLy8gVGFyZ2V0IHBhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdCRib2R5LmZpbmQoJ2lucHV0W3ZhbHVlPWZpbmFsXScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsgLy8gVmFuZGFsaXNtIGFmdGVyIGZpbmFsXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhdHVzTm9kZSA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdjb2xvcicsICcjZjAwJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdHJlbGV2YW50VXNlck5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjuaUtuWIsOS6huS4gOS4quWxgue6pzLorablkYrvvIgnLCAn5pyA5b6M5pS25Yiw5LqG5LiA5YCL5bGk57SaMuitpuWRiu+8iCcpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGF0ZXN0LnR5cGUgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ie+8jOaJgOS7peWwhuWFtuaKpeWRiue7meeuoeeQhuS6uuWRmOS8muavlOi+g+Wlve+8mycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ie+8jOaJgOS7peWwh+WFtuWgseWRiue1pueuoeeQhuS6uuWToeacg+avlOi8g+Wlve+8mydcblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHN0YXR1c05vZGUuYXBwZW5kKCRsaW5rWzBdKTtcblx0XHRcdFx0XHRcdFx0JGF1dG9sZXZlbE1lc3NhZ2UuYXBwZW5kKHN0YXR1c05vZGUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBBdXRvbWF0aWNhbGx5IGluY3JlYXNlIHNldmVyaXR5XG5cdFx0XHRcdFx0XHRsZXZlbCArPSAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBSZXNldCB3YXJuaW5nIGxldmVsIGlmIG1vc3QtcmVjZW50IHdhcm5pbmcgaXMgdG9vIG9sZFxuXHRcdFx0XHRcdGxldmVsID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0JGF1dG9sZXZlbE1lc3NhZ2UucHJlcGVuZChcblx0XHRcdFx0JChcblx0XHRcdFx0XHRgPGRpdj4ke3dpbmRvdy53Z1VMUygn5bCG5Y+R6YCBJywgJ+Wwh+eZvOmAgScpfTxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bGC57qnJyxcblx0XHRcdFx0XHRcdCflsaTntJonXG5cdFx0XHRcdFx0KX0ke2xldmVsfTwvc3Bhbj7orablkYrmqKHmnb/jgII8L2Rpdj5gXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHQvLyBQbGFjZSBhZnRlciB0aGUgc3RhbGUgYW5kIG90aGVyLXVzZXItcmV2ZXJ0ZWQgKHRleHQtb25seSkgbWVzc2FnZXNcblx0XHRcdCRib2R5LmZpbmQoJyN0d2lua2xlLXdhcm4tYXV0b2xldmVsLW1lc3NhZ2UnKS5yZW1vdmUoKTsgLy8gY2xlYW4gc2xhdGVcblx0XHRcdCRhdXRvbGV2ZWxNZXNzYWdlLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyN0d2lua2xlLXdhcm4td2FybmluZy1tZXNzYWdlcycpKTtcblx0XHRcdGxldCB0ZW1wbGF0ZSA9IHBhcmFtcy5zdWJfZ3JvdXAucmVwbGFjZSgvKC4qKVxcZCQvLCAnJDEnKTtcblx0XHRcdC8vIFZhbGlkYXRlIHdhcm5pbmcgbGV2ZWwsIGZhbGxpbmcgYmFjayB0byB0aGUgdXctZ2VuZXJpYyBzZXJpZXMuXG5cdFx0XHQvLyBPbmx5IGEgZmV3IGl0ZW1zIGFyZSBtaXNzaW5nIGEgbGV2ZWwsIGFuZCBpbiBhbGwgYnV0IGEgaGFuZGZ1bFxuXHRcdFx0Ly8gb2YgY2FzZXMsIHRoZSB1dy1nZW5lcmljIHNlcmllcyBpcyBleHBsaWNpdGx5IHVzZWQgZWxzZXdoZXJlLlxuXHRcdFx0aWYgKHBhcmFtcy5tZXNzYWdlRGF0YSAmJiAhcGFyYW1zLm1lc3NhZ2VEYXRhW2BsZXZlbCR7bGV2ZWx9YF0pIHtcblx0XHRcdFx0dGVtcGxhdGUgPSAndXctZ2VuZXJpYyc7XG5cdFx0XHR9XG5cdFx0XHR0ZW1wbGF0ZSArPSBsZXZlbDtcblx0XHRcdHJldHVybiBbdGVtcGxhdGUsIGxldmVsXTtcblx0XHR9LFxuXHRcdG1haW46IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRsZXQge21lc3NhZ2VEYXRhfSA9IHBhcmFtcztcblx0XHRcdGNvbnN0IHdhcm5pbmdIaXN0b3J5ID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5kYXRlUHJvY2Vzc2luZyh0ZXh0KTtcblx0XHRcdGNvbnN0IFtsYXRlc3QsIGhpc3RvcnldID0gd2FybmluZ0hpc3Rvcnk7XG5cdFx0XHRjb25zdCBub3cgPSBuZXcgTW9yZWJpdHMuZGF0ZShwYWdlb2JqLmdldExvYWRUaW1lKCkpO1xuXHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqLCBqdXN0IGluIGNhc2Vcblx0XHRcdGlmIChwYXJhbXMubWFpbl9ncm91cCA9PT0gJ2F1dG9sZXZlbCcpIHtcblx0XHRcdFx0Ly8gW3RlbXBsYXRlLCBsZXZlbF1cblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVBbmRMZXZlbCA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuYXV0b2xldmVsUGFyc2VXaWtpdGV4dChcblx0XHRcdFx0XHR0ZXh0LFxuXHRcdFx0XHRcdHBhcmFtcyxcblx0XHRcdFx0XHRsYXRlc3QsXG5cdFx0XHRcdFx0bm93LFxuXHRcdFx0XHRcdHN0YXRlbGVtXG5cdFx0XHRcdCk7XG5cdFx0XHRcdC8vIE9ubHkgaWYgdGhlcmUncyBhIGNoYW5nZSBmcm9tIHRoZSBwcmlvciBkaXNwbGF5L2xvYWRcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAgIT09IHRlbXBsYXRlQW5kTGV2ZWxbMF0gJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Y+R6YCB57uZ55So5oi3e3snLCAn5bCH55m86YCB57Wm5L2/55So6ICFe3snKSArXG5cdFx0XHRcdFx0XHRcdHRlbXBsYXRlQW5kTGV2ZWxbMF0gK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ3195qih5p2/77yM5aW95ZCX77yfJywgJ3195qih5p2/77yM5aW95ZeO77yfJylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raIJywgJ+S9v+eUqOiAheWPlua2iCcpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gVXBkYXRlIHBhcmFtcyBub3cgdGhhdCB3ZSd2ZSBzZWxlY3RlZCBhIHdhcm5pbmdcblx0XHRcdFx0W3BhcmFtcy5zdWJfZ3JvdXBdID0gdGVtcGxhdGVBbmRMZXZlbDtcblx0XHRcdFx0bWVzc2FnZURhdGEgPSBwYXJhbXMubWVzc2FnZURhdGFbYGxldmVsJHt0ZW1wbGF0ZUFuZExldmVsWzFdfWBdO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0cGFyYW1zLnN1Yl9ncm91cCBpbiBoaXN0b3J5ICYmXG5cdFx0XHRcdG5ldyBNb3JlYml0cy5kYXRlKGhpc3RvcnlbcGFyYW1zLnN1Yl9ncm91cF0pLmFkZCgxLCAnZGF5JykuaXNBZnRlcihub3cpICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+RMjTlsI/ml7blhoXkuIDkuKrlkIzmoLfnmoQgJywgJ+i/kTI05bCP5pmC5YWn5LiA5YCL5ZCM5qij55qEICcpICtcblx0XHRcdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5qih5p2/5bey6KKr5Y+R5Ye644CCXFxu5piv5ZCm57un57ut77yfJywgJyDmqKHmnb/lt7Looqvnmbzlh7rjgIJcXG7mmK/lkKbnubznuozvvJ8nKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflj5bmtognLCAn5L2/55So6ICF5Y+W5raIJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsYXRlc3QuZGF0ZS5hZGQoMSwgJ21pbnV0ZScpOyAvLyBhZnRlciBsb25nIGRlYmF0ZSwgb25lIG1pbnV0ZSBpcyBtYXhcblx0XHRcdGlmIChcblx0XHRcdFx0bGF0ZXN0LmRhdGUuaXNBZnRlcihub3cpICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+RMeWIhumSn+WGhSAnLCAn6L+RMeWIhumQmOWFpyAnKSArXG5cdFx0XHRcdFx0XHRsYXRlc3QudHlwZSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmqKHmnb/lt7Looqvlj5Hlh7rjgIJcXG7mmK/lkKbnu6fnu63vvJ8nLCAnIOaooeadv+W3suiiq+eZvOWHuuOAglxcbuaYr+WQpue5vOe6jO+8nycpXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iCcsICfkvb/nlKjogIXlj5bmtognKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGJ1aWxkIHRoZSBlZGl0IHN1bW1hcnlcblx0XHRcdC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSBnZW5lcmF0aW9uIG9mIHN1bW1hcnkgcHJlZml4IGZvciBjdXN0b20gdGVtcGxhdGVzXG5cdFx0XHRjb25zdCBjdXN0b21Qcm9jZXNzID0gKHRlbXBsYXRlKSA9PiB7XG5cdFx0XHRcdFt0ZW1wbGF0ZV0gPSB0ZW1wbGF0ZS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRsZXQgcHJlZml4O1xuXHRcdFx0XHRzd2l0Y2ggKHRlbXBsYXRlLnNsaWNlKC0xKSkge1xuXHRcdFx0XHRcdGNhc2UgJzEnOlxuXHRcdFx0XHRcdFx0cHJlZml4ID0gJ+azqOaEjyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICcyJzpcblx0XHRcdFx0XHRcdHByZWZpeCA9ICforablkYonO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Ly8gZmFsbHMgdGhyb3VnaFxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRwcmVmaXggPSAn5o+Q6YaSJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBgJHtwcmVmaXh977yaJHtNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIobWVzc2FnZURhdGEubGFiZWwpfWA7XG5cdFx0XHR9O1xuXHRcdFx0bGV0IHN1bW1hcnk7XG5cdFx0XHRpZiAocGFyYW1zLm1haW5fZ3JvdXAgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdHN1bW1hcnkgPSBjdXN0b21Qcm9jZXNzKHBhcmFtcy5zdWJfZ3JvdXApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gTm9ybWFsaXplIGtpdGNoZW5zaW5rIHRvIHRoZSAxLTIgc3R5bGVcblx0XHRcdFx0aWYgKHBhcmFtcy5tYWluX2dyb3VwID09PSAna2l0Y2hlbnNpbmsnICYmICEvXkQrJC8udGVzdChwYXJhbXMuc3ViX2dyb3VwKSkge1xuXHRcdFx0XHRcdGxldCBzdWIgPSBwYXJhbXMuc3ViX2dyb3VwLnNsaWNlKC0xKTtcblx0XHRcdFx0XHRpZiAoc3ViID09PSAnbScpIHtcblx0XHRcdFx0XHRcdHN1YiA9IHBhcmFtcy5zdWJfZ3JvdXAuc2xpY2UoLTMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBEb24ndCBvdmVyd3JpdGUgdXctM3JyLCB0ZWNobmljYWxseSB1bm5lY2Vzc2FyeVxuXHRcdFx0XHRcdGlmICgvXFxkLy50ZXN0KHN1YikpIHtcblx0XHRcdFx0XHRcdHBhcmFtcy5tYWluX2dyb3VwID0gYGxldmVsJHtzdWJ9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gc2luZ2xldCB8fCBsZXZlbDEtMiwgbm8gbmVlZCB0byAvXlxcRCskLy50ZXN0KHBhcmFtcy5tYWluX2dyb3VwKVxuXHRcdFx0XHRzdW1tYXJ5ID1cblx0XHRcdFx0XHRtZXNzYWdlRGF0YS5zdW1tYXJ5IHx8IChtZXNzYWdlRGF0YVtwYXJhbXMubWFpbl9ncm91cF0gJiYgbWVzc2FnZURhdGFbcGFyYW1zLm1haW5fZ3JvdXBdLnN1bW1hcnkpO1xuXHRcdFx0XHQvLyBOb3QgaW4gVHdpbmtsZS53YXJuLm1lc3NhZ2VzLCBhc3N1bWUgY3VzdG9tIHRlbXBsYXRlXG5cdFx0XHRcdHN1bW1hcnkgfHw9IGN1c3RvbVByb2Nlc3MocGFyYW1zLnN1Yl9ncm91cCk7XG5cdFx0XHRcdGlmIChtZXNzYWdlRGF0YS5zdXBwcmVzc0FydGljbGVJblN1bW1hcnkgIT09IHRydWUgJiYgcGFyYW1zLmFydGljbGUpIHtcblx0XHRcdFx0XHRpZiAocGFyYW1zLnN1Yl9ncm91cCA9PT0gJ3V3LWFpdicpIHtcblx0XHRcdFx0XHRcdC8vIHRoZXNlIHRlbXBsYXRlcyByZXF1aXJlIGEgdXNlcm5hbWVcblx0XHRcdFx0XHRcdHN1bW1hcnkgKz0gYO+8iCR7d2luZG93LndnVUxTKCflr7nkuo4nLCAn5bCN5pa8Jyl9W1tVc2VyOiR7cGFyYW1zLmFydGljbGV9XV3vvIlgO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLnN1Yl9ncm91cCA9PT0gJ3V3LWJpdGUnKSB7XG5cdFx0XHRcdFx0XHQvLyB0aGlzIHRlbXBsYXRlIHJlcXVpcmVzIGEgdXNlcm5hbWVcblx0XHRcdFx0XHRcdHN1bW1hcnkgKz0gYO+8jCR7d2luZG93LndnVUxTKCfkuo4nLCAn5pa8Jyl9W1tVc2VyIHRhbGs6JHtwYXJhbXMuYXJ0aWNsZX1dXWA7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN1bW1hcnkgKz0gYCR7d2luZG93LndnVUxTKCfvvIzkuo5bWycsICfvvIzmlrxbWycpICsgcGFyYW1zLmFydGljbGV9XV1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFdhcm5pbmdzJykpO1xuXHRcdFx0Ly8gR2V0IGFjdHVhbCB3YXJuaW5nIHRleHRcblx0XHRcdGNvbnN0IHdhcm5pbmdUZXh0ID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5nZXRXYXJuaW5nV2lraXRleHQoXG5cdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAsXG5cdFx0XHRcdHBhcmFtcy5hcnRpY2xlLFxuXHRcdFx0XHRwYXJhbXMucmVhc29uLFxuXHRcdFx0XHRwYXJhbXMubWFpbl9ncm91cCA9PT0gJ2N1c3RvbSdcblx0XHRcdCk7XG5cdFx0XHRsZXQgc2VjdGlvbkV4aXN0cyA9IGZhbHNlO1xuXHRcdFx0bGV0IHNlY3Rpb25OdW1iZXIgPSAwO1xuXHRcdFx0Ly8gT25seSBjaGVjayBzZWN0aW9ucyBpZiB0aGVyZSBhcmUgc2VjdGlvbnMgb3IgdGhlcmUncyBhIGNoYW5jZSB3ZSB3b24ndCBjcmVhdGUgb3VyIG93blxuXHRcdFx0aWYgKCFtZXNzYWdlRGF0YS5oZWFkaW5nICYmIHRleHQubGVuZ3RoKSB7XG5cdFx0XHRcdC8vIEdldCBhbGwgc2VjdGlvbnNcblx0XHRcdFx0Y29uc3Qgc2VjdGlvbnMgPSB0ZXh0Lm1hdGNoKC9eKD09KikuK1xcMS9nbSk7XG5cdFx0XHRcdGlmIChzZWN0aW9ucyAmJiBzZWN0aW9ucy5sZW5ndGggIT09IDApIHtcblx0XHRcdFx0XHQvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgc2VjdGlvbiBoZWFkZXIgaW4gcXVlc3Rpb25cblx0XHRcdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBub3cubW9udGhIZWFkZXJSZWdleCgpO1xuXHRcdFx0XHRcdHNlY3Rpb25OdW1iZXIgPSAwO1xuXHRcdFx0XHRcdC8vIEZpbmQgdGhpcyBtb250aCdzIHNlY3Rpb24gYW1vbmcgTDIgc2VjdGlvbnMsIHByZWZlcnJpbmcgdGhlIGJvdHRvbS1tb3N0XG5cdFx0XHRcdFx0c2VjdGlvbkV4aXN0cyA9IHNlY3Rpb25zLnJldmVyc2UoKS5zb21lKChzZWMsIGlkeCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0L14oPT0pW149XS4rXFwxL20udGVzdChzZWMpICYmXG5cdFx0XHRcdFx0XHRcdGRhdGVIZWFkZXJSZWdleC50ZXN0KHNlYykgJiZcblx0XHRcdFx0XHRcdFx0dHlwZW9mIChzZWN0aW9uTnVtYmVyID0gc2VjdGlvbnMubGVuZ3RoIC0gMSAtIGlkeCkgPT09ICdudW1iZXInXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2VjdGlvbkV4aXN0cykge1xuXHRcdFx0XHQvLyBhcHBlbmQgdG8gZXhpc3Rpbmcgc2VjdGlvblxuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VTZWN0aW9uKHNlY3Rpb25OdW1iZXIgKyAxKTtcblx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KGBcXG5cXG4ke3dhcm5pbmdUZXh0fWApO1xuXHRcdFx0XHRwYWdlb2JqLmFwcGVuZCgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKG1lc3NhZ2VEYXRhLmhlYWRpbmcpIHtcblx0XHRcdFx0XHQvLyBjcmVhdGUgbmV3IHNlY3Rpb25cblx0XHRcdFx0XHRwYWdlb2JqLnNldE5ld1NlY3Rpb25UaXRsZShtZXNzYWdlRGF0YS5oZWFkaW5nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnKrmib7liLDlvZPmnIjnmoTkuoznuqfmoIfpopjvvIzlsIbliJvlu7rmlrDnmoQnLCAn5pyq5om+5Yiw55W25pyI55qE5LqM57Sa5qiZ6aGM77yM5bCH5bu656uL5paw55qEJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHBhZ2VvYmouc2V0TmV3U2VjdGlvblRpdGxlKG5vdy5tb250aEhlYWRlcigwKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFnZW9iai5zZXROZXdTZWN0aW9uVGV4dCh3YXJuaW5nVGV4dCk7XG5cdFx0XHRcdHBhZ2VvYmoubmV3U2VjdGlvbigpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgdXNlclRhbGtQYWdlID0gYFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9YDtcblx0XHQvLyByZWFzb24sIG1haW5fZ3JvdXAsIHN1Yl9ncm91cCwgYXJ0aWNsZVxuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZS50YXJnZXQpO1xuXHRcdGlmIChwYXJhbXMuYXJ0aWNsZSkge1xuXHRcdFx0aWYgKC9odHRwcz86XFwvXFwvLy50ZXN0KHBhcmFtcy5hcnRpY2xlKSkge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfigJzpobXpnaLpk77mjqXigJ3kuI3og73kvb/nlKjnvZHlnYDjgIInLCAn44CM6aCB6Z2i6YCj57WQ44CN5LiN6IO95L2/55So57ay5Z2A44CCJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnd2FybicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBhcnRpY2xlID0gbmV3IG13LlRpdGxlKHBhcmFtcy5hcnRpY2xlKTtcblx0XHRcdFx0cGFyYW1zLmFydGljbGUgPSBhcnRpY2xlLmdldFByZWZpeGVkVGV4dCgpO1xuXHRcdFx0XHRpZiAoYXJ0aWNsZS5nZXRGcmFnbWVudCgpKSB7XG5cdFx0XHRcdFx0cGFyYW1zLmFydGljbGUgKz0gYCMke2FydGljbGUuZ2V0RnJhZ21lbnQoKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0YWxlcnQoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+KAnOmhtemdoumTvuaOpeKAneS4jeWQiOazle+8jOS7heiDvei+k+WFpeS4gOS4qumhtemdouWQjeensO+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZm44CCJyxcblx0XHRcdFx0XHRcdCfjgIzpoIHpnaLpgKPntZDjgI3kuI3lkIjms5XvvIzlg4Xog73ovLjlhaXkuIDlgIvpoIHpnaLlkI3nqLHvvIzli7/kvb/nlKjntrLlnYDjgIFbWyBdXe+8jOWPr+S9v+eUqFNwZWNpYWw6RGlmZuOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gVGhlIGF1dG9sZXZlbCBvcHRpb24gd2lsbCBhbHJlYWR5IGtub3cgYnkgbm93IGlmIGEgdXNlciB0YWxrIHBhZ2Vcblx0XHQvLyBpcyBhIGNyb3NzLW5hbWVzcGFjZSByZWRpcmVjdCAodmlhICEhVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqKSwgc29cblx0XHQvLyB0ZWNobmljYWxseSB3ZSBjb3VsZCBhbGVydCBhbiBlcnJvciBoZXJlLCBidXQgdGhlIHVzZXIgd2lsbCBoYXZlXG5cdFx0Ly8gYWxyZWFkeSBpZ25vcmVkIHRoZSBib2xkIHJlZCBlcnJvciBhYm92ZS4gTW9yZW92ZXIsIHRoZXkgcHJvYmFibHlcblx0XHQvLyAqZG9uJ3QqIHdhbnQgdG8gYWN0dWFsbHkgaXNzdWUgYSB3YXJuaW5nLCBzbyB0aGUgZXJyb3IgaGFuZGxpbmdcblx0XHQvLyBhZnRlciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgaXMgcHJvYmFibHkgcHJlZmVyYWJsZVxuXHRcdC8vIEZpbmQgdGhlIHNlbGVjdGVkIDxvcHRpb24+IGVsZW1lbnQgc28gd2UgY2FuIGZldGNoIHRoZSBkYXRhIHN0cnVjdHVyZVxuXHRcdGNvbnN0ICRzZWxlY3RlZEVsID0gJChlLnRhcmdldC5zdWJfZ3JvdXApLmZpbmQoYG9wdGlvblt2YWx1ZT1cIiR7JChlLnRhcmdldC5zdWJfZ3JvdXApLnZhbCgpfVwiXWApO1xuXHRcdHBhcmFtcy5tZXNzYWdlRGF0YSA9ICRzZWxlY3RlZEVsLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0aWYgKHBhcmFtcy5tZXNzYWdlRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fpgInmi6norablkYrmqKHmnb/jgIInLCAn6KuL6YG45pOH6K2m5ZGK5qih5p2/44CCJyksIHtcblx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHR0YWc6ICd3YXJuJyxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHVzZXJUYWxrUGFnZTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+itpuWRiuWujOaIkO+8jOWwhuWcqOWHoOenkuWQjuWIt+aWsCcsICforablkYrlrozmiJDvvIzlsIflnKjlub7np5Llvozph43mlrDmlbTnkIYnKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0dXNlclRhbGtQYWdlLFxuXHRcdFx0d2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobXkv67mlLknLCAn5L2/55So6ICF6KiO6KuW6aCB5L+u5pS5Jylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUud2Fybi5jYWxsYmFja3MubWFpbik7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUud2FybiwgJ3dhcm4nKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBuby1qcXVlcnkvbm8tbWFwLXV0aWwgKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge2luaXRNd0FwaX0gZnJvbSAnZXh0LmdhZGdldC5VdGlsJztcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmxvY2suanMgKi9cbihmdW5jdGlvbiB0d2lua2xlYmxvY2soJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0Y29uc3QgYXBpID0gaW5pdE13QXBpKCdtb3JlYml0cy5qczsgVHdpbmtsZS8xLjEnKTtcblx0bGV0IHJlbGV2YW50VXNlck5hbWU7XG5cdGxldCBibG9ja2VkVXNlck5hbWU7XG5cdGNvbnN0IG1lbnVGb3JtYXR0ZWROYW1lc3BhY2VzID0ge1xuXHRcdC4uLm13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpLFxuXHR9O1xuXHRtZW51Rm9ybWF0dGVkTmFtZXNwYWNlc1swXSA9IHdpbmRvdy53Z1VMUygn77yI5p2h55uu77yJJywgJ++8iOaineebru+8iScpO1xuXHRjb25zdCBibG9ja0FjdGlvblRleHQgPSB7XG5cdFx0YmxvY2s6IHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpLFxuXHRcdHJlYmxvY2s6IHdpbmRvdy53Z1VMUygn6YeN5paw5bCB56aBJywgJ+mHjeaWsOWwgemOlicpLFxuXHRcdHVuYmxvY2s6IHdpbmRvdy53Z1VMUygn6Kej6Zmk5bCB56aBJywgJ+ino+mZpOWwgemOlicpLFxuXHR9O1xuXHQvKipcblx0ICogdHdpbmtsZWJsb2NrLmpzOiBCbG9jayBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiQmxvY2tcIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicywgZXRjLilcblx0ICovXG5cdFR3aW5rbGUuYmxvY2sgPSAoKSA9PiB7XG5cdFx0cmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdC8vIHNob3VsZCBzaG93IG9uIENvbnRyaWJ1dGlvbnMgb3IgQmxvY2sgcGFnZXMsIGFueXdoZXJlIHRoZXJlJ3MgYSByZWxldmFudCB1c2VyXG5cdFx0Ly8gSWdub3JlIHJhbmdlcyB3aWRlciB0aGFuIHRoZSBDSURSIGxpbWl0XG5cdFx0Ly8gRW5hYmxlIGZvciBub24tYWRtaW5zXG5cdFx0aWYgKFxuXHRcdFx0KE1vcmViaXRzLnVzZXJJc1N5c29wIHx8ICFtdy51dGlsLmlzSVBBZGRyZXNzKHJlbGV2YW50VXNlck5hbWUsIHRydWUpKSAmJlxuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSAmJlxuXHRcdFx0KCFNb3JlYml0cy5pcC5pc1JhbmdlKHJlbGV2YW50VXNlck5hbWUpIHx8IE1vcmViaXRzLmlwLnZhbGlkQ0lEUihyZWxldmFudFVzZXJOYW1lKSlcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpLFxuXHRcdFx0XHQndHctYmxvY2snLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgeebuOWFs+eUqOaItycsICflsIHpjpbnm7jpl5zkvb/nlKjogIUnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpICYmXG5cdFx0XHQhY29uZmlybShcblx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmgqjljbPlsIblr7noh6rlt7HmiafooYzlsIHnpoHnm7jlhbPmk43kvZzvvIHnoa7orqTopoHnu6fnu63lkJfvvJ8nLFxuXHRcdFx0XHRcdCfmgqjljbPlsIflsI3oh6rlt7Hln7fooYzlsIHpjpbnm7jpl5zmk43kvZzvvIHnorroqo3opoHnubznuozll47vvJ8nXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvID0gdW5kZWZpbmVkO1xuXHRcdFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucyA9IHt9O1xuXHRcdFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucyA9IHt9O1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjUwLCA1MzApO1xuXHRcdC8vIG5lZWQgdG8gYmUgdmVyYm9zZSBhYm91dCB3aG8gd2UncmUgYmxvY2tpbmdcblx0XHRXaW5kb3cuc2V0VGl0bGUoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgeaIluWQkScsICflsIHpjpbmiJblkJEnKSArIHJlbGV2YW50VXNlck5hbWUgKyB3aW5kb3cud2dVTFMoJ+WPkeWHuuWwgeemgeaooeadvycsICfnmbzlh7rlsIHpjpbmqKHmnb8nKVxuXHRcdCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+WwgeemgeadoeS+iycsICflsIHpjpbmop3kvosnKSwgJ0xJQjpCTE9DSycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCB56aB6K6+572uJywgJ+WwgemOluioreWumicpLCAnSDpUVy9QUkVGI2Jsb2NrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2Jsb2NrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5ibG9jay5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgYWN0aW9uZmllbGQgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pON5L2c57G75Z6LJywgJ+aTjeS9nOmhnuWIpScpLFxuXHRcdH0pO1xuXHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bmFtZTogJ2FjdGlvbnR5cGUnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbixcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeeUqOaItycsICflsIHpjpbkvb/nlKjogIUnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn55So6YCJ5oup55qE6YCJ6aG55YWo56uZ5bCB56aB55u45YWz55So5oi377yM6Iul5pyq5Yu+6YCJ6YOo5YiG5bCB56aB5YiZ5Li65YWo56uZ5bCB56aB44CCJyxcblx0XHRcdFx0XHRcdCfnlKjpgbjmk4fnmoTpgbjpoIXlhajnq5nlsIHpjpbnm7jpl5zkvb/nlKjogIXvvIzoi6XmnKrli77pgbjpg6jliIblsIHpjpbliYfngrrlhajnq5nlsIHpjpbjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0XHRjaGVja2VkOiBNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mDqOWIhuWwgeemgScsICfpg6jliIblsIHpjpYnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BhcnRpYWwnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5ZCv55So6YOo5YiG5bCB56aB5Y+K6YOo5YiG5bCB56aB5qih5p2/44CCJywgJ+WVn+eUqOmDqOWIhuWwgemOluWPiumDqOWIhuWwgemOluaooeadv+OAgicpLFxuXHRcdFx0XHRcdGhpZGRlbjogIU1vcmViaXRzLnVzZXJJc1N5c29wLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVmYXVsdFRvUGFydGlhbEJsb2NrcycpLCAvLyBPdmVycmlkZGVuIGlmIGFscmVhZHkgYmxvY2tlZFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5bCB56aB5qih5p2/5Yiw55So5oi36K6o6K666aG1JywgJ+WKoOWFpeWwgemOluaooeadv+WIsOS9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndGVtcGxhdGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XmiafooYzlsIHnpoHnmoTnrqHnkIblkZjlv5jorrDlj5Hlh7rlsIHnpoHmqKHmnb/vvIzmiJbkvaDlsIHnpoHkuobnlKjmiLfogIzmsqHmnInnu5nlhbblj5Hlh7rmqKHmnb/vvIzliJnkvaDlj6/ku6XnlKjmraTmnaXlj5Hlh7rlkIjpgILnmoTmqKHmnb/jgILli77pgInpg6jliIblsIHnpoHku6Xkvb/nlKjpg6jliIblsIHnpoHmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+iLpeWft+ihjOWwgemOlueahOeuoeeQhuWToeW/mOiomOeZvOWHuuWwgemOluaooeadv++8jOaIluS9oOWwgemOluS6huS9v+eUqOiAheiAjOaykuaciee1puWFtueZvOWHuuaooeadv++8jOWJh+S9oOWPr+S7peeUqOatpOS+hueZvOWHuuWQiOmBqeeahOaooeadv+OAguWLvumBuOmDqOWIhuWwgemOluS7peS9v+eUqOmDqOWIhuWwgemOluaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdoZW4gdmlld2luZyB0aGUgYmxvY2sgZGlhbG9nIG9uIGFuIElQIHJhbmdlXG5cdFx0XHRcdFx0aGlkZGVuOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdFx0Y2hlY2tlZDogTW9yZWJpdHMudXNlcklzU3lzb3AgJiYgIU1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IE1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0YWcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflsIbnlKjmiLfpobXmm7/mjaLmiJDnm7jlhbPnmoTmoIforrDmqKHmnb/vvIzku4XpmZDmsLjkuYXlsIHnpoHkvb/nlKjjgIInLFxuXHRcdFx0XHRcdFx0J+Wwh+S9v+eUqOiAhemggemdouabv+aPm+aIkOebuOmXnOeahOaomeiomOaooeadv++8jOWDhemZkOawuOS5heWwgemOluS9v+eUqOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0XHRjaGVja2VkOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTnlKjmiLfpobUnLCAn5L+d6K235L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcm90ZWN0Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpOeUqOaIt+mhte+8jOS7hemZkOawuOS5heWwgeemgeS9v+eUqOOAgicsICflhajkv53orbfkvb/nlKjogIXpoIHpnaLvvIzlg4XpmZDmsLjkuYXlsIHpjpbkvb/nlKjjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHnlKjmiLcnLCAn6Kej6Zmk5bCB6Y6W5L2/55So6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1bmJsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgeebuOWFs+eUqOaIt+OAgicsICfop6PpmaTlsIHpjpbnm7jpl5zkvb/nlKjogIXjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0LyoqXG5cdFx0ICogQWRkIG9wdGlvbiBmb3IgSVB2NiByYW5nZXMgc21hbGxlciB0aGFuIC82NCB0byB1cGdyYWRlIHRvIHRoZSA2NFxuXHRcdCAqIENJRFIuIFRoaXMgaXMgb25lIG9mIHRoZSBmZXcgcGxhY2VzIHdoZXJlIHdlIHdhbnRcblx0XHQgKiB3Z1JlbGV2YW50VXNlck5hbWUgc2luY2UgdGhpcyBkZXBlbmRzIGVudGlyZWx5IG9uIHRoZSBvcmlnaW5hbCB1c2VyLlxuXHRcdCAqIEluIHRoZW9yeSwgd2Ugc2hvdWxkbid0IHVzZSBNb3JlYml0cy5pcC5nZXQ2NCBoZXJlIHNpbmNlIHNpbmNlIHdlIHdhbnRcblx0XHQgKiB0byBleGNsdWRlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IC82NHMuICBUaGF0J2QgYmU6XG5cdFx0ICogLy8gaWYgKG13LnV0aWwuaXNJUHY2QWRkcmVzcyhtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSwgdHJ1ZSkgJiZcblx0XHQgKiAvLyAobXcudXRpbC5pc0lQdjZBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB8fCBwYXJzZUludChtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKS5yZXBsYWNlKC9eKC4rPylcXC8/KFxcZHsxLDN9KT8kLywgJyQyJyksIDEwKSA+IDY0KSkge1xuXHRcdCAqIEluIHByYWN0aWNlLCB0aG91Z2gsIHNpbmNlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IHJhbmdlcyBhcmVcblx0XHQgKiAobWlzKXRyZWF0ZWQgYXMgc2VwYXJhdGUgYnkgTWVkaWFXaWtpJ3MgbG9nZ2luZyxcblx0XHQgKiB1c2luZyBNb3JlYml0cy5pcC5nZXQ2NCBwcm92aWRlcyBhIG1vZGljdW0gb2YgcmVsaWVmIGluIHRoaXNlIGNhc2UuXG5cdFx0ICovXG5cdFx0Y29uc3Qgc2l4dHlGb3VyID0gTW9yZWJpdHMuaXAuZ2V0NjQobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpO1xuXHRcdGlmIChzaXh0eUZvdXIgJiYgc2l4dHlGb3VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSkge1xuXHRcdFx0Y29uc3QgYmxvY2s2NGZpZWxkID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazmjaLkuLovNjTmrrXlsIHnpoEnLCAn6L2J5o+b54K6LzY05q615bCB6Y6WJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF82NCcsXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0c3R5bGU6ICdtYXJnaW4tYm90dG9tOiAwLjVlbScsXG5cdFx0XHRcdGxhYmVsOiBbd2dVTFMoJ+ebtOaOpeWwgeemgS82NOauteacieebiuaXoOWus+OAgicsICfnm7TmjqXlsIHpjpYvNjTmrrXmnInnm4rnhKHlrrPjgIInKV0sXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnYmxvY2s2NCcsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9ibG9jazY0LFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0VG9CbG9jazY0JyksXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlLnmiJDlsIHnpoEvNjQnLCAn5pS55oiQ5bCB6Y6WLzY0JyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrNjQnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogTW9yZWJpdHMuaXAuaXNSYW5nZShtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSlcblx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+WwhuS4jeS8muWPkemAgeaooeadv+mAmuefpeOAgicsICflsIfkuI3mnIPnmbzpgIHmqKHmnb/pgJrnn6XjgIInKVxuXHRcdFx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5Lu75L2V5qih5p2/5bCG5Lya5Y+R6YCB57uZ5Y6f5aeLSVDvvJonLCAn5Lu75L2V5qih5p2/5bCH5pyD55m86YCB57Wm5Y6f5aeLSVDvvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aooeadv+mAiemhuScsICfmqKHmnb/pgbjpoIUnKSxcblx0XHRcdG5hbWU6ICdmaWVsZF90ZW1wbGF0ZV9vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCJ6aG5JywgJ+WwgemOlumBuOmghScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX2Jsb2NrX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdGFnX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHpgInpobknLCAn6Kej6Zmk5bCB6Y6W6YG46aCFJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdW5ibG9ja19vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRyZXN1bHQucm9vdCA9IHJlc3VsdDtcblx0XHRUd2lua2xlLmJsb2NrLmZldGNoVXNlckluZm8oKCkgPT4ge1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdGNvbnN0ICRmb3JtID0gJChyZXN1bHQpO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGFnXScpLnBhcmVudCgpLCB0cnVlKTtcblx0XHRcdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KFxuXHRcdFx0XHRcdFx0JGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKS5wYXJlbnQoKSxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBUb2dnbGUgaW5pdGlhbCBwYXJ0aWFsIHN0YXRlIGRlcGVuZGluZyBvbiBwcmlvciBibG9jayB0eXBlLFxuXHRcdFx0Ly8gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdFRvUGFydGlhbEJsb2NrcyBwcmVmXG5cdFx0XHRpZiAoYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRcdCQocmVzdWx0KVxuXHRcdFx0XHRcdC5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpXG5cdFx0XHRcdFx0LnByb3AoJ2NoZWNrZWQnLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY2xlYW4gdXAgcHJlc2V0IGRhdGEgKGRlZmF1bHRzLCBldGMuKSwgZG9uZSBleGFjdGx5IG9uY2UsIG11c3QgYmUgYmVmb3JlIFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbiBpcyBjYWxsZWRcblx0XHRcdFR3aW5rbGUuYmxvY2sudHJhbnNmb3JtQmxvY2tQcmVzZXRzKCk7XG5cdFx0XHQvLyBpbml0IHRoZSBjb250cm9scyBhZnRlciB1c2VyIGFuZCBibG9jayBpbmZvIGhhdmUgYmVlbiBmZXRjaGVkXG5cdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0aWYgKHJlc3VsdC5ibG9jazY0ICYmIHJlc3VsdC5ibG9jazY0LmNoZWNrZWQpIHtcblx0XHRcdFx0Ly8gQ2FsbHMgdGhlIHNhbWUgY2hhbmdlX2FjdGlvbiBldmVudCBvbmNlIGZpbmlzaGVkXG5cdFx0XHRcdHJlc3VsdC5ibG9jazY0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdC5hY3Rpb250eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0Ly8gU3RvcmUgZmV0Y2hlZCB1c2VyIGRhdGEsIG9ubHkgcmVsZXZhbnQgaWYgc3dpdGNoaW5nIElQdjYgdG8gYSAvNjRcblx0VHdpbmtsZS5ibG9jay5mZXRjaGVkRGF0YSA9IHt9O1xuXHQvLyBQcm9jZXNzZXMgdGhlIGRhdGEgZnJvbSBhIGEgcXVlcnkgcmVzcG9uc2UsIHNlcGFyYXRlZCBmcm9tXG5cdC8vIFR3aW5rbGUuYmxvY2suZmV0Y2hVc2VySW5mbyB0byBhbGxvdyByZXByb2Nlc3Npbmcgb2YgYWxyZWFkeS1mZXRjaGVkIGRhdGFcblx0VHdpbmtsZS5ibG9jay5wcm9jZXNzVXNlckluZm8gPSAoZGF0YSwgZm4pID0+IHtcblx0XHRsZXQgW2Jsb2NraW5mb10gPSBkYXRhLnF1ZXJ5LmJsb2Nrcztcblx0XHRjb25zdCBbdXNlcmluZm9dID0gZGF0YS5xdWVyeS51c2Vycztcblx0XHQvLyBJZiBhbiBJUCBpcyBibG9ja2VkICphbmQqIHJhbmdlYmxvY2tlZCwgdGhlIGFib3ZlIGZpbmRzXG5cdFx0Ly8gd2hpY2hldmVyIGJsb2NrIGlzIG1vcmUgcmVjZW50LCBub3QgbmVjZXNzYXJpbHkgY29ycmVjdC5cblx0XHQvLyBUaHJlZSBzZWVtcy4uLiB1bmxpa2VseVxuXHRcdGlmIChkYXRhLnF1ZXJ5LmJsb2Nrcy5sZW5ndGggPiAxICYmIGJsb2NraW5mby51c2VyICE9PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRbLCBibG9ja2luZm9dID0gZGF0YS5xdWVyeS5ibG9ja3M7XG5cdFx0fVxuXHRcdC8vIENhY2hlIHJlc3BvbnNlLCB1c2VkIHdoZW4gdG9nZ2xpbmcgLzY0IGJsb2Nrc1xuXHRcdFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbdXNlcmluZm8ubmFtZV0gPSBkYXRhO1xuXHRcdFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkID0gISF1c2VyaW5mby51c2VyaWQ7XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9XG5cdFx0XHRcdCEhdXNlcmluZm8uZ3JvdXBtZW1iZXJzaGlwcyAmJlxuXHRcdFx0XHR1c2VyaW5mby5ncm91cG1lbWJlcnNoaXBzXG5cdFx0XHRcdFx0Lm1hcCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuZ3JvdXA7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuaW5jbHVkZXMoJ2JvdCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9IGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoYmxvY2tpbmZvKSB7XG5cdFx0XHQvLyBoYW5kbGUgZnJ1c3RyYXRpbmcgc3lzdGVtIG9mIGludmVydGVkIGJvb2xlYW4gdmFsdWVzXG5cdFx0XHRibG9ja2luZm8uZGlzYWJsZXRhbGsgPSBibG9ja2luZm8uYWxsb3d1c2VydGFsayA9PT0gdW5kZWZpbmVkO1xuXHRcdFx0YmxvY2tpbmZvLmhhcmRibG9jayA9IGJsb2NraW5mby5hbm9ub25seSA9PT0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHQvLyB3aWxsIHVuZGVmaW5lIGlmIG5vIGJsb2NrcyBwcmVzZW50XG5cdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvID0gYmxvY2tpbmZvO1xuXHRcdGJsb2NrZWRVc2VyTmFtZSA9IFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyAmJiBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8udXNlcjtcblx0XHQvLyBTZW1pLWJ1c3RlZCBvbiByYW5nZXMuXG5cdFx0Ly8gQmFzaWNhbGx5LCBsb2dldmVudHMgZG9lc24ndCB0cmVhdCBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCByYW5nZXNcblx0XHQvLyBhcyBlcXVpdmFsZW50LCBtZWFuaW5nIGFueSBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCBJUCByYW5nZSBpc1xuXHRcdC8vIG1pc2ludGVycHJldGVkIGJ5IHRoZSBsb2cgdGhyb3VnaG91dC4gIFdpdGhvdXQgbG9nZXZlbnRzXG5cdFx0Ly8gcmVkaXJlY3RpbmcgKGxpa2UgU3BlY2lhbDpCbG9jayBkb2VzKSB3ZSB3b3VsZCBuZWVkIGEgZnVuY3Rpb24gdG9cblx0XHQvLyBwYXJzZSByYW5nZXMsIHdoaWNoIGlzIGEgcGFpbi4gIElQVXRpbHMgaGFzIHRoZSBjb2RlLCBidXQgaXQnZCBiZSBhXG5cdFx0Ly8gbG90IG9mIGNydWZ0IGZvciBvbmUgcHVycG9zZS5cblx0XHRUd2lua2xlLmJsb2NrLmhhc0Jsb2NrTG9nID0gISFkYXRhLnF1ZXJ5LmxvZ2V2ZW50cy5sZW5ndGg7XG5cdFx0VHdpbmtsZS5ibG9jay5ibG9ja0xvZyA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgJiYgZGF0YS5xdWVyeS5sb2dldmVudHM7XG5cdFx0Ly8gVXNlZCBsYXRlciB0byBjaGVjayBpZiBibG9jayBzdGF0dXMgY2hhbmdlZCB3aGlsZSBmaWxsaW5nIG91dCB0aGUgZm9ybVxuXHRcdFR3aW5rbGUuYmxvY2suYmxvY2tMb2dJZCA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgPyBkYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5sb2dpZCA6IGZhbHNlO1xuXHRcdGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJldHVybiBmbigpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5mZXRjaFVzZXJJbmZvID0gKGZuKSA9PiB7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGxpc3Q6ICdibG9ja3N8dXNlcnN8bG9nZXZlbnRzJyxcblx0XHRcdGxldHlwZTogJ2Jsb2NrJyxcblx0XHRcdGxlbGltaXQ6IDIsXG5cdFx0XHRsZXRpdGxlOiBgVXNlcjoke3JlbGV2YW50VXNlck5hbWV9YCxcblx0XHRcdGJrcHJvcDogJ2V4cGlyeXxyZWFzb258ZmxhZ3N8cmVzdHJpY3Rpb25zfHJhbmdlfHVzZXInLFxuXHRcdFx0dXN1c2VyczogcmVsZXZhbnRVc2VyTmFtZSxcblx0XHR9O1xuXHRcdC8vIGJrdXNlcnMgZG9lc24ndCBjYXRjaCBzaW5nbGUgSVBzIGJsb2NrZWQgYXMgcGFydCBvZiBhIHJhbmdlIGJsb2NrXG5cdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MocmVsZXZhbnRVc2VyTmFtZSwgdHJ1ZSkpIHtcblx0XHRcdHF1ZXJ5LmJraXAgPSByZWxldmFudFVzZXJOYW1lO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGdyb3VwbWVtYmVyc2hpcHMgb25seSByZWxldmFudCBmb3IgcmVnaXN0ZXJlZCB1c2Vyc1xuXHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3VwbWVtYmVyc2hpcHMnO1xuXHRcdH1cblx0XHRhcGkuZ2V0KHF1ZXJ5KS50aGVuKFxuXHRcdFx0KGRhdGEpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5wcm9jZXNzVXNlckluZm8oZGF0YSwgZm4pO1xuXHRcdFx0fSxcblx0XHRcdChlcnJvcikgPT4ge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdCgkYm9keS5maW5kKCdkaXZbbmFtZT1cImN1cnJlbnRibG9ja1wiXSBzcGFuJykubGFzdCgpWzBdKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4od2luZG93LndnVUxTKCfmipPlj5bnlKjmiLfkv6Hmga/lh7rplJknLCAn5oqT5Y+W5L2/55So6ICF6LOH6KiK5Ye66YyvJyksIGVycm9yKTtcblx0XHRcdH1cblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCA9IChmaWVsZHNldCkgPT4ge1xuXHRcdFR3aW5rbGUuYmxvY2tbJChmaWVsZHNldCkucHJvcCgnbmFtZScpXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgZWwgb2YgJChmaWVsZHNldCkuc2VyaWFsaXplQXJyYXkoKSkge1xuXHRcdFx0Ly8gbmFtZXNwYWNlcyBhbmQgcGFnZXMgZm9yIHBhcnRpYWwgYmxvY2tzIGFyZSBvdmVyd3JpdHRlblxuXHRcdFx0Ly8gaGVyZSwgYnV0IHdlJ3JlIGhhbmRsaW5nIHRoZW0gZWxzZXdoZXJlIHNvIHRoYXQncyBmaW5lXG5cdFx0XHRUd2lua2xlLmJsb2NrWyQoZmllbGRzZXQpLnByb3AoJ25hbWUnKV1bZWwubmFtZV0gPSBlbC52YWx1ZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2Jsb2NrNjQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0ICRmb3JtID0gJChlLnRhcmdldC5mb3JtKTtcblx0XHRjb25zdCAkYmxvY2s2NCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWJsb2NrNjRdJyk7XG5cdFx0Ly8gU2hvdy9oaWRlIGJsb2NrNjQgYnV0dG9uXG5cdFx0Ly8gU2luZ2xlIElQdjYsIG9yIElQdjYgcmFuZ2Ugc21hbGxlciB0aGFuIGEgLzY0XG5cdFx0Y29uc3QgcHJpb3JOYW1lID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRpZiAoJGJsb2NrNjQuaXMoJzpjaGVja2VkJykpIHtcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgPSBNb3JlYml0cy5pcC5nZXQ2NChtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHR9XG5cdFx0Ly8gTm8gdGVtcGxhdGVzIGZvciByYW5nZXMsIGJ1dCBpZiB0aGUgb3JpZ2luYWwgdXNlciBpcyBhIHNpbmdsZSBJUCwgb2ZmZXIgdGhlIG9wdGlvblxuXHRcdC8vIChkb25lIHNlcGFyYXRlbHkgaW4gVHdpbmtsZS5ibG9jay5jYWxsYmFjay5pc3N1ZV90ZW1wbGF0ZSlcblx0XHRjb25zdCBvcmlnaW5hbElzUmFuZ2UgPSBNb3JlYml0cy5pcC5pc1JhbmdlKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKTtcblx0XHQkZm9ybVxuXHRcdFx0LmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRlbXBsYXRlXScpXG5cdFx0XHQucHJvcCgnZGlzYWJsZWQnLCBvcmlnaW5hbElzUmFuZ2UpXG5cdFx0XHQucHJvcCgnY2hlY2tlZCcsICFvcmlnaW5hbElzUmFuZ2UpO1xuXHRcdC8vIFJlZmV0Y2gvcmVwcm9jZXNzIHVzZXIgaW5mbyB0aGVuIHJlZ2VuZXJhdGUgdGhlIG1haW4gY29udGVudFxuXHRcdGNvbnN0IHJlZ2VuZXJhdGVGb3JtID0gKCkgPT4ge1xuXHRcdFx0Ly8gVHdlYWsgdGl0bGViYXIgdGV4dC4gIEluIHRoZW9yeSwgd2UgY291bGQgc2F2ZSB0aGUgZGlhbG9nXG5cdFx0XHQvLyBhdCBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiB1c2UgYC5zZXRUaXRsZWAgb3Jcblx0XHRcdC8vIGBkaWFsb2coJ29wdGlvbicsICd0aXRsZScpYCwgYnV0IGluIHByYWN0aWNlIHRoYXQgc3dhbGxvd3Ncblx0XHRcdC8vIHRoZSBzY3JpcHROYW1lIGFuZCByZXF1aXJlcyBgLmRpc3BsYXlgaW5nLCB3aGljaCBqdW1wcyB0aGVcblx0XHRcdC8vIHdpbmRvdy4gIEl0J3MganVzdCBhIGxpbmUgb2YgdGV4dCwgc28gdGhpcyBpcyBmaW5lLlxuXHRcdFx0Y29uc3QgdGl0bGVCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudWktZGlhbG9nLXRpdGxlJykuZmlyc3RDaGlsZC5uZXh0U2libGluZztcblx0XHRcdHRpdGxlQmFyLm5vZGVWYWx1ZSA9IHRpdGxlQmFyLm5vZGVWYWx1ZS5yZXBsYWNlKHByaW9yTmFtZSwgcmVsZXZhbnRVc2VyTmFtZSk7XG5cdFx0XHQvLyBDb3JyZWN0IHBhcnRpYWwgc3RhdGVcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJykucHJvcCgnY2hlY2tlZCcsIFR3aW5rbGUuZ2V0UHJlZignZGVmYXVsdFRvUGFydGlhbEJsb2NrcycpKTtcblx0XHRcdGlmIChibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0JGZvcm1cblx0XHRcdFx0XHQuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKVxuXHRcdFx0XHRcdC5wcm9wKCdjaGVja2VkJywgVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnBhcnRpYWwgPT09ICcnKTtcblx0XHRcdH1cblx0XHRcdC8vIFNldCBjb250ZW50IGFwcHJvcHJpYXRlbHlcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbihlKTtcblx0XHR9O1xuXHRcdGlmIChUd2lua2xlLmJsb2NrLmZldGNoZWREYXRhW3JlbGV2YW50VXNlck5hbWVdKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnByb2Nlc3NVc2VySW5mbyhUd2lua2xlLmJsb2NrLmZldGNoZWREYXRhW3JlbGV2YW50VXNlck5hbWVdLCByZWdlbmVyYXRlRm9ybSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suZmV0Y2hVc2VySW5mbyhyZWdlbmVyYXRlRm9ybSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9hY3Rpb24gPSAoZSkgPT4ge1xuXHRcdGxldCBmaWVsZF9wcmVzZXQ7XG5cdFx0bGV0IGZpZWxkX3RlbXBsYXRlX29wdGlvbnM7XG5cdFx0bGV0IGZpZWxkX2Jsb2NrX29wdGlvbnM7XG5cdFx0bGV0IGZpZWxkX3RhZ19vcHRpb25zO1xuXHRcdGxldCBmaWVsZF91bmJsb2NrX29wdGlvbnM7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGUudGFyZ2V0LmZvcm0pO1xuXHRcdC8vIE1ha2UgaWZzIHNob3J0ZXJcblx0XHRjb25zdCAkYmxvY2sgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1ibG9ja10nKTtcblx0XHRsZXQgYmxvY2tCb3ggPSAkYmxvY2suaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgJHRlbXBsYXRlID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJyk7XG5cdFx0bGV0IHRlbXBsYXRlQm94ID0gJHRlbXBsYXRlLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0ICR0YWcgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10YWddJyk7XG5cdFx0Y29uc3QgdGFnQm94ID0gJHRhZy5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCAkcHJvdGVjdCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXByb3RlY3RdJyk7XG5cdFx0Y29uc3QgJHBhcnRpYWwgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpO1xuXHRcdGNvbnN0IHBhcnRpYWxCb3ggPSAkcGFydGlhbC5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCAkdW5ibG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXVuYmxvY2tdJyk7XG5cdFx0Y29uc3QgdW5ibG9ja0JveCA9ICR1bmJsb2NrLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGxldCBibG9ja0dyb3VwID0gcGFydGlhbEJveCA/IFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHNQYXJ0aWFsIDogVHdpbmtsZS5ibG9jay5ibG9ja0dyb3Vwcztcblx0XHRpZiAoZS50YXJnZXQudmFsdWUgPT09ICd1bmJsb2NrJykge1xuXHRcdFx0aWYgKCFUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pIHtcblx0XHRcdFx0JHVuYmxvY2sucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn55So5oi35rKh5pyJ6KKr5bCB56aBJywgJ+S9v+eUqOiAheaykuacieiiq+WwgemOlicpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQkYmxvY2sucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdGJsb2NrQm94ID0gZmFsc2U7XG5cdFx0XHQkdGVtcGxhdGUucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdHRlbXBsYXRlQm94ID0gZmFsc2U7XG5cdFx0XHQkdGFnLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHQkcHJvdGVjdC5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0JHBhcnRpYWwucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHVuYmxvY2sucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHR9XG5cdFx0JHBhcnRpYWwucHJvcCgnZGlzYWJsZWQnLCAhYmxvY2tCb3ggJiYgIXRlbXBsYXRlQm94KTtcblx0XHQvLyBBZGQgY3VycmVudCBibG9jayBwYXJhbWV0ZXJzIGFzIGRlZmF1bHQgcHJlc2V0XG5cdFx0Y29uc3QgcHJpb3IgPSB7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPliY3lsIHnpoEnLCAn55uu5YmN5bCB6Y6WJyksXG5cdFx0fTtcblx0XHRpZiAoYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IgPSBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm87XG5cdFx0XHQvLyB2YWx1ZSBub3QgYSB2YWxpZCB0ZW1wbGF0ZSBzZWxlY3Rpb24sIGNob3NlbiBiZWxvdyBieSBzZXR0aW5nIHRlbXBsYXRlTmFtZVxuXHRcdFx0cHJpb3IubGlzdCA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W9k+WJjeWwgeemgeiuvue9ricsICfnm67liY3lsIHpjpboqK3lrponKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3ByaW9yJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0XHQvLyBBcnJheXMgb2Ygb2JqZWN0cyBhcmUgYW5ub3lpbmcgdG8gY2hlY2tcblx0XHRcdGlmIChcblx0XHRcdFx0IWJsb2NrR3JvdXAuc29tZSgoYmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gYmcubGFiZWwgPT09IHByaW9yLmxhYmVsO1xuXHRcdFx0XHR9KVxuXHRcdFx0KSB7XG5cdFx0XHRcdGJsb2NrR3JvdXAucHVzaChwcmlvcik7XG5cdFx0XHR9XG5cdFx0XHQvLyBBbHdheXMgZW5zdXJlIHByb3BlciB0ZW1wbGF0ZSBleGlzdHMvaXMgc2VsZWN0ZWQgd2hlbiBzd2l0Y2hpbmcgbW9kZXNcblx0XHRcdGlmIChwYXJ0aWFsQm94KSB7XG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mby5wcmlvci50ZW1wbGF0ZU5hbWUgPSBNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShcblx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8uZXhwaXJ5XG5cdFx0XHRcdClcblx0XHRcdFx0XHQ/ICd1dy1wYmxvY2tpbmRlZidcblx0XHRcdFx0XHQ6ICd1dy1wYmxvY2snO1xuXHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZCkge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IudGVtcGxhdGVOYW1lID0gTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoXG5cdFx0XHRcdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeVxuXHRcdFx0XHQpXG5cdFx0XHRcdFx0PyAndXctYmxvY2tpbmRlZidcblx0XHRcdFx0XHQ6ICd1dy1ibG9jayc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IudGVtcGxhdGVOYW1lID0gJ3V3LWFibG9jayc7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEJ1dCBmaXJzdCByZW1vdmUgYW55IHByaW9yIHByaW9yXG5cdFx0XHRibG9ja0dyb3VwID0gYmxvY2tHcm91cC5maWx0ZXIoKGJnKSA9PiB7XG5cdFx0XHRcdHJldHVybiBiZy5sYWJlbCAhPT0gcHJpb3IubGFiZWw7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGJvZHkuZmluZCgnW25hbWU9ZmllbGRfYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGJvZHkuZmluZCgnW25hbWU9ZmllbGRfdGVtcGxhdGVfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGJvZHkuZmluZCgnW25hbWU9ZmllbGRfdGFnX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX3VuYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0aWYgKGJsb2NrQm94KSB7XG5cdFx0XHRmaWVsZF9wcmVzZXQgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqQnLCAn6aCQ6KitJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF9wcmVzZXQnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9wcmVzZXQuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdG5hbWU6ICdwcmVzZXQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6npu5jorqTvvJonLCAn6YG45pOH6aCQ6Kit77yaJyksXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9wcmVzZXQsXG5cdFx0XHRcdGxpc3Q6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZmlsdGVyZWRfYmxvY2tfZ3JvdXBzKGJsb2NrR3JvdXApLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCJ6aG5JywgJ+WwgemOlumBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfYmxvY2tfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdG5hbWU6ICdjdXJyZW50YmxvY2snLFxuXHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnaGFzYmxvY2tsb2cnLFxuXHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRuYW1lOiAnZXhwaXJ5X3ByZXNldCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i/h+acn+aXtumXtO+8micsICfpgY7mnJ/mmYLplpPvvJonKSxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2V4cGlyeSxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5iScsICfoh6roqIInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnY3VzdG9tJyxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCcz5bCP5pe2JywgJzPlsI/mmYInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMyBob3VycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCcxMuWwj+aXticsICcxMuWwj+aZgicpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxMiBob3VycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzHlpKknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIGRheScsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCczMeWwj+aXticsICczMeWwj+aZgicpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICczMSBob3VycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzLlpKknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcyIGRheXMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcz5aSpJyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMyBkYXlzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHlkagnLCAnMemAsScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIHdlZWsnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMuWRqCcsICcy6YCxJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzIgd2Vla3MnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMeS4quaciCcsICcx5YCL5pyIJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzEgbW9udGgnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+S4quaciCcsICcz5YCL5pyIJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzMgbW9udGhzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzbkuKrmnIgnLCAnNuWAi+aciCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICc2IG1vbnRocycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzHlubQnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIHllYXInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcy5bm0Jyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMiB5ZWFycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJzPlubQnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICczIHllYXJzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdG5hbWU6ICdleHBpcnknLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnov4fmnJ/ml7bpl7QnLCAn6Ieq6KiC6YGO5pyf5pmC6ZaTJyksXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oKo5Y+v5Lul5L2/55So55u45a+55pe26Ze077yM5aaC4oCcMSBtaW51dGXigJ3miJbigJwxOSBkYXlz4oCd77yb5oiW57ud5a+55pe26Ze077yM4oCceXl5eW1tZGRoaG1t4oCd77yI5aaC4oCcMjAwNjAyMDExNDA14oCd5pivMjAwNuW5tDLmnIgx5pelMTQ6MDUgVVRD44CC77yJJyxcblx0XHRcdFx0XHQn5oKo5Y+v5Lul5L2/55So55u45bCN5pmC6ZaT77yM5aaC44CMMSBtaW51dGXjgI3miJbjgIwxOSBkYXlz44CN77yb5oiW57WV5bCN5pmC6ZaT77yM44CMeXl5eW1tZGRoaG1t44CN77yI5aaC44CMMjAwNjAyMDExNDA144CN5pivMjAwNuW5tDLmnIgx5pelMTQ6MDUgVVRD44CC77yJJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHR2YWx1ZTogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLmV4cGlyeSB8fCBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMudGVtcGxhdGVfZXhwaXJ5LFxuXHRcdFx0fSk7XG5cdFx0XHRpZiAocGFydGlhbEJveCkge1xuXHRcdFx0XHQvLyBQYXJ0aWFsIGJsb2NrXG5cdFx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0XHRuYW1lOiAncGFnZXJlc3RyaWN0aW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5bCB56aBJywgJ+mggemdouWwgemOlicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+acgOWkmjEw5Liq6aG16Z2i44CCJywgJ+acgOWkmjEw5YCL6aCB6Z2i44CCJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBucyA9IGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0XHRuYW1lOiAnbmFtZXNwYWNlcmVzdHJpY3Rpb25zJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflkb3lkI3nqbrpl7TlsIHnpoEnLCAn5ZG95ZCN56m66ZaT5bCB6Y6WJyksXG5cdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oyH5a6a5bCB56aB55qE5ZG95ZCN56m66Ze044CCJywgJ+aMh+WumuWwgemOlueahOWRveWQjeepuumWk+OAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9yIChjb25zdCBbbnVtYmVyLCBuYW1lXSBvZiBPYmplY3QuZW50cmllcyhtZW51Rm9ybWF0dGVkTmFtZXNwYWNlcykpIHtcblx0XHRcdFx0XHQvLyBJZ25vcmUgLTE6IFNwZWNpYWw7IC0yOiBNZWRpYTsgYW5kIDIzMDAtMjMwMzogR2FkZ2V0ICh0YWxrKSBhbmQgR2FkZ2V0IGRlZmluaXRpb24gKHRhbGspXG5cdFx0XHRcdFx0aWYgKG51bWJlciA+PSAwICYmIG51bWJlciA8IDgzMCkge1xuXHRcdFx0XHRcdFx0bnMuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBuYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogbnVtYmVyLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBibG9ja29wdGlvbnMgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMubm9jcmVhdGUsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56aB5q2i5Yib5bu66LSm5Y+3JywgJ+emgeatouW7uueri+izrOiZnycpLFxuXHRcdFx0XHRcdG5hbWU6ICdub2NyZWF0ZScsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy5ub2VtYWlsLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUteWtkOmCruS7tuWBnOeUqCcsICfpm7vlrZDpg7Xku7blgZznlKgnKSxcblx0XHRcdFx0XHRuYW1lOiAnbm9lbWFpbCcsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy5kaXNhYmxldGFsayxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73nvJbovpHoh6rlt7HnmoTorqjorrrpobUnLCAn5LiN6IO957eo6Lyv6Ieq5bex55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGV0YWxrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHBhcnRpYWxCb3hcblx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjpg6jliIblsIHnpoHvvIzkuI3lupTpgInmi6nmraTpobnvvIzpmaTpnZ7mgqjkuZ/mg7PopoHnpoHmraLnvJbovpHnlKjmiLforqjorrrpobXjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjpg6jliIblsIHpjpbvvIzkuI3mh4npgbjmk4fmraTpoIXvvIzpmaTpnZ7mgqjkuZ/mg7PopoHnpoHmraLnt6jovK/kvb/nlKjogIXoqI7oq5bpoIHjgIInXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdDogJycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuYXV0b2Jsb2NrLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWKqOWwgeemgScsICfoh6rli5XlsIHpjpYnKSxcblx0XHRcdFx0XHRuYW1lOiAnYXV0b2Jsb2NrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuaGFyZGJsb2NrLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mYu+atoueZu+W9leeUqOaIt+S9v+eUqOivpUlQ5Zyw5Z2A57yW6L6RJywgJ+mYu+atoueZu+WFpeS9v+eUqOiAheS9v+eUqOipsklQ5L2N5Z2A57eo6LyvJyksXG5cdFx0XHRcdFx0bmFtZTogJ2hhcmRibG9jaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRibG9ja29wdGlvbnMucHVzaChcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy53YXRjaHVzZXIsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55uR6KeG6K+l55So5oi355qE55So5oi36aG15ZKM6K6o6K666aG1JywgJ+ebo+imluipsuS9v+eUqOiAheeahOS9v+eUqOiAhemggemdouWSjOiojuirlumggScpLFxuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaHVzZXInLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOW9k+WJjeeahOegtOWdj+S4reeahOivt+axgicsICfmqJnoqJjnlbbliY3nmoTnoLTlo57kuK3nmoToq4vmsYInKSxcblx0XHRcdFx0XHRuYW1lOiAnY2xvc2V2aXAnLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdibG9ja29wdGlvbnMnLFxuXHRcdFx0XHRsaXN0OiBibG9ja29wdGlvbnMsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55CG55Sx77yI55So5LqO5bCB56aB5pel5b+X77yJ77yaJywgJ+eQhueUse+8iOeUqOaWvOWwgemOluaXpeiqjO+8ie+8micpLFxuXHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfor7fogIPomZHlnKjpu5jorqTnmoTmtojmga/kuK3liqDlhaXmnInnlKjnmoTor6bnu4bkv6Hmga/jgIInLFxuXHRcdFx0XHRcdCfoq4vogIPmha7lnKjpoJDoqK3nmoToqIrmga/kuK3liqDlhaXmnInnlKjnmoToqbPntLDos4foqIrjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMucmVhc29uLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnZmlsZXJsb2dfbGFiZWwnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj4Lop4HvvJonLCAn5Y+D6KaL77yaJyksXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWwgIWltcG9ydGFudCcsXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5Zyo5bCB56aB55CG55Sx5Lit5qCH5riF54m55q6K5oOF5Ya15Lul5L6b5YW25LuW566h55CG5ZGY5Y+C6ICDJyxcblx0XHRcdFx0XHQn5Zyo5bCB6Y6W55CG55Sx5Lit5qiZ5riF54m55q6K5oOF5rOB5Lul5L6b5YW25LuW566h55CG5ZOh5Y+D6ICDJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdmaWx0ZXJfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOaXpeW/lycsICfpgY7mv77lmajml6XoqownKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn6L+H5ruk5Zmo5pel5b+XJywgJ+mBjua/vuWZqOaXpeiqjCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2RlbGV0ZWRfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWIoOmZpOeahOe8lui+kScsICflt7LliKrpmaTnmoTnt6jovK8nKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5bey5Yig6Zmk55qE57yW6L6RJywgJ+W3suWIqumZpOeahOe3qOi8rycpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2ZpbHRlcl9zZWVfYWxzbycsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnRvZ2dsZV9zZWVfYWxzb3MsXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1yaWdodDo1cHgnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG1JywgJ+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobUnLCAn5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnZmlsdGVyX3NlZV9hbHNvJyxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudG9nZ2xlX3NlZV9hbHNvcyxcblx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luLXJpZ2h0OjVweCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov4fljrvnmoTlsIHnpoHorrDlvZUnLCAn6YGO5Y6755qE5bCB6Y6W6KiY6YyEJyksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+i/h+WOu+eahOWwgeemgeiusOW9lScsICfpgY7ljrvnmoTlsIHpjpboqJjpjIQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHQvLyBZZXQtYW5vdGhlci1sb2dldmVudHMtZG9lc24ndC1oYW5kbGUtcmFuZ2VzLXdlbGxcblx0XHRcdGlmIChibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoaWRkZW4nLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWJsb2NrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRlbXBsYXRlQm94KSB7XG5cdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qih5p2/6YCJ6aG5JywgJ+aooeadv+mBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdGVtcGxhdGVfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdG5hbWU6ICd0ZW1wbGF0ZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeiuqOiuuumhteaooeadv++8micsICfpgbjmk4foqI7oq5bpoIHmqKHmnb/vvJonKSxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyhibG9ja0dyb3VwLCB0cnVlKSxcblx0XHRcdFx0dmFsdWU6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy50ZW1wbGF0ZSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mTvuaOpemhtemdoicsICfpgKPntZDpoIHpnaInKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+WPr+S7pemaj+mAmuefpemTvuaOpemhtemdou+8jOS+i+WmguegtOWdj+eahOebruagh+OAguayoeacieadoeebrumcgOimgemTvuaOpeWImeivt+eVmeepuuOAgicsXG5cdFx0XHRcdFx0J+WPr+S7pemaqOmAmuefpemAo+e1kOmggemdou+8jOS+i+WmguegtOWjnueahOebruaomeOAguaykuacieaineebrumcgOimgemAo+e1kOWJh+iri+eVmeepuuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0Ly8gT25seSB2aXNpYmxlIGlmIHBhcnRpYWwgYW5kIG5vdCBibG9ja2luZ1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeiMg+WbtCcsICflsIHpjpbnr4TlnI0nKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+mYu+atoueUqOaIt+e8lui+keeahOmhtemdouaIluWRveWQjeepuumXtOeahOWPr+mAieivtOaYjuOAgicsXG5cdFx0XHRcdFx0J+mYu+atouS9v+eUqOiAhee3qOi8r+eahOmggemdouaIluWRveWQjeepuumWk+eahOWPr+mBuOiqquaYjuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKCFibG9ja0JveCkge1xuXHRcdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAndGVtcGxhdGVfZXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogJ+Wwgeemgeacn+mZkO+8micsXG5cdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5bCB56aB5pe26ZW/77yM5aaCMjTlsI/ml7bjgIEy5ZGo44CB5peg6ZmQ5pyf562J44CCJywgJ+WwgemOluaZgumVt++8jOWmgjI05bCP5pmC44CBMumAseOAgeeEoemZkOacn+etieOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bmFtZTogJ2Jsb2NrX3JlYXNvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+KAnOeUseS6juKApuKApuaCqOW3suiiq+WwgeemgeKAnScsICfjgIznlLHmlrzigKbigKbmgqjlt7LooqvlsIHpjpbjgI0nKSxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCflj6/pgInnmoTnkIbnlLHvvIznlKjkuo7mm7/mjaLpu5jorqTnkIbnlLHjgILlj6rlnKjluLjop4TlsIHnpoHmqKHmnb/kuK3mnInmlYjjgIInLFxuXHRcdFx0XHRcdCflj6/pgbjnmoTnkIbnlLHvvIznlKjmlrzmm7/mj5vpoJDoqK3nkIbnlLHjgILlj6rlnKjluLjopo/lsIHpjpbmqKHmnb/kuK3mnInmlYjjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYmxvY2tfcmVhc29uLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKGJsb2NrQm94KSB7XG5cdFx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdibGFua19kdXJhdGlvbicsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3lnKjmqKHmnb/kuK3ljIXlkKvlsIHnpoHmnJ/pmZAnLCAn5LiN5Zyo5qih5p2/5Lit5YyF5ZCr5bCB6Y6W5pyf6ZmQJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ibGFua19kdXJhdGlvbixcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIbkvJrmmL7npLrigJzkuIDmrrXml7bpl7TigJ3ogIzkuI3mmK/lhbfkvZPml7bplb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIfmnIPpoa/npLrjgIzkuIDmrrXmmYLplpPjgI3ogIzkuI3mmK/lhbfpq5TmmYLplbcnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73nvJbovpHoh6rlt7HnmoTorqjorrrpobUnLCAn5LiN6IO957eo6Lyv6Ieq5bex55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub3RhbGsnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm90YWxrLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgeemgeaooeadv+S4reaMh+aYjuivpeeUqOaIt+e8lui+keiuqOiuuumhteeahOadg+mZkOW3suiiq+enu+mZpCcsXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgemOluaooeadv+S4reaMh+aYjuipsuS9v+eUqOiAhee3qOi8r+iojuirlumggeeahOasiumZkOW3suiiq+enu+mZpCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4jeiDveWPkemAgeeUteWtkOmCruS7ticsICfkuI3og73lgrPpgIHpm7vlrZDpg7Xku7YnKSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ25vZW1haWxfdGVtcGxhdGUnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9lbWFpbF90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLflj5HpgIHnlLXlrZDpgq7ku7bnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlgrPpgIHpm7vlrZDpg7Xku7bnmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73liJvlu7rotKblj7cnLCAn5LiN6IO95bu656uL6LOs6JmfJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2NyZWF0ZV90ZW1wbGF0ZScsXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2NyZWF0ZV90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLfliJvlu7rotKblj7fnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlu7rnq4vos6zomZ/nmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgJHByZXZpZXdsaW5rID0gJChgPGEgaWQ9XCJ0d2lua2xlYmxvY2stcHJldmlldy1saW5rXCI+JHt3aW5kb3cud2dVTFMoJ+mihOiniCcsICfpoJDopr0nKX08L2E+YCk7XG5cdFx0XHQkcHJldmlld2xpbmsub2ZmKCdjbGljaycpLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcmV2aWV3KCRmb3JtWzBdKTtcblx0XHRcdH0pO1xuXHRcdFx0JHByZXZpZXdsaW5rLmNzcyh7XG5cdFx0XHRcdGN1cnNvcjogJ3BvaW50ZXInLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRpZDogJ2Jsb2NrcHJldmlldycsXG5cdFx0XHRcdGxhYmVsOiBbJHByZXZpZXdsaW5rWzBdXSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0aWQ6ICd0d2lua2xlYmxvY2stcHJldmlld2JveCcsXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKHRhZ0JveCkge1xuXHRcdFx0ZmllbGRfdGFnX29wdGlvbnMgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF90YWdfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RhZ19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICd0YWcnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nnlKjmiLfpobXmqKHmnb/vvJonLCAn6YG45pOH5L2/55So6ICF6aCB6Z2i5qih5p2/77yaJyksXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogYHt7QmxvY2tlZCB1c2VyfX3vvJoke3dpbmRvdy53Z1VMUygn5LiA6Iis5rC45LmF5bCB56aBJywgJ+S4gOiIrOawuOS5heWwgemOlicpfWAsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0Jsb2NrZWQgdXNlcicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogYHt7U29ja3B1cHBldH1977yaJHt3aW5kb3cud2dVTFMoJ+WCgOWEoei0puWPtycsICflgoDlhKHos6zomZ8nKX1gLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdTb2NrcHVwcGV0Jyxcblx0XHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3BwVXNlcm5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li76LSm5Y+355So5oi35ZCN77yaJywgJ+S4u+izrOiZn+S9v+eUqOiAheWQjeeose+8micpLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3NwcFR5cGUnLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eKtuaAge+8micsICfni4DmhYvvvJonKSxcblx0XHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrZWQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYGJsb2NrZWQgLSAke3dpbmRvdy53Z1VMUygn5LuF5L6d6KGM5Li66K+B5o2u6K6k5a6aJywgJ+WDheS+neihjOeCuuitieaTmuiqjeWumicpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAncHJvdmVuJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGBwcm92ZW4gLSAke3dpbmRvdy53Z1VMUygn57uP5YKA5YSh6LCD5p+l56Gu6K6kJywgJ+e2k+WCgOWEoeiqv+afpeeiuuiqjScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjb25maXJtZWQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYGNvbmZpcm1lZCAtICR7d2luZG93LndnVUxTKCfnu4/mn6XmoLjnoa7orqQnLCAn57aT5p+l5qC456K66KqNJyl9YCxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcHBFdmlkZW5jZScsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoLnmja7igKbigKbnoa7lrprvvJonLCAn5qC55pOa4oCm4oCm56K65a6a77yaJyksXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+e6r+aWh+Wtl+aIluaYr+W4pltbXV3nmoTpk77mjqXvvIzkvovlpoLvvJpbW1NwZWNpYWw65Zu65a6a6ZO+5o6lL3h4eHh4eHh4fOeUqOaIt+afpeaguF1dJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfntJTmloflrZfmiJbmmK/luLZbW11d55qE6YCj57WQ77yM5L6L5aaC77yaW1tTcGVjaWFsOuWbuuWumumTvuaOpS94eHh4eHh4eHznlKjmiLbmn6XmoLhdXSdcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiBge3tTb2NrcHVwcGV0ZWVyfGJsb2NrZWR9fe+8miR7d2luZG93LndnVUxTKCflgoDlhKHkuLvotKblj7cnLCAn5YKA5YSh5Li76LOs6JmfJyl9YCxcblx0XHRcdFx0XHRcdHZhbHVlOiAnU29ja3B1cHBldGVlcicsXG5cdFx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcG1DaGVja2VkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdzcG1DaGVja2VkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uP55So5oi35p+l5qC456Gu6K6kJywgJ+e2k+S9v+eUqOiAheafpeaguOeiuuiqjScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3NwbUV2aWRlbmNlJyxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mineWklueQhueUse+8micsICfpoY3lpJbnkIbnlLHvvJonKSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAodW5ibG9ja0JveCkge1xuXHRcdFx0ZmllbGRfdW5ibG9ja19vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Kej6Zmk5bCB56aB6YCJ6aG5JywgJ+ino+mZpOWwgemOlumBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdW5ibG9ja19vcHRpb25zJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdW5ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eQhueUse+8iOeUqOS6juWwgeemgeaXpeW/l++8ie+8micsICfnkIbnlLHvvIjnlKjmlrzlsIHpjpbml6XoqozvvInvvJonKSxcblx0XHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3VuYmxvY2tfb3B0aW9ucy5yZWFzb24sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0bGV0IG9sZGZpZWxkO1xuXHRcdGlmIChmaWVsZF9wcmVzZXQpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfcHJlc2V0XCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF9wcmVzZXQucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpLmhpZGUoKTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkX2Jsb2NrX29wdGlvbnMpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfYmxvY2tfb3B0aW9uc1wiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfYmxvY2tfb3B0aW9ucy5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkXzY0XCJdJykuc2hvdygpO1xuXHRcdFx0JGZvcm0uZmluZCgnW25hbWU9cGFnZXJlc3RyaWN0aW9uc10nKS5zZWxlY3QyKHtcblx0XHRcdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUygn6L6T5YWl6KaB6Zi75q2i55So5oi357yW6L6R55qE6aG16Z2iJywgJ+i8uOWFpeimgemYu+atouS9v+eUqOiAhee3qOi8r+eahOmggemdoicpLFxuXHRcdFx0XHRsYW5ndWFnZToge1xuXHRcdFx0XHRcdGVycm9yTG9hZGluZzogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy53Z1VMUygn5pCc57Si6K+N5rGH5LiN5a6M5pW05oiW5peg5pWIJywgJ+aQnOWwi+ipnuW9meS4jeWujOaVtOaIlueEoeaViCcpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1heGltdW1TZWxlY3Rpb25MZW5ndGg6IDEwLFxuXHRcdFx0XHRtaW5pbXVtSW5wdXRMZW5ndGg6IDEsXG5cdFx0XHRcdGFqYXg6IHtcblx0XHRcdFx0XHR1cmw6IG13LnV0aWwud2lraVNjcmlwdCgnYXBpJyksXG5cdFx0XHRcdFx0ZGF0YVR5cGU6ICdqc29uJyxcblx0XHRcdFx0XHRkZWxheTogMTAwLFxuXHRcdFx0XHRcdGRhdGE6IChwYXJhbXMpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gbXcuVGl0bGUubmV3RnJvbVRleHQocGFyYW1zLnRlcm0pO1xuXHRcdFx0XHRcdFx0aWYgKCF0aXRsZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0XHRcdFx0XHRsaXN0OiAnYWxscGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRhcGZyb206IHRpdGxlLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRhcG5hbWVzcGFjZTogdGl0bGUubmFtZXNwYWNlLFxuXHRcdFx0XHRcdFx0XHRhcGxpbWl0OiAnMTAnLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHByb2Nlc3NSZXN1bHRzOiAoZGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0czogZGF0YS5xdWVyeS5hbGxwYWdlcy5tYXAoKHBhZ2UpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhZ2UudGl0bGUsIHBhZ2UubnMpLnRvVGV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZDogdGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0OiB0aXRsZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0dGVtcGxhdGVTZWxlY3Rpb246IChjaG9pY2UpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC50ZXh0KGNob2ljZS50ZXh0KVxuXHRcdFx0XHRcdFx0LmF0dHIoe1xuXHRcdFx0XHRcdFx0XHRocmVmOiBtdy51dGlsLmdldFVybChjaG9pY2UudGV4dCksXG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJ19ibGFuaycsXG5cdFx0XHRcdFx0XHRcdHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9KTtcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKS5zZWxlY3QyKHtcblx0XHRcdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRcdFx0bWF0Y2hlcjogTW9yZWJpdHMuc2VsZWN0Mi5tYXRjaGVycy53b3JkQmVnaW5uaW5nLFxuXHRcdFx0XHRsYW5ndWFnZToge1xuXHRcdFx0XHRcdHNlYXJjaGluZzogTW9yZWJpdHMuc2VsZWN0Mi5xdWVyeUludGVyY2VwdG9yLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0ZW1wbGF0ZVJlc3VsdDogTW9yZWJpdHMuc2VsZWN0Mi5oaWdobGlnaHRTZWFyY2hNYXRjaGVzLFxuXHRcdFx0XHRwbGFjZWhvbGRlcjogd2luZG93LndnVUxTKCfpgInmi6nopoHnpoHmraLnlKjmiLfnvJbovpHnmoTlkb3lkI3nqbrpl7QnLCAn6YG45pOH6KaB56aB5q2i5L2/55So6ICF57eo6Lyv55qE5ZG95ZCN56m66ZaTJyksXG5cdFx0XHR9KTtcblx0XHRcdG13LnV0aWwuYWRkQ1NTKFxuXHRcdFx0XHQvKiBSZWR1Y2UgcGFkZGluZztcblx0XHRcdFx0ICogQWRqdXN0IGZvbnQgc2l6ZTtcblx0XHRcdFx0ICogUmVtb3ZlIGJsYWNrIGJvcmRlcjtcblx0XHRcdFx0ICogTWFrZSB0aGUgdGlueSBjcm9zcyBsYXJnZXJcblx0XHRcdFx0ICovXG5cdFx0XHRcdCcuc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbntwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MXB4fS5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1kcm9wZG93biAuc2VsZWN0Mi1yZXN1bHRzLC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0aW9uIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWR7Zm9udC1zaXplOjEzcHh9LnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1mb2N1cyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxle2JvcmRlcjoxcHggc29saWQgI2FhYX0uc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3Zle2ZvbnQtc2l6ZToxMjUlfSdcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9ibG9ja19vcHRpb25zXCJdJykuaGlkZSgpO1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkXzY0XCJdJykuaGlkZSgpO1xuXHRcdFx0Ly8gQ2xlYXIgc2VsZWN0MiBvcHRpb25zXG5cdFx0XHQkZm9ybS5maW5kKCdbbmFtZT1wYWdlcmVzdHJpY3Rpb25zXScpLnZhbChudWxsKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKS52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF90ZW1wbGF0ZV9vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RlbXBsYXRlX29wdGlvbnNcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkX3RlbXBsYXRlX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHRcdGUudGFyZ2V0LmZvcm0ucm9vdC5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KFxuXHRcdFx0XHQkKGUudGFyZ2V0LmZvcm0ucm9vdCkuZmluZCgnI3R3aW5rbGVibG9jay1wcmV2aWV3Ym94JykubGFzdCgpWzBdXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfdGVtcGxhdGVfb3B0aW9uc1wiXScpLmhpZGUoKTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkX3RhZ19vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RhZ19vcHRpb25zXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF90YWdfb3B0aW9ucy5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfdGFnX29wdGlvbnNcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF91bmJsb2NrX29wdGlvbnMpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfdW5ibG9ja19vcHRpb25zXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF91bmJsb2NrX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3VuYmxvY2tfb3B0aW9uc1wiXScpLmhpZGUoKTtcblx0XHR9XG5cdFx0Ly8gQW55IGJsb2NrLCBpbmNsdWRpbmcgcmFuZ2VzXG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0Ly8gZmFsc2UgZm9yIGFuIGlwIGNvdmVyZWQgYnkgYSByYW5nZSBvciBhIHNtYWxsZXIgcmFuZ2Ugd2l0aGluIGEgbGFyZ2VyIHJhbmdlO1xuXHRcdFx0Ly8gdHJ1ZSBmb3IgYSB1c2VyLCBzaW5nbGUgaXAgYmxvY2ssIG9yIHRoZSBleGFjdCByYW5nZSBmb3IgYSByYW5nZSBibG9ja1xuXHRcdFx0Y29uc3Qgc2FtZVVzZXIgPSBibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWU7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdCgkYm9keS5maW5kKCdkaXZbbmFtZT1cImN1cnJlbnRibG9ja1wiXSBzcGFuJykubGFzdCgpWzBdKTtcblx0XHRcdGxldCBzdGF0dXNTdHIgPSBgJHtyZWxldmFudFVzZXJOYW1lfeW3suiiqyR7XG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5wYXJ0aWFsID09PSAnJ1xuXHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfpg6jliIblsIHnpoEnLCAn6YOo5YiG5bCB6Y6WJylcblx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5YWo56uZ5bCB56aBJywgJ+WFqOermeWwgemOlicpXG5cdFx0XHR9YDtcblx0XHRcdC8vIFJhbmdlIGJsb2NrZWRcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucmFuZ2VzdGFydCAhPT0gVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnJhbmdlZW5kKSB7XG5cdFx0XHRcdGlmIChzYW1lVXNlcikge1xuXHRcdFx0XHRcdHN0YXR1c1N0ciArPSB3aW5kb3cud2dVTFMoJ++8iOauteWwgeemge+8iScsICfvvIjmrrXlsIHpjpbvvIknKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBDaGFuZ2Ugb3JkZXJcblx0XHRcdFx0XHQvLyBMaW5rIHRvIHRoZSBmdWxsIHJhbmdlXG5cdFx0XHRcdFx0Y29uc3QgJHJhbmdlYmxvY2tsb2dsaW5rID0gJCgnPHNwYW4+JykuYXBwZW5kKFxuXHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0YDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0XHRcdGFjdGlvbjogJ3ZpZXcnLFxuXHRcdFx0XHRcdFx0XHRcdHBhZ2U6IGJsb2NrZWRVc2VyTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnYmxvY2snLFxuXHRcdFx0XHRcdFx0XHR9KX1cIj4ke1xuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmlwLmdldDY0KHJlbGV2YW50VXNlck5hbWUpID09PSBibG9ja2VkVXNlck5hbWUgPyAnLzY0JyA6IGJsb2NrZWRVc2VyTmFtZVxuXHRcdFx0XHRcdFx0XHR9PC9hPilgXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRzdGF0dXNTdHIgKz1cblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn77yI5L2N5LqOJywgJ++8iOS9jeaWvCcpICtcblx0XHRcdFx0XHRcdCRyYW5nZWJsb2NrbG9nbGluay5odG1sKCkgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmrrXlsIHnpoHlhoXvvIknLCAn5q615bCB6Y6W5YWn77yJJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8uZXhwaXJ5ID09PSAnaW5maW5pdHknKSB7XG5cdFx0XHRcdHN0YXR1c1N0ciArPSB3aW5kb3cud2dVTFMoJ++8iOaXoOmZkOacn++8iScsICfvvIjnhKHpmZDmnJ/vvIknKTtcblx0XHRcdH0gZWxzZSBpZiAobmV3IE1vcmViaXRzLmRhdGUoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeSkuaXNWYWxpZCgpKSB7XG5cdFx0XHRcdHN0YXR1c1N0ciArPSBgJHtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ++8iOe7iOatouS6jicsICfvvIjntYLmraLmlrwnKSArXG5cdFx0XHRcdFx0bmV3IE1vcmViaXRzLmRhdGUoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeSkuY2FsZW5kYXIoJ3V0YycpXG5cdFx0XHRcdH3vvIlgO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGluZm9TdHIgPSB3aW5kb3cud2dVTFMoJ+atpOihqOWNleWwhicsICfmraTooajllq7lsIcnKTtcblx0XHRcdGlmIChzYW1lVXNlcikge1xuXHRcdFx0XHRpbmZvU3RyICs9IHdpbmRvdy53Z1VMUygn5pu05pS55bCB56aBJywgJ+iuiuabtOWwgemOlicpO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQm94KSB7XG5cdFx0XHRcdFx0aW5mb1N0ciArPSB3aW5kb3cud2dVTFMoJ+S4uumDqOWIhuWwgeemgScsICfngrrpg6jliIblsIHpjpYnKTtcblx0XHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycgJiYgIXBhcnRpYWxCb3gpIHtcblx0XHRcdFx0XHRpbmZvU3RyICs9IHdpbmRvdy53Z1VMUygn5Li65YWo56uZ5bCB56aBJywgJ+eCuuWFqOermeWwgemOlicpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGluZm9TdHIgKz0gJ+OAgic7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpbmZvU3RyICs9XG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDkuIrpop3lpJbnmoQnLCAn5Yqg5LiK6aGN5aSW55qEJykgK1xuXHRcdFx0XHRcdChwYXJ0aWFsQm94ID8gJ+mDqOWIhicgOiAnJykgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCB56aB44CCJywgJ+WwgemOluOAgicpO1xuXHRcdFx0fVxuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oc3RhdHVzU3RyLCBpbmZvU3RyKTtcblx0XHRcdC8vIERlZmF1bHQgdG8gdGhlIGN1cnJlbnQgYmxvY2sgY29uZGl0aW9ucyBvbiBpbnRpYWwgZm9ybSBnZW5lcmF0aW9uXG5cdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnVwZGF0ZV9mb3JtKGUsIFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyk7XG5cdFx0fVxuXHRcdC8vIFRoaXMgaXMgd2hlcmUgVDE0NjYyOCByZWFsbHkgY29tZXMgaW50byBwbGF5OiBhIHJhbmdlYmxvY2sgd2lsbFxuXHRcdC8vIG9ubHkgcmV0dXJuIHRoZSBjb3JyZWN0IGJsb2NrIGxvZyBpZiB3Z1JlbGV2YW50VXNlck5hbWUgaXMgdGhlXG5cdFx0Ly8gZXhhY3QgcmFuZ2UsIG5vdCBtZXJlbHkgYSBmdW50aW9uYWwgZXF1aXZhbGVudFxuXHRcdGlmIChUd2lua2xlLmJsb2NrLmhhc0Jsb2NrTG9nKSB7XG5cdFx0XHQvLyBBZGQgbW9yZSBkZXRhaWxzXG5cdFx0XHRjb25zdCBibG9ja2xvZ2luZm8gPSBbXTtcblx0XHRcdGNvbnN0ICRibG9ja2xvZ2xpbmsgPSAkKCc8c3Bhbj4nKS5hcHBlbmQoXG5cdFx0XHRcdCQoXG5cdFx0XHRcdFx0YDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0YWN0aW9uOiAndmlldycsXG5cdFx0XHRcdFx0XHRwYWdlOiByZWxldmFudFVzZXJOYW1lLFxuXHRcdFx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHR9KX1cIj4ke3dpbmRvdy53Z1VMUygn5bCB56aB5pel5b+XJywgJ+WwgemOluaXpeiqjCcpfTwvYT4pYFxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0XHRibG9ja2xvZ2luZm8ucHVzaCh3aW5kb3cud2dVTFMoJ+WwgeemgeivpuaDhScsICflsIHpjpboqbPmg4UnKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBbbGFzdEJsb2NrQWN0aW9uXSA9IFR3aW5rbGUuYmxvY2suYmxvY2tMb2c7XG5cdFx0XHRcdGNvbnN0IGJsb2NrQWN0aW9uID0gbGFzdEJsb2NrQWN0aW9uLmFjdGlvbiA9PT0gJ3VuYmxvY2snID8gVHdpbmtsZS5ibG9jay5ibG9ja0xvZ1sxXSA6IGxhc3RCbG9ja0FjdGlvbjtcblx0XHRcdFx0YmxvY2tsb2dpbmZvLnB1c2goXG5cdFx0XHRcdFx0YOatpCR7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5pcC5pc1JhbmdlKHJlbGV2YW50VXNlck5hbWUpXG5cdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCdJUOiMg+WbtCcsICdJUOevhOWcjScpXG5cdFx0XHRcdFx0XHRcdDogd2luZG93LndnVUxTKCfnlKjmiLcnLCAn5L2/55So6ICFJylcblx0XHRcdFx0XHR95pu+5ZyoYCxcblx0XHRcdFx0XHQkKGA8Yj4ke25ldyBNb3JlYml0cy5kYXRlKGJsb2NrQWN0aW9uLnRpbWVzdGFtcCkuY2FsZW5kYXIoJ3V0YycpfTwvYj5gKVswXSxcblx0XHRcdFx0XHRg6KKrJHtibG9ja0FjdGlvbi51c2VyfSR7d2luZG93LndnVUxTKCflsIHnpoEnLCAn5bCB6Y6WJyl9YCxcblx0XHRcdFx0XHQkKGA8Yj4ke01vcmViaXRzLnN0cmluZy5mb3JtYXRUaW1lKGJsb2NrQWN0aW9uLnBhcmFtcy5kdXJhdGlvbil9PC9iPmApWzBdXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChsYXN0QmxvY2tBY3Rpb24uYWN0aW9uID09PSAndW5ibG9jaycpIHtcblx0XHRcdFx0XHRibG9ja2xvZ2luZm8ucHVzaChg77yMJHtuZXcgTW9yZWJpdHMuZGF0ZShsYXN0QmxvY2tBY3Rpb24udGltZXN0YW1wKS5jYWxlbmRhcigndXRjJyl96Kej5bCBYCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gYmxvY2sgb3IgcmVibG9ja1xuXHRcdFx0XHRcdGJsb2NrbG9naW5mby5wdXNoKFxuXHRcdFx0XHRcdFx0YO+8jCR7bmV3IE1vcmViaXRzLmRhdGUoYmxvY2tBY3Rpb24ucGFyYW1zLmV4cGlyeSkuY2FsZW5kYXIoJ3V0YycpfSR7d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJyl9YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiaGFzYmxvY2tsb2dcIl0gc3BhbicpLmxhc3QoKVswXSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMud2FybihibG9ja2xvZ2luZm8sICRibG9ja2xvZ2xpbmtbMF0pO1xuXHRcdH1cblx0XHQvLyBNYWtlIHN1cmUgYWxsIHRoZSBmaWVsZHMgYXJlIGNvcnJlY3QgYmFzZWQgb24gaW5pdGlhbCBkZWZhdWx0c1xuXHRcdGlmIChibG9ja0JveCkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfcHJlc2V0KGUpO1xuXHRcdH0gZWxzZSBpZiAodGVtcGxhdGVCb3gpIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlKGUpO1xuXHRcdH1cblx0fTtcblx0LyoqXG5cdCAqIEtlZXAgYWxwaGFiZXRpemVkIGJ5IGtleSBuYW1lLCBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzIGVzdGFibGlzaGVzXG5cdCAqICAgIHRoZSBvcmRlciB0aGV5IHdpbGwgYXBwZWFyIGluIHRoZSBpbnRlcmZhY2Vcblx0ICpcblx0ICogQmxvY2sgcHJlc2V0IGZvcm1hdCwgYWxsIGtleXMgYWNjZXB0IG9ubHkgJ3RydWUnIChvbWl0IGZvciBmYWxzZSkgZXhjZXB0IHdoZXJlIG5vdGVkOlxuXHQgKiA8dGl0bGUgb2YgYmxvY2sgdGVtcGxhdGU+IDoge1xuXHQgKiAgIGF1dG9ibG9jazogPGF1dG9ibG9jayBhbnkgSVAgYWRkcmVzc2VzIHVzZWQgKGZvciByZWdpc3RlcmVkIHVzZXJzIG9ubHkpPlxuXHQgKiAgIGRpc2FibGV0YWxrOiA8ZGlzYWJsZSB1c2VyIGZyb20gZWRpdGluZyB0aGVpciBvd24gdGFsayBwYWdlIHdoaWxlIGJsb2NrZWQ+XG5cdCAqICAgZXhwaXJ5OiA8c3RyaW5nIC0gZXhwaXJ5IHRpbWVzdGFtcCwgY2FuIGluY2x1ZGUgcmVsYXRpdmUgdGltZXMgbGlrZSBcIjUgbW9udGhzXCIsIFwiMiB3ZWVrc1wiIGV0Yz5cblx0ICogICBmb3JBbm9uT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyBhbiBJUD5cblx0ICogICBmb3JSZWdpc3RlcmVkT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyByZWdpc3RlcmVkPlxuXHQgKiAgIGxhYmVsOiA8c3RyaW5nIC0gbGFiZWwgZm9yIHRoZSBvcHRpb24gb2YgdGhlIGRyb3Bkb3duIGluIHRoZSBpbnRlcmZhY2UgKGtlZXAgYnJpZWYpPlxuXHQgKiAgIG5vZW1haWw6IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBzZW5kaW5nIGVtYWlsIHRocm91Z2ggU3BlY2lhbDpFbWFpbHVzZXJcblx0ICogICBwYWdlUGFyYW06IDxzZXQgaWYgdGhlIGFzc29jaWF0ZWQgYmxvY2sgdGVtcGxhdGUgYWNjZXB0cyBhIHBhZ2UgcGFyYW1ldGVyPlxuXHQgKiAgIHByZXBlbmRSZWFzb246IDxzdHJpbmcgLSBwcmVwZW5kcyB0aGUgdmFsdWUgb2YgJ3JlYXNvbicgdG8gdGhlIGVuZCBvZiB0aGUgZXhpc3RpbmcgcmVhc29uLCBuYW1lbHkgZm9yIHdoZW4gcmV2b2tpbmcgdGFsayBwYWdlIGFjY2Vzcz5cblx0ICogICBub2NyZWF0ZTogPGJsb2NrIGFjY291bnQgY3JlYXRpb24gZnJvbSB0aGUgdXNlcidzIElQIChmb3IgYW5vbnltb3VzIHVzZXJzIG9ubHkpPlxuXHQgKiAgIG5vbnN0YW5kYXJkOiA8dGVtcGxhdGUgZG9lcyBub3QgY29uZm9ybSB0byBzdGV3YXJkc2hpcCBvZiBbW2Vud2lraTpXaWtpUHJvamVjdCBVc2VyIFdhcm5pbmdzXV0gYW5kIG1heSBub3QgYWNjZXB0IHN0YW5kYXJkIHBhcmFtZXRlcnM+XG5cdCAqICAgcmVhc29uOiA8c3RyaW5nIC0gYmxvY2sgcmF0aW9uYWxlLCBhcyB3b3VsZCBhcHBlYXIgaW4gdGhlIGJsb2NrIGxvZyxcblx0ICogICAgICAgICAgICBhbmQgdGhlIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUsIHVubGVzcyAnc3VtbWFyeScgaXMgc2V0PlxuXHQgKiAgIHJlYXNvblBhcmFtOiA8c2V0IGlmIHRoZSBhc3NvY2lhdGVkIGJsb2NrIHRlbXBsYXRlIGFjY2VwdHMgYSByZWFzb24gcGFyYW1ldGVyPlxuXHQgKiAgIHNpZzogPHN0cmluZyAtIHNldCB0byB+fn5+IGlmIGJsb2NrIHRlbXBsYXRlIGRvZXMgbm90IGFjY2VwdCBcInRydWVcIiBhcyB0aGUgdmFsdWUsIG9yIHNldCBudWxsIHRvIG9taXQgc2lnIHBhcmFtIGFsdG9nZXRoZXI+XG5cdCAqICAgc3VtbWFyeTogPHN0cmluZyAtIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUgdG8gdXNlcidzIHRhbGsgcGFnZSwgaWYgbm90IHNldCwgJ3JlYXNvbicgaXMgdXNlZD5cblx0ICogICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IDxzZXQgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnksIGFzIHdpdGggYXR0YWNrIHBhZ2VzPlxuXHQgKiAgIHRlbXBsYXRlTmFtZTogPHN0cmluZyAtIG5hbWUgb2YgdGVtcGxhdGUgdG8gdXNlIChpbnN0ZWFkIG9mIGtleSBuYW1lKSwgZW50cnkgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIFRlbXBsYXRlcyBsaXN0LlxuXHQgKiAgICAgICAgICAgICAgICAgIChlLmcuIHVzZSBhbm90aGVyIHRlbXBsYXRlIGJ1dCB3aXRoIGRpZmZlcmVudCBibG9jayBvcHRpb25zKT5cblx0ICogICB1c2VJbml0aWFsT3B0aW9uczogPHdoZW4gcHJlc2V0IGlzIGNob3Nlbiwgb25seSBjaGFuZ2UgZ2l2ZW4gYmxvY2sgb3B0aW9ucywgbGVhdmUgb3RoZXJzIGFzIHRoZXkgd2VyZT5cblx0ICpcblx0ICogV0FSTklORzogJ2Fub25vbmx5JyBhbmQgJ2FsbG93dXNlcnRhbGsnIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cdCAqICAgVG8gZGlzYWJsZSwgc2V0ICdoYXJkYmxvY2snIGFuZCAnZGlzYWJsZXRhbGsnLCByZXNwZWN0aXZlbHlcblx0ICovXG5cdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mbyA9IHtcblx0XHQvLyB1dy1wcmVmaXhlZFxuXHRcdCd1dy1ibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+lJywgJ+WwgemOlumAmuefpScpLFxuXHRcdFx0c3VwcHJlc3NBcnRpY2xlSW5TdW1tYXJ5OiB0cnVlLFxuXHRcdH0sXG5cdFx0J3V3LWJsb2NraW5kZWYnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpScsICflsIHpjpbpgJrnn6UnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy1ibG9ja25vdGFsayc6IHtcblx0XHRcdGRpc2FibGV0YWxrOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muemgeatoue8lui+keiuqOiuuumhtScsICflsIHpjpbpgJrnn6XvvJrnpoHmraLnt6jovK/oqI7oq5bpoIEnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy0zYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfov53lj41bW0xJQjozUlJ85Zue6YCA5LiN6L+H5LiJ5Y6f5YiZXV0nLCAn6YGV5Y+NW1tMSUI6M1JSfOWbnumAgOS4jemBjuS4ieWOn+WJh11dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrov53lj41bW0xJQjozUlJ85Zue6YCA5LiN6L+H5LiJ5Y6f5YiZXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya6YGV5Y+NW1tMSUI6M1JSfOWbnumAgOS4jemBjuS4ieWOn+WJh11dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1hZGJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5pWj5Y+RW1tMSUI6U09BUHzmlaPlj5Hlub/lkYrmiJblrqPkvKBdXScsICfmlaPnmbxbW0xJQjpTT0FQfOaVo+eZvOW7o+WRiuaIluWuo+WCs11dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmlaPlj5FbW0xJQjpTT0FQfOaVo+WPkeW5v+WRiuaIluWuo+S8oF1dJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaVo+eZvFtbTElCOlNPQVB85pWj55m85buj5ZGK5oiW5a6j5YKzXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LWF0dGFja2Jsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNJVnzooYzkuLrml6DnpLxdXeaIlltbTElCOk5QQXzkurrouqvmlLvlh7tdXScsXG5cdFx0XHRcdCdbW0xJQjpDSVZ86KGM54K654Sh56auXV3miJZbW0xJQjpOUEF85Lq66Lqr5pS75pOKXV0nXG5cdFx0XHQpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77yaW1tMSUI6Q0lWfOihjOS4uuaXoOekvF1d5oiWW1tMSUI6TlBBfOS6uui6q+aUu+WHu11dJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8mltbTElCOkNJVnzooYzngrrnhKHnpq5dXeaIlltbTElCOk5QQXzkurrouqvmlLvmk4pdXSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQndXctY29weXJpZ2h0YmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu61bW0xJQjpDT1BZVklPfOS+teeKr+iRl+S9nOadg11dJywgJ+aMgee6jFtbTElCOkNPUFlWSU985L6154qv6JGX5L2c5qyKXV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaMgee7rVtbTElCOkNPUFlWSU985L6154qv6JGX5L2c5p2DXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oyB57qMW1tMSUI6Q09QWVZJT3zkvrXniq/okZfkvZzmrIpdXSdcblx0XHRcdCksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy1ibG9ja2luZGVmJyxcblx0XHR9LFxuXHRcdCd1dy1kYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu61bW0xJQjpWQU585Yig6Zmk5YaF5a65XV0nLCAn5oyB57qMW1tMSUI6VkFOfOWIqumZpOWFp+WuuV1dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaMgee7rVtbTElCOlZBTnzliKDpmaTlhoXlrrldXScsICflsIHpjpbpgJrnn6XvvJrmjIHnuoxbW0xJQjpWQU585Yiq6Zmk5YWn5a65XV0nKSxcblx0XHR9LFxuXHRcdCd1dy1oYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW0xJQjrpqprmibB86aqa5omwXV3lhbbku5bnlKjmiLcnLCAnW1tMSUI66ai35pO+fOmot+aTvl1d5YW25LuW5L2/55So6ICFJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mltbTElCOumqmuaJsHzpqprmibBdXeWFtuS7lueUqOaItycsICflsIHpjpbpgJrnn6XvvJpbW0xJQjrpqLfmk7586ai35pO+XV3lhbbku5bkvb/nlKjogIUnKSxcblx0XHR9LFxuXHRcdCd1dy12YmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW0xJQjpWQU5856C05Z2PXV0nLCAnW1tMSUI6VkFOfOegtOWjnl1dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mltbTElCOlZBTnznoLTlnY9dXScsICflsIHpjpbpgJrnn6XvvJpbW0xJQjpWQU5856C05aOeXV0nKSxcblx0XHR9LFxuXHRcdCd1dy1pbGxlZ2FsYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63liqDlhaXpnZ7ms5XlhoXlrrknLCAn5oyB57qM5Yqg5YWl6Z2e5rOV5YWn5a65JyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaMgee7reWKoOWFpemdnuazleWGheWuuScsICflsIHpjpbpgJrnn6XvvJrmjIHnuozliqDlhaXpnZ7ms5XlhaflrrknKSxcblx0XHR9LFxuXHRcdCd1dy1zb2NrYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmu6XnlKhbW0xJQjpTT0NLfOWkmuS4qui0puWPt11dJywgJ+a/q+eUqFtbTElCOlNPQ0t85aSa5YCL6LOs6JmfXV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5rul55SoW1tMSUI6U09DS3zlpJrkuKrotKblj7ddXScsICflsIHpjpbpgJrnn6XvvJrmv6vnlKhbW0xJQjpTT0NLfOWkmuWAi+izrOiZn11dJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy1ibG9jaycsXG5cdFx0fSxcblx0XHQvLyB1dy11LXByZWZpeGVkXG5cdFx0J3V3LXVibG9jayc6IHtcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2t9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+S4jeW9k+eUqOaIt+WQjeOAgei9r+WwgeemgScsICfkuI3nlbbkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbTElCOlV855So5oi35ZCN5p2h5L6LXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oKo55qE5L2/55So6ICF5ZCN56ix6YGV5Y+NW1tMSUI6VXzkvb/nlKjogIXlkI3nqLHmop3kvotdXSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQndXctdWJsb2NrLWlsbGVnYWwnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2staWxsZWdhbH19PCEtLSAke3dpbmRvdy53Z1VMUygn5LiN5ZCI6KeE55qE55So5oi35ZCNJywgJ+S4jeWQiOimj+eahOS9v+eUqOiAheWQjeeosScpfSAtLT5gLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5oKo55qE55So5oi35ZCN6L+d5Y+NW1tMSUI6VXznlKjmiLflkI3mnaHkvotdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW0xJQjpVfOS9v+eUqOiAheWQjeeoseaineS+i11dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy11YmxvY2stc3VnZ2VzdGl2ZSc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IGB7e3V3LXVibG9jay1zdWdnZXN0aXZlfX08IS0tICR7d2luZG93LndnVUxTKCfor6/lr7zjgIHmt7fmt4bmgKfnlKjmiLflkI0nLCAn6Kqk5bCO44CB5re35reG5oCn5L2/55So6ICF5ZCN56ixJyl9IC0tPmAsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmgqjnmoTnlKjmiLflkI3ov53lj41bW0xJQjpVfOeUqOaIt+WQjeadoeS+i11dJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaCqOeahOS9v+eUqOiAheWQjeeosemBleWPjVtbTElCOlV85L2/55So6ICF5ZCN56ix5qKd5L6LXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1zcGFtJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLXNwYW19fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+Wuo+S8oOaAp+eUqOaIt+WQjeaIluWuo+S8oOaAp+e8lui+kScsICflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmiJblrqPlgrPmgKfnt6jovK8nKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbTElCOlV855So5oi35ZCN5p2h5L6LXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oKo55qE5L2/55So6ICF5ZCN56ix6YGV5Y+NW1tMSUI6VXzkvb/nlKjogIXlkI3nqLHmop3kvotdXSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQvLyBvdGhlciBibG9jayB0ZW1wbGF0ZXNcblx0XHQncmFuZ2UgYmxvY2snOiB7XG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0cmVhc29uOiAne3tyYW5nZSBibG9ja319Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0bm9uc3RhbmRhcmQ6IHRydWUsXG5cdFx0XHRmb3JBbm9uT25seTogdHJ1ZSxcblx0XHRcdHNpZzogJ35+Jy5jb25jYXQoJ35+JyksXG5cdFx0fSxcblx0XHQnYmxvY2tlZCBwcm94eSc6IHtcblx0XHRcdGV4cGlyeTogJzIgeWVhcnMnLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0aGFyZGJsb2NrOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tibG9ja2VkIHByb3h5fX0nLFxuXHRcdFx0c2lnOiBudWxsLFxuXHRcdH0sXG5cdFx0Y2hlY2t1c2VyYmxvY2s6IHtcblx0XHRcdGV4cGlyeTogJzEgd2VlaycsXG5cdFx0XHRmb3JBbm9uT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0bm9uc3RhbmRhcmQ6IHRydWUsXG5cdFx0XHRyZWFzb246ICd7e2NoZWNrdXNlcmJsb2NrfX0nLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdCdjaGVja3VzZXJibG9jay1hY2NvdW50Jzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tjaGVja3VzZXJibG9jay1hY2NvdW50fX0nLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdCdzY2hvb2wgYmxvY2snOiB7XG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tzY2hvb2wgYmxvY2t9fScsXG5cdFx0XHRzaWc6ICd+ficuY29uY2F0KCd+ficpLFxuXHRcdH0sXG5cdFx0J0JvdCBibG9jayBtZXNzYWdlJzoge1xuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5py65Zmo5Lq65pWF6ZqcJywgJ+apn+WZqOS6uuaVhemanCcpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrmnLrlmajkurrmlYXpmpwnLCAn5bCB6Y6W6YCa55+l77ya5qmf5Zmo5Lq65pWF6ZqcJyksXG5cdFx0XHRzaWc6ICd+ficuY29uY2F0KCd+ficpLFxuXHRcdH0sXG5cdFx0Ly8gb3RoZXIgYmxvY2sgcmVhc29uc1xuXHRcdGJpb2Jsb2NrOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfov53lj43nlJ/ogIXkvKDorrDmnaHkvosnLCAn6YGV5Y+N55Sf6ICF5YKz6KiY5qKd5L6LJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mui/neWPjeeUn+iAheS8oOiusOadoeS+iycsICflsIHpjpbpgJrnn6XvvJrpgZXlj43nlJ/ogIXlgrPoqJjmop3kvosnKSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LXZibG9jaycsXG5cdFx0fSxcblx0XHR1Y2Jsb2NrOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCflsaHmrKHlop7liqDmsqHmnIlbW0xJQjpSU3zlj6/pnaDmnaXmupBdXeeahOi1hOaWmScsICflsaLmrKHlop7liqDmspLmnIlbW0xJQjpSU3zlj6/pnaDkvobmupBdXeeahOizh+aWmScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5bGh5qyh5aKe5Yqg5rKh5pyJW1tMSUI6UlN85Y+v6Z2g5p2l5rqQXV3nmoTotYTmlpknLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5bGi5qyh5aKe5Yqg5rKS5pyJW1tMSUI6UlN85Y+v6Z2g5L6G5rqQXV3nmoTos4fmlpknXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2snLFxuXHRcdH0sXG5cdFx0bnBibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5aKe5Yqg5peg5oSP5LmJ5paH5a2XJywgJ+WcqOaineebruS4reWinuWKoOeEoeaEj+e+qeaWh+WtlycpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrlnKjmnaHnm67kuK3lop7liqDml6DmhI/kuYnmloflrZcnLCAn5bCB6Y6W6YCa55+l77ya5Zyo5qKd55uu5Lit5aKe5Yqg54Sh5oSP576p5paH5a2XJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy12YmxvY2snLFxuXHRcdH0sXG5cdFx0J3BvaW50LWJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63miZPliLbluqbmk6bovrnnkIMnLCAn5oyB57qM5omT5Yi25bqm5pOm6YKK55CDJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaMgee7reaJk+WItuW6puaTpui+ueeQgycsICflsIHpjpbpgJrnn6XvvJrmjIHnuozmiZPliLbluqbmk6bpgornkIMnKSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NrJyxcblx0XHR9LFxuXHRcdCdzb2NrLWNvbnRyaWJzJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfnoa7orqTkuLpbW0xJQjpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShIC0g5qC55o2u55So5oi36LSh54yu56Gu5a6aJyxcblx0XHRcdFx0J+eiuuiqjeeCultbTElCOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEgLSDmoLnmk5rkvb/nlKjogIXosqLnjbvnorrlrponXG5cdFx0XHQpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya56Gu6K6k5Li6W1tMSUI6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrnorroqo3ngrpbW0xJQjpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShJ1xuXHRcdFx0KSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NraW5kZWYnLFxuXHRcdH0sXG5cdFx0J3NvY2stY3UnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+ehruiupOS4ultbTElCOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEgLSDnlKjmiLfmn6XmoLjnoa7orqQnLFxuXHRcdFx0XHQn56K66KqN54K6W1tMSUI6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoSAtIOS9v+eUqOiAheafpeaguOeiuuiqjSdcblx0XHRcdCksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrnoa7orqTkuLpbW0xJQjpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8mueiuuiqjeeCultbTElCOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEnXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2tpbmRlZicsXG5cdFx0fSxcblx0XHQndXctdWJsb2NrLWF0dGFjayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IGB7e3V3LXVibG9jay1hdHRhY2t9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+aUu+WHu+aAp+eUqOaIt+WQjScsICfmlLvmk4rmgKfkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5pS75Ye75oCn55So5oi35ZCNJywgJ+WwgemOlumAmuefpe+8muaUu+aTiuaAp+S9v+eUqOiAheWQjeeosScpLFxuXHRcdH0sXG5cdFx0Ly8gQmVnaW4gcGFydGlhbCBibG9jayB0ZW1wbGF0ZXMsIGFjY2Vzc2VkIGluIFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHNQYXJ0aWFsXG5cdFx0J3V3LXBibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdG5vY3JlYXRlOiBmYWxzZSxcblx0XHRcdHBhZ2VQYXJhbTogZmFsc2UsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOW3suiiq+emgeatoue8lui+keacieWFveaho+ahiOmmhueahOmDqOWIhuWMuuWfnycsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjlt7LooqvnpoHmraLnt6jovK/mnInnjbjmqpTmoYjppKjnmoTpg6jliIbljYDln58nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXBibG9ja2luZGVmJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0bm9jcmVhdGU6IGZhbHNlLFxuXHRcdFx0cGFnZVBhcmFtOiBmYWxzZSxcblx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5oKo5bey6KKr5rC45LmF56aB5q2i57yW6L6R5pyJ5YW95qGj5qGI6aaG55qE6YOo5YiG5Yy65Z+fJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaCqOW3suiiq+awuOS5heemgeatoue3qOi8r+acieeNuOaqlOahiOmkqOeahOmDqOWIhuWNgOWfnydcblx0XHRcdCksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5ibG9jay50cmFuc2Zvcm1CbG9ja1ByZXNldHMgPSAoKSA9PiB7XG5cdFx0Ly8gTWVyZ2UgY3VzdG9tIHJlYXNvblxuXHRcdGZvciAoY29uc3QgaXRlbSBvZiBUd2lua2xlLmdldFByZWYoJ2N1c3RvbUJsb2NrUmVhc29uTGlzdCcpKSB7XG5cdFx0XHRjb25zdCBuZXdLZXkgPSBgJHtpdGVtLnZhbHVlfXwke2l0ZW0ubGFiZWx9YDtcblx0XHRcdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tuZXdLZXldID0ge1xuXHRcdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0XHQuLi5Ud2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0sXG5cdFx0XHRcdHJlYXNvbjogaXRlbS5sYWJlbCxcblx0XHRcdFx0dGVtcGxhdGVOYW1lOiBpdGVtLnZhbHVlLFxuXHRcdFx0fTtcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0gPSB7XG5cdFx0XHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0XHRcdGN1c3RvbTogdHJ1ZSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gc3VwcGx5IHNlbnNpYmxlIGRlZmF1bHRzXG5cdFx0Zm9yIChjb25zdCBbcHJlc2V0LCBzZXR0aW5nc10gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvKSkge1xuXHRcdFx0c2V0dGluZ3Muc3VtbWFyeSB8fD0gc2V0dGluZ3MucmVhc29uO1xuXHRcdFx0c2V0dGluZ3Muc2lnID0gc2V0dGluZ3Muc2lnID09PSB1bmRlZmluZWQgPyAneWVzJyA6IHNldHRpbmdzLnNpZztcblx0XHRcdHNldHRpbmdzLmluZGVmaW5pdGUgfHw9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHNldHRpbmdzLmV4cGlyeSk7XG5cdFx0XHRpZiAoIVR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkICYmIHNldHRpbmdzLmluZGVmaW5pdGUpIHtcblx0XHRcdFx0c2V0dGluZ3MuZXhwaXJ5ID0gJzEgZGF5Jztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNldHRpbmdzLmV4cGlyeSB8fD0gJzEgZGF5Jztcblx0XHRcdH1cblx0XHRcdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1twcmVzZXRdID0gc2V0dGluZ3M7XG5cdFx0fVxuXHR9O1xuXHQvLyBUaGVzZSBhcmUgdGhlIGdyb3VwcyBvZiBwcmVzZXRzIGFuZCBkZWZpbmVzIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFwcGVhci4gRm9yIGVhY2ggbGlzdCBpdGVtOlxuXHQvLyAgIGxhYmVsOiA8c3RyaW5nLCB0aGUgZGVzY3JpcHRpb24gdGhhdCB3aWxsIGJlIHZpc2libGUgaW4gdGhlIGRyb3Bkb3duPlxuXHQvLyAgIHZhbHVlOiA8c3RyaW5nLCB0aGUga2V5IG9mIGEgcHJlc2V0IGluIGJsb2NrUHJlc2V0c0luZm8+XG5cdC8vICAgbWV0YTogPGJvb2xlYW4sIHNob3cgaW4gdGVtcGxhdGVzIG9ubHk+XG5cdFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHMgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pmu6YCa5bCB56aBJywgJ+aZrumAmuWwgemOlicpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCa55So5bCB56aB77yI6Ieq5a6a5LmJ55CG55Sx77yJJywgJ+mAmueUqOWwgemOlu+8iOiHquiogueQhueUse+8iScpLCB2YWx1ZTogJ3V3LWJsb2NrJ30sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DpmZDmnJ/lsIHnpoHvvIjoh6rlrprkuYnnkIbnlLHvvIknLCAn54Sh6ZmQ5pyf5bCB6Y6W77yI6Ieq6KiC55CG55Sx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1ibG9ja2luZGVmJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+emgeatoue8lui+keiuqOiuuumhtScsICfnpoHmraLnt6jovK/oqI7oq5bpoIEnKSwgdmFsdWU6ICd1dy1ibG9ja25vdGFsaycsIG1ldGE6IHRydWV9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N5Zue6YCA5LiN6L+H5LiJ5Y6f5YiZJywgJ+mBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJhycpLCB2YWx1ZTogJ3V3LTNibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWj5Y+R5bm/5ZGK5oiW5a6j5LygJywgJ+aVo+eZvOW7o+WRiuaIluWuo+WCsycpLCB2YWx1ZTogJ3V3LWFkYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+ihjOS4uuaXoOekvOaIluS6uui6q+aUu+WHuycsICfooYzngrrnhKHnpq7miJbkurrouqvmlLvmk4onKSwgdmFsdWU6ICd1dy1hdHRhY2tibG9jayd9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh5Yqg5YWl5L6154qv6JGX5L2c5p2D55qE5YaF5a65JywgJ+WkmuasoeWKoOWFpeS+teeKr+iRl+S9nOasiueahOWFp+WuuScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctY29weXJpZ2h0YmxvY2snLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg5pWF5Yig6Zmk5YaF5a65JywgJ+eEoeaVheWIqumZpOWFp+WuuScpLCB2YWx1ZTogJ3V3LWRibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6aqa5omw55So5oi3JywgJ+mot+aTvuS9v+eUqOiAhScpLCB2YWx1ZTogJ3V3LWhibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn56C05Z2PJywgJ+egtOWjnicpLCB2YWx1ZTogJ3V3LXZibG9jaycsIHNlbGVjdGVkOiB0cnVlfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aMgee7reWKoOWFpemdnuazleWGheWuuScsICfmjIHnuozliqDlhaXpnZ7ms5XlhaflrrknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3V3LWlsbGVnYWxibG9jaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfmu6XnlKjlpJrkuKrotKblj7cnLCAn5r+r55So5aSa5YCL6LOs6JmfJyksIHZhbHVlOiAndXctc29ja2Jsb2NrJ30sXG5cdFx0XHRcdC8vIG90aGVyIGJsb2NrIHJlYXNvbnNcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+i/neWPjeeUn+iAheS8oOiusOadoeS+iycsICfpgZXlj43nlJ/ogIXlgrPoqJjmop3kvosnKSwgdmFsdWU6ICdiaW9ibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5bGh5qyh5aKe5Yqg5rKh5pyJ5Y+v6Z2g5p2l5rqQ55qE6LWE5paZJywgJ+WxouasoeWinuWKoOaykuacieWPr+mdoOS+hua6kOeahOizh+aWmScpLCB2YWx1ZTogJ3VjYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOadoeebruS4reWinuWKoOaXoOaEj+S5ieaWh+WtlycsICflnKjmop3nm67kuK3lop7liqDnhKHmhI/nvqnmloflrZcnKSwgdmFsdWU6ICducGJsb2NrJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63miZPliLbluqbmk6bovrnnkIMnLCAn5oyB57qM5omT5Yi25bqm5pOm6YKK55CDJyksIHZhbHVlOiAncG9pbnQtYmxvY2snfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn56Gu6K6k5Li65YKA5YSh5oiW55yf5Lq65YKA5YSh77yI5qC55o2u55So5oi36LSh54yu56Gu5a6a77yJJyxcblx0XHRcdFx0XHRcdCfnorroqo3ngrrlgoDlhKHmiJbnnJ/kurrlgoDlhKHvvIjmoLnmk5rkvb/nlKjogIXosqLnjbvnorrlrprvvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NvY2stY29udHJpYnMnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfnoa7orqTkuLrlgoDlhKHmiJbnnJ/kurrlgoDlhKHvvIjnlKjmiLfmn6XmoLjnoa7orqTvvIknLFxuXHRcdFx0XHRcdFx0J+eiuuiqjeeCuuWCgOWEoeaIluecn+S6uuWCgOWEoe+8iOS9v+eUqOiAheafpeaguOeiuuiqje+8iSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiAnc29jay1jdScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnLrlmajkurrlj5HnlJ/mlYXpmpzlubblv4XpobvntKfmgKXlgZzmraInLCAn5qmf5Zmo5Lq655m855Sf5pWF6Zqc5Lim5b+F6aCI57eK5oCl5YGc5q2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdCb3QgYmxvY2sgbWVzc2FnZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0Y3VzdG9tOiB0cnVlLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5bCB56aB55CG55SxJywgJ+iHquioguWwgemOlueQhueUsScpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35ZCN5bCB56aBJywgJ+S9v+eUqOiAheWQjeeoseWwgemOlicpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N55So5oi35ZCN5p2h5L6LJywgJ+mBleWPjeS9v+eUqOiAheWQjeeoseaineS+iycpLCB2YWx1ZTogJ3V3LXVibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5ZCI6KeE55qE55So5oi35ZCNJywgJ+S4jeWQiOimj+eahOS9v+eUqOiAheWQjeeosScpLCB2YWx1ZTogJ3V3LXVibG9jay1pbGxlZ2FsJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCflrqPkvKDmgKfnlKjmiLflkI0nLCAn5a6j5YKz5oCn5L2/55So6ICF5ZCN56ixJyksIHZhbHVlOiAndXctdWJsb2NrLXNwYW0nfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+aUu+WHu+aAp+eUqOaIt+WQjScsICfmlLvmk4rmgKfkvb/nlKjogIXlkI3nqLEnKSwgdmFsdWU6ICd1dy11YmxvY2stYXR0YWNrJ30sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmt7fmt4bmgKfmiJbor6/lr7zmgKfnlKjmiLflkI0nLCAn5re35reG5oCn5oiW6Kqk5bCO5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy11YmxvY2stc3VnZ2VzdGl2ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICflhbbku5bmqKHmnb8nLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7bGFiZWw6ICdyYW5nZSBibG9jaycsIHZhbHVlOiAncmFuZ2UgYmxvY2snLCBmb3JBbm9uT25seTogdHJ1ZX0sXG5cdFx0XHRcdHtsYWJlbDogJ3NjaG9vbCBibG9jaycsIHZhbHVlOiAnc2Nob29sIGJsb2NrJywgZm9yQW5vbk9ubHk6IHRydWV9LFxuXHRcdFx0XHR7bGFiZWw6ICdibG9ja2VkIHByb3h5JywgdmFsdWU6ICdibG9ja2VkIHByb3h5JywgZm9yQW5vbk9ubHk6IHRydWV9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35p+l5qC45bCB56aB77yI5Li755So5oi377yJJywgJ+S9v+eUqOiAheafpeaguOWwgemOlu+8iOS4u+S9v+eUqOiAhe+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnY2hlY2t1c2VyYmxvY2snLFxuXHRcdFx0XHRcdGZvckFub25Pbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35p+l5qC45bCB56aB77yI5a2Q55So5oi377yJJywgJ+S9v+eUqOiAheafpeaguOWwgemOlu+8iOWtkOS9v+eUqOiAhe+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnY2hlY2t1c2VyYmxvY2stYWNjb3VudCcsXG5cdFx0XHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuYmxvY2suYmxvY2tHcm91cHNQYXJ0aWFsID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOingemDqOWIhuWwgeemgeeQhueUsScsICfluLjopovpg6jliIblsIHpjpbnkIbnlLEnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAmueUqOmDqOWIhuWwgeemge+8iOiHquWumuS5ieeQhueUse+8iScsICfpgJrnlKjpg6jliIblsIHpjpbvvIjoh6roqILnkIbnlLHvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3V3LXBibG9jaycsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DpmZDmnJ/pg6jliIblsIHnpoHvvIjoh6rlrprkuYnnkIbnlLHvvIknLCAn54Sh6ZmQ5pyf6YOo5YiG5bCB6Y6W77yI6Ieq6KiC55CG55Sx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1wYmxvY2tpbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZmlsdGVyZWRfYmxvY2tfZ3JvdXBzID0gKGdyb3VwLCBzaG93X3RlbXBsYXRlKSA9PiB7XG5cdFx0cmV0dXJuICQubWFwKGdyb3VwLCAoYmxvY2tHcm91cCkgPT4ge1xuXHRcdFx0Ly8gQWRkIGN1c3RvbSByZWFzb25cblx0XHRcdGlmIChibG9ja0dyb3VwLmN1c3RvbSkge1xuXHRcdFx0XHRpZiAoc2hvd190ZW1wbGF0ZSkge1xuXHRcdFx0XHRcdGxldCB0ZW1wbGF0ZXMgPSAkLm1hcChUd2lua2xlLmdldFByZWYoJ2N1c3RvbUJsb2NrUmVhc29uTGlzdCcpLCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tpdGVtLnZhbHVlXS5jdXN0b20pIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGl0ZW0udmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGVtcGxhdGVzID0gTW9yZWJpdHMuYXJyYXkudW5pcSh0ZW1wbGF0ZXMpO1xuXHRcdFx0XHRcdGJsb2NrR3JvdXAubGlzdCA9ICQubWFwKHRlbXBsYXRlcywgKHRlbXBsYXRlKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmqKHmnb8nLCAn6Ieq6KiC5qih5p2/JyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YmxvY2tHcm91cC5saXN0ID0gJC5tYXAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21CbG9ja1JlYXNvbkxpc3QnKSwgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBpdGVtLmxhYmVsLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYCR7aXRlbS52YWx1ZX18JHtpdGVtLmxhYmVsfWAsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBsaXN0ID0gJC5tYXAoYmxvY2tHcm91cC5saXN0LCAoYmxvY2tQcmVzZXQpID0+IHtcblx0XHRcdFx0aWYgKCFzaG93X3RlbXBsYXRlICYmIGJsb2NrUHJlc2V0Lm1ldGEpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0c3dpdGNoIChibG9ja1ByZXNldC52YWx1ZSkge1xuXHRcdFx0XHRcdGNhc2UgJ3JhbmdlIGJsb2NrJzpcblx0XHRcdFx0XHRcdGlmICghTW9yZWJpdHMuaXAuaXNSYW5nZShyZWxldmFudFVzZXJOYW1lKSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRibG9ja1ByZXNldC5zZWxlY3RlZCA9ICFNb3JlYml0cy5pcC5nZXQ2NChyZWxldmFudFVzZXJOYW1lKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBibG9ja1NldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2Jsb2NrUHJlc2V0LnZhbHVlXTtcblx0XHRcdFx0bGV0IHJlZ2lzdHJhdGlvblJlc3RyaWN0O1xuXHRcdFx0XHRpZiAoYmxvY2tTZXR0aW5ncy5mb3JSZWdpc3RlcmVkT25seSkge1xuXHRcdFx0XHRcdHJlZ2lzdHJhdGlvblJlc3RyaWN0ID0gVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYmxvY2tTZXR0aW5ncy5mb3JBbm9uT25seSkge1xuXHRcdFx0XHRcdHJlZ2lzdHJhdGlvblJlc3RyaWN0ID0gIVR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlZ2lzdHJhdGlvblJlc3RyaWN0ID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIShibG9ja1NldHRpbmdzLnRlbXBsYXRlTmFtZSAmJiBzaG93X3RlbXBsYXRlKSAmJiByZWdpc3RyYXRpb25SZXN0cmljdCkge1xuXHRcdFx0XHRcdGNvbnN0IHRlbXBsYXRlTmFtZSA9IGJsb2NrU2V0dGluZ3MudGVtcGxhdGVOYW1lIHx8IGJsb2NrUHJlc2V0LnZhbHVlO1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRsYWJlbDogKHNob3dfdGVtcGxhdGUgPyBge3ske3RlbXBsYXRlTmFtZX19fTogYCA6ICcnKSArIGJsb2NrUHJlc2V0LmxhYmVsLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGJsb2NrUHJlc2V0LnZhbHVlLFxuXHRcdFx0XHRcdFx0ZGF0YTogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3RlbXBsYXRlLW5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZU5hbWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWQ6ICEhYmxvY2tQcmVzZXQuc2VsZWN0ZWQsXG5cdFx0XHRcdFx0XHRkaXNhYmxlZDogISFibG9ja1ByZXNldC5kaXNhYmxlZCxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmIChsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGxhYmVsOiBibG9ja0dyb3VwLmxhYmVsLFxuXHRcdFx0XHRcdGxpc3QsXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3ByZXNldCA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3Qga2V5ID0gZm9ybS5wcmVzZXQudmFsdWU7XG5cdFx0aWYgKCFrZXkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay51cGRhdGVfZm9ybShlLCBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9ba2V5XSk7XG5cdFx0aWYgKGZvcm0udGVtcGxhdGUpIHtcblx0XHRcdGZvcm0udGVtcGxhdGUudmFsdWUgPSBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9ba2V5XS50ZW1wbGF0ZU5hbWUgfHwga2V5O1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfdGVtcGxhdGUoZSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9leHBpcnkgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtleHBpcnl9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRpZiAoZS50YXJnZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZXhwaXJ5LnBhcmVudE5vZGUsIHRydWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZXhwaXJ5LnBhcmVudE5vZGUsIGZhbHNlKTtcblx0XHRcdGV4cGlyeS52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5zZWVBbHNvcyA9IFtdO1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnRvZ2dsZV9zZWVfYWxzb3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0Y29uc3QgcmVhc29uID0gdGhpcy5mb3JtLnJlYXNvbi52YWx1ZS5yZXBsYWNlKFxuXHRcdFx0bmV3IFJlZ0V4cChgKDwhLS0gKSjlj4Lop4F85Y+D6KaLKSR7VHdpbmtsZS5ibG9jay5zZWVBbHNvcy5qb2luKCfjgIEnKX0oIC0tPilgKSxcblx0XHRcdCcnXG5cdFx0KTtcblx0XHRUd2lua2xlLmJsb2NrLnNlZUFsc29zID0gVHdpbmtsZS5ibG9jay5zZWVBbHNvcy5maWx0ZXIoKGVsKSA9PiB7XG5cdFx0XHRyZXR1cm4gZWwgIT09IHRoaXMudmFsdWU7XG5cdFx0fSk7XG5cdFx0aWYgKHRoaXMuY2hlY2tlZCkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5zZWVBbHNvcy5wdXNoKHRoaXMudmFsdWUpO1xuXHRcdH1cblx0XHRjb25zdCBzZWVBbHNvTWVzc2FnZSA9IFR3aW5rbGUuYmxvY2suc2VlQWxzb3Muam9pbign44CBJyk7XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suc2VlQWxzb3MubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLmZvcm0ucmVhc29uLnZhbHVlID0gYCR7cmVhc29ufTwhLS0gJHt3aW5kb3cud2dVTFMoJ+WPguingScsICflj4PoposnKX0ke3NlZUFsc29NZXNzYWdlfSAtLT5gO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmZvcm0ucmVhc29uLnZhbHVlID0gcmVhc29uO1xuXHRcdH1cblx0fTtcblx0Ly8gTm8gZHNcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay51cGRhdGVfZm9ybSA9IChlLCBkYXRhKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0bGV0IHtleHBpcnl9ID0gZGF0YTtcblx0XHQvLyBkb24ndCBvdmVycmlkZSBvcmlnaW5hbCBleHBpcnkgaWYgdXNlSW5pdGlhbE9wdGlvbnMgaXMgc2V0XG5cdFx0aWYgKCFkYXRhLnVzZUluaXRpYWxPcHRpb25zKSB7XG5cdFx0XHRpZiAoRGF0ZS5wYXJzZShleHBpcnkpKSB7XG5cdFx0XHRcdGV4cGlyeSA9IG5ldyBEYXRlKGV4cGlyeSkudG9HTVRTdHJpbmcoKTtcblx0XHRcdFx0Zm9ybS5leHBpcnlfcHJlc2V0LnZhbHVlID0gJ2N1c3RvbSc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3JtLmV4cGlyeV9wcmVzZXQudmFsdWUgPSBkYXRhLmV4cGlyeSB8fCAnY3VzdG9tJztcblx0XHRcdH1cblx0XHRcdGZvcm0uZXhwaXJ5LnZhbHVlID0gZXhwaXJ5O1xuXHRcdFx0aWYgKGZvcm0uZXhwaXJ5X3ByZXNldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uZXhwaXJ5LnBhcmVudE5vZGUsIHRydWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uZXhwaXJ5LnBhcmVudE5vZGUsIGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gYm9vbGVhbi1mbGlwcGVkIG9wdGlvbnMsIG1vcmUgYXQgW1ttdzpBUEk6QmxvY2tdXVxuXHRcdGRhdGEuZGlzYWJsZXRhbGsgPSBkYXRhLmRpc2FibGV0YWxrID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGRhdGEuZGlzYWJsZXRhbGs7XG5cdFx0ZGF0YS5oYXJkYmxvY2sgPSBkYXRhLmhhcmRibG9jayA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBkYXRhLmhhcmRibG9jaztcblx0XHQvLyBkaXNhYmxlIGF1dG9ibG9jayBpZiBibG9ja2luZyBhIGJvdFxuXHRcdGlmIChUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCB8fCAvYm90XFxiL2kudGVzdChyZWxldmFudFVzZXJOYW1lKSkge1xuXHRcdFx0ZGF0YS5hdXRvYmxvY2sgPSBmYWxzZTtcblx0XHR9XG5cdFx0JChmb3JtKVxuXHRcdFx0LmZpbmQoJ1tuYW1lPWZpZWxkX2Jsb2NrX29wdGlvbnNdJylcblx0XHRcdC5maW5kKCc6Y2hlY2tib3gnKVxuXHRcdFx0LmVhY2goKF9pLCBlbCkgPT4ge1xuXHRcdFx0XHQvLyBkb24ndCBvdmVycmlkZSBvcmlnaW5hbCBvcHRpb25zIGlmIHVzZUluaXRpYWxPcHRpb25zIGlzIHNldFxuXHRcdFx0XHRpZiAoZGF0YS51c2VJbml0aWFsT3B0aW9ucyAmJiBkYXRhW2VsLm5hbWVdID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGVsLm5hbWUgPT09ICdjbG9zZXZpcCcpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgY2hlY2sgPSBkYXRhW2VsLm5hbWVdID09PSAnJyB8fCAhIWRhdGFbZWwubmFtZV07XG5cdFx0XHRcdCQoZWwpLnByb3AoJ2NoZWNrZWQnLCBjaGVjayk7XG5cdFx0XHR9KTtcblx0XHRpZiAoZGF0YS5wcmVwZW5kUmVhc29uICYmIGRhdGEucmVhc29uKSB7XG5cdFx0XHRmb3JtLnJlYXNvbi52YWx1ZSA9IGAke2RhdGEucmVhc29ufe+8myR7Zm9ybS5yZWFzb24udmFsdWV9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9ybS5yZWFzb24udmFsdWUgPSBkYXRhLnJlYXNvbiB8fCAnJztcblx0XHR9XG5cdFx0Ly8gQ2xlYXIgYW5kL29yIHNldCBhbnkgcGFydGlhbCBwYWdlIG9yIG5hbWVzcGFjZSByZXN0cmljdGlvbnNcblx0XHRpZiAoZm9ybS5wYWdlcmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRjb25zdCAkcGFnZVNlbGVjdCA9ICQoZm9ybSkuZmluZCgnW25hbWU9cGFnZXJlc3RyaWN0aW9uc10nKTtcblx0XHRcdGNvbnN0ICRuYW1lc3BhY2VTZWxlY3QgPSAkKGZvcm0pLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKTtcblx0XHRcdC8vIFJlc3BlY3QgdXNlSW5pdGlhbE9wdGlvbnMgYnkgY2xlYXJpbmcgZGF0YSB3aGVuIHN3aXRjaGluZyBwcmVzZXRzXG5cdFx0XHQvLyBJbiBwcmFjdGljZSwgdGhpcyB3aWxsIGFsd2F5cyBjbGVhciwgc2luY2Ugbm8gcGFydGlhbCBwcmVzZXRzIHVzZSBpdFxuXHRcdFx0aWYgKCFkYXRhLnVzZUluaXRpYWxPcHRpb25zKSB7XG5cdFx0XHRcdCRwYWdlU2VsZWN0LnZhbChudWxsKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdFx0JG5hbWVzcGFjZVNlbGVjdC52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBBZGQgYW55IHByZXNldCBvcHRpb25zOyBpbiBwcmFjdGljZSwganVzdCB1c2VkIGZvciBwcmlvciBibG9jayBzZXR0aW5nc1xuXHRcdFx0aWYgKGRhdGEucmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRcdGlmIChkYXRhLnJlc3RyaWN0aW9ucy5wYWdlcyAmJiAhJHBhZ2VTZWxlY3QudmFsKCkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZXMgPSBkYXRhLnJlc3RyaWN0aW9ucy5wYWdlcy5tYXAoKHByKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcHIudGl0bGU7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly8gc2luY2UgcGFnZSByZXN0cmljdGlvbnMgdXNlIGFuIGFqYXggc291cmNlLCB3ZVxuXHRcdFx0XHRcdC8vIHNob3J0LWNpcmN1aXQgdGhhdCBhbmQganVzdCBhZGQgYSBuZXcgb3B0aW9uXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG5cdFx0XHRcdFx0XHRpZiAoISRwYWdlU2VsZWN0LmZpbmQoYG9wdGlvblt2YWx1ZT0nJHskLmVzY2FwZVNlbGVjdG9yKHBhZ2UpfSddYCkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5ld09wdGlvbiA9IG5ldyBPcHRpb24ocGFnZSwgcGFnZSwgdHJ1ZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdCRwYWdlU2VsZWN0LmFwcGVuZChuZXdPcHRpb24pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQkcGFnZVNlbGVjdFxuXHRcdFx0XHRcdFx0LnZhbChbLi4uJHBhZ2VTZWxlY3QudmFsKCksIC4uLihBcnJheS5pc0FycmF5KHBhZ2VzKSA/IHBhZ2VzIDogW3BhZ2VzXSldKVxuXHRcdFx0XHRcdFx0LnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnJlc3RyaWN0aW9ucy5uYW1lc3BhY2VzKSB7XG5cdFx0XHRcdFx0JG5hbWVzcGFjZVNlbGVjdFxuXHRcdFx0XHRcdFx0LnZhbChbXG5cdFx0XHRcdFx0XHRcdC4uLiRuYW1lc3BhY2VTZWxlY3QudmFsKCksXG5cdFx0XHRcdFx0XHRcdC4uLihBcnJheS5pc0FycmF5KGRhdGEucmVzdHJpY3Rpb25zLm5hbWVzcGFjZXMpXG5cdFx0XHRcdFx0XHRcdFx0PyBkYXRhLnJlc3RyaWN0aW9ucy5uYW1lc3BhY2VzXG5cdFx0XHRcdFx0XHRcdFx0OiBbZGF0YS5yZXN0cmljdGlvbnMubmFtZXNwYWNlc10pLFxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHRcdC50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfdGVtcGxhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHt2YWx1ZX0gPSBmb3JtLnRlbXBsYXRlO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW3ZhbHVlXTtcblx0XHRjb25zdCBibG9ja0JveCA9ICQoZm9ybSkuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9YmxvY2tdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgcGFydGlhbEJveCA9ICQoZm9ybSkuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0ZW1wbGF0ZUJveCA9ICQoZm9ybSkuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Ly8gQmxvY2sgZm9ybSBpcyBub3QgcHJlc2VudFxuXHRcdGlmICghYmxvY2tCb3gpIHtcblx0XHRcdGlmIChzZXR0aW5ncy5pbmRlZmluaXRlIHx8IHNldHRpbmdzLm5vbnN0YW5kYXJkKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID09PSBudWxsKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeSA9IGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlIHx8ICcnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0udGVtcGxhdGVfZXhwaXJ5LnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgPSAnaW5maW5pdHknO1xuXHRcdFx0fSBlbHNlIGlmIChmb3JtLnRlbXBsYXRlX2V4cGlyeS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJykge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlID0gVHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeTtcblx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLnRlbXBsYXRlX2V4cGlyeS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkpIHtcblx0XHRcdFx0Zm9ybS5leHBpcnkudmFsdWUgPSBUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5O1xuXHRcdFx0fVxuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0ubm90YWxrLnBhcmVudE5vZGUsICFzZXR0aW5ncy5ub25zdGFuZGFyZCk7XG5cdFx0XHQvLyBQYXJ0aWFsXG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ub2VtYWlsX3RlbXBsYXRlLnBhcmVudE5vZGUsIHBhcnRpYWxCb3gpO1xuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0ubm9jcmVhdGVfdGVtcGxhdGUucGFyZW50Tm9kZSwgcGFydGlhbEJveCk7XG5cdFx0fSBlbHNlIGlmICh0ZW1wbGF0ZUJveCkge1xuXHRcdFx0Ly8gT25seSBwcmVzZW50IGlmIGJsb2NrICYmIHRlbXBsYXRlIGZvcm1zIGJvdGggdmlzaWJsZVxuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KFxuXHRcdFx0XHRmb3JtLmJsYW5rX2R1cmF0aW9uLnBhcmVudE5vZGUsXG5cdFx0XHRcdCFzZXR0aW5ncy5pbmRlZmluaXRlICYmICFzZXR0aW5ncy5ub25zdGFuZGFyZFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0Ly8gT25seSBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgaWYgdGVtcGxhdGUgZm9ybSBpcyBwcmVzZW50XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uYXJ0aWNsZS5wYXJlbnROb2RlLCBzZXR0aW5ncyAmJiAhIXNldHRpbmdzLnBhZ2VQYXJhbSk7XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGZvcm0uYmxvY2tfcmVhc29uLnBhcmVudE5vZGUsIHNldHRpbmdzICYmICEhc2V0dGluZ3MucmVhc29uUGFyYW0pO1xuXHRcdC8vIEFwcGx5IHJlYXNvbiBmcm9tIGJsb2NrUHJlc2V0c0luZm9cblx0XHRpZiAoc2V0dGluZ3MucmVhc29uUGFyYW0pIHtcblx0XHRcdGZvcm0uYmxvY2tfcmVhc29uLnZhbHVlID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2Zvcm0ucHJlc2V0LnZhbHVlXS5yZWFzb24gfHwgJyc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcm0uYmxvY2tfcmVhc29uLnZhbHVlID0gJyc7XG5cdFx0fVxuXHRcdC8vIFBhcnRpYWwgYmxvY2tcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5hcmVhLnBhcmVudE5vZGUsIHBhcnRpYWxCb3ggJiYgIWJsb2NrQm94KTtcblx0XHRmb3JtLnJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID0gbnVsbDtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcmV2aWV3ID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRhcnRpY2xlOiBmb3JtLmFydGljbGUudmFsdWUsXG5cdFx0XHRibGFua19kdXJhdGlvbjogZm9ybS5ibGFua19kdXJhdGlvbiA/IGZvcm0uYmxhbmtfZHVyYXRpb24uY2hlY2tlZCA6IGZhbHNlLFxuXHRcdFx0ZGlzYWJsZXRhbGs6IGZvcm0uZGlzYWJsZXRhbGsuY2hlY2tlZCB8fCAoZm9ybS5ub3RhbGsgPyBmb3JtLm5vdGFsay5jaGVja2VkIDogZmFsc2UpLFxuXHRcdFx0ZXhwaXJ5OiBmb3JtLnRlbXBsYXRlX2V4cGlyeSA/IGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlIDogZm9ybS5leHBpcnkudmFsdWUsXG5cdFx0XHRoYXJkYmxvY2s6IFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkID8gZm9ybS5hdXRvYmxvY2suY2hlY2tlZCA6IGZvcm0uaGFyZGJsb2NrLmNoZWNrZWQsXG5cdFx0XHRpbmRlZmluaXRlOiBNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShcblx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkgPyBmb3JtLnRlbXBsYXRlX2V4cGlyeS52YWx1ZSA6IGZvcm0uZXhwaXJ5LnZhbHVlXG5cdFx0XHQpLFxuXHRcdFx0cmVhc29uOiBmb3JtLmJsb2NrX3JlYXNvbi52YWx1ZSxcblx0XHRcdHRlbXBsYXRlOiBmb3JtLnRlbXBsYXRlLnZhbHVlLFxuXHRcdFx0cGFydGlhbDogJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpLmlzKCc6Y2hlY2tlZCcpLFxuXHRcdFx0cGFnZXJlc3RyaWN0aW9uczogJChmb3JtLnBhZ2VyZXN0cmljdGlvbnMpLnZhbCgpIHx8IFtdLFxuXHRcdFx0bmFtZXNwYWNlcmVzdHJpY3Rpb25zOiAkKGZvcm0ubmFtZXNwYWNlcmVzdHJpY3Rpb25zKS52YWwoKSB8fCBbXSxcblx0XHRcdG5vZW1haWw6IGZvcm0ubm9lbWFpbC5jaGVja2VkIHx8IChmb3JtLm5vZW1haWxfdGVtcGxhdGUgPyBmb3JtLm5vZW1haWxfdGVtcGxhdGUuY2hlY2tlZCA6IGZhbHNlKSxcblx0XHRcdG5vY3JlYXRlOiBmb3JtLm5vY3JlYXRlLmNoZWNrZWQgfHwgKGZvcm0ubm9jcmVhdGVfdGVtcGxhdGUgPyBmb3JtLm5vY3JlYXRlX3RlbXBsYXRlLmNoZWNrZWQgOiBmYWxzZSksXG5cdFx0XHRhcmVhOiBmb3JtLmFyZWEudmFsdWUsXG5cdFx0fTtcblx0XHRjb25zdCB0ZW1wbGF0ZVRleHQgPSBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmdldEJsb2NrTm90aWNlV2lraXRleHQocGFyYW1zKTtcblx0XHRmb3JtLnByZXZpZXdlci5iZWdpblJlbmRlcih0ZW1wbGF0ZVRleHQsIGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfS9XaWtpdGV4dGApOyAvLyBGb3JjZSB3aWtpdGV4dC9jb3JyZWN0IHVzZXJuYW1lXG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZXZhbHVhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZS50YXJnZXQpO1xuXHRcdGNvbnN0ICRmb3JtID0gJChlLnRhcmdldCk7XG5cdFx0Y29uc3QgdG9CbG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPWJsb2NrXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRvV2FybiA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRlbXBsYXRlXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRvUGFydGlhbCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9UYWcgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10YWddJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9Qcm90ZWN0ID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0b1VuYmxvY2sgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT11bmJsb2NrXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGxldCBibG9ja29wdGlvbnMgPSB7fTtcblx0XHRsZXQgdGVtcGxhdGVvcHRpb25zID0ge307XG5cdFx0bGV0IHVuYmxvY2tvcHRpb25zID0ge307XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfdGVtcGxhdGVfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfdGFnX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRmb3JtLmZpbmQoJ1tuYW1lPWZpZWxkX3VuYmxvY2tfb3B0aW9uc10nKSk7XG5cdFx0YmxvY2tvcHRpb25zID0gVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zO1xuXHRcdHVuYmxvY2tvcHRpb25zID0gVHdpbmtsZS5ibG9jay5maWVsZF91bmJsb2NrX29wdGlvbnM7XG5cdFx0Y29uc3QgdG9DbG9zZXZpcCA9ICEhYmxvY2tvcHRpb25zLmNsb3NldmlwO1xuXHRcdHRlbXBsYXRlb3B0aW9ucyA9IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucztcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuZGlzYWJsZXRhbGsgPSAhISh0ZW1wbGF0ZW9wdGlvbnMuZGlzYWJsZXRhbGsgfHwgYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrKTtcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuaGFyZGJsb2NrID0gISFibG9ja29wdGlvbnMuaGFyZGJsb2NrO1xuXHRcdC8vIHJlbW92ZSBleHRyYW5lb3VzXG5cdFx0ZGVsZXRlIGJsb2Nrb3B0aW9ucy5leHBpcnlfcHJlc2V0O1xuXHRcdGRlbGV0ZSBibG9ja29wdGlvbnMuY2xvc2V2aXA7XG5cdFx0Ly8gUGFydGlhbCBBUEkgcmVxdWlyZXMgdGhpcyB0byBiZSBnb25lLCBub3QgZmFsc2Ugb3IgMFxuXHRcdGlmICh0b1BhcnRpYWwpIHtcblx0XHRcdGJsb2Nrb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcblx0XHRcdHRlbXBsYXRlb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcblx0XHR9XG5cdFx0dGVtcGxhdGVvcHRpb25zLnBhZ2VyZXN0cmljdGlvbnMgPSAkZm9ybS5maW5kKCdbbmFtZT1wYWdlcmVzdHJpY3Rpb25zXScpLnZhbCgpIHx8IFtdO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMgPSAkZm9ybS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJykudmFsKCkgfHwgW107XG5cdFx0Ly8gRm9ybWF0IGZvciBBUEkgaGVyZSByYXRoZXIgdGhhbiBpbiBzYXZlRmllbGRzZXRcblx0XHRibG9ja29wdGlvbnMucGFnZXJlc3RyaWN0aW9ucyA9IHRlbXBsYXRlb3B0aW9ucy5wYWdlcmVzdHJpY3Rpb25zLmpvaW4oJ3wnKTtcblx0XHRibG9ja29wdGlvbnMubmFtZXNwYWNlcmVzdHJpY3Rpb25zID0gdGVtcGxhdGVvcHRpb25zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5qb2luKCd8Jyk7XG5cdFx0Ly8gdXNlIGJsb2NrIHNldHRpbmdzIGFzIHdhcm4gb3B0aW9ucyB3aGVyZSBub3Qgc3VwcGxpZWRcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuc3VtbWFyeSB8fD0gYmxvY2tvcHRpb25zLnJlYXNvbjtcblx0XHR0ZW1wbGF0ZW9wdGlvbnMuZXhwaXJ5ID0gdGVtcGxhdGVvcHRpb25zLnRlbXBsYXRlX2V4cGlyeSB8fCBibG9ja29wdGlvbnMuZXhwaXJ5O1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5wcmVzZXQgPSB0b0Jsb2NrID8gcGFyYW1zLnByZXNldCA6IG51bGw7XG5cdFx0Ly8gQ2hlY2sgdGFnc1xuXHRcdC8vIEdpdmVuIGFuIGFycmF5IG9mIGluY29tcGF0aWJsZSB0YWdzLCBjaGVjayBpZiB3ZSBoYXZlIHR3byBvciBtb3JlIHNlbGVjdGVkXG5cdFx0Y29uc3QgY2hlY2tJbmNvbXBhdGlibGUgPSAoY29uZmxpY3RzLCBleHRyYSkgPT4ge1xuXHRcdFx0Y29uc3QgY291bnQgPSBjb25mbGljdHMucmVkdWNlKChzdW0sIHRhZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKHN1bSArPSBwYXJhbXMudGFnLmluY2x1ZGVzKHRhZykpO1xuXHRcdFx0fSwgMCk7XG5cdFx0XHRpZiAoY291bnQgPiAxKSB7XG5cdFx0XHRcdGxldCBtZXNzYWdlID0gYCR7d2luZG93LndnVUxTKCfor7flnKjku6XkuIvmoIfnrb7kuK3mi6nkuIDkvb/nlKgnLCAn6KuL5Zyo5Lul5LiL5qiZ57Gk5Lit5pOH5LiA5L2/55SoJyl977yae3ske2NvbmZsaWN0cy5qb2luKFxuXHRcdFx0XHRcdCd9feOAgXt7J1xuXHRcdFx0XHQpfX1944CCYDtcblx0XHRcdFx0bWVzc2FnZSArPSBleHRyYSB8fCAnJztcblx0XHRcdFx0bXcubm90aWZ5KG1lc3NhZ2UsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0aWYgKHRvVGFnKSB7XG5cdFx0XHRpZiAocGFyYW1zLnRhZy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+36Iez5bCR6YCJ5oup5LiA5Liq55So5oi36aG15qCH6K6w77yBJywgJ+iri+iHs+WwkemBuOaTh+S4gOWAi+S9v+eUqOiAhemggemdouaomeiomO+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNoZWNrSW5jb21wYXRpYmxlKFxuXHRcdFx0XHRcdFsnQmxvY2tlZCB1c2VyJywgJ1NvY2twdXBwZXQnXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0fX3lt7LmtrXnm5Z7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCd7e1NvY2twdXBwZXR9feW3sua2teiTi3t7QmxvY2tlZCB1c2VyfX3nmoTlip/og73jgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjaGVja0luY29tcGF0aWJsZShcblx0XHRcdFx0XHRbJ0Jsb2NrZWQgdXNlcicsICdTb2NrcHVwcGV0ZWVyJ10sXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J3t7U29ja3B1cHBldGVlcn195bey5ra155uWe3tCbG9ja2VkIHVzZXJ9feeahOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0ZWVyfX3lt7LmtrXok4t7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0Y2hlY2tJbmNvbXBhdGlibGUoXG5cdFx0XHRcdFx0WydTb2NrcHVwcGV0JywgJ1NvY2twdXBwZXRlZXInXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+S7juS4u+i0puWPt+WSjOWIhui6q+i0puWPt+S4remAieaLqeS4gOS4quOAgicsICfoq4vlvp7kuLvos6zomZ/lkozliIbouqvos6zomZ/kuK3pgbjmk4fkuIDlgIvjgIInKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWcuaW5jbHVkZXMoJ1NvY2twdXBwZXQnKSAmJiBwYXJhbXMuc3BwVXNlcm5hbWUudHJpbSgpID09PSAnJykge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5DkvpvlgoDlhKHotKblj7fnmoTkuLvotKblj7fnlKjmiLflkI3vvIEnLCAn6KuL5o+Q5L6b5YKA5YSh6LOs6Jmf55qE5Li76LOs6Jmf5L2/55So6ICF5ZCN56ix77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRvQmxvY2spIHtcblx0XHRcdGlmIChibG9ja29wdGlvbnMucGFydGlhbCkge1xuXHRcdFx0XHRpZiAoYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrICYmICFibG9ja29wdGlvbnMubmFtZXNwYWNlcmVzdHJpY3Rpb25zLmluY2x1ZGVzKCczJykpIHtcblx0XHRcdFx0XHRtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfpg6jliIblsIHnpoHml6Dms5XpmLvmraLnvJbovpHoh6rlt7HnmoTorqjorrrpobXvvIzpmaTpnZ7kuZ/lsIHnpoHkuoZVc2VyIHRhbGvlkb3lkI3nqbrpl7TvvIEnLFxuXHRcdFx0XHRcdFx0XHQn6YOo5YiG5bCB6Y6W54Sh5rOV6Zi75q2i57eo6Lyv6Ieq5bex55qE6KiO6KuW6aCB77yM6Zmk6Z2e5Lmf5bCB6Y6W5LqGVXNlciB0YWxr5ZG95ZCN56m66ZaT77yBJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghYmxvY2tvcHRpb25zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucyAmJiAhYmxvY2tvcHRpb25zLnBhZ2VyZXN0cmljdGlvbnMpIHtcblx0XHRcdFx0XHRpZiAoIWJsb2Nrb3B0aW9ucy5ub2VtYWlsICYmICFibG9ja29wdGlvbnMubm9jcmVhdGUpIHtcblx0XHRcdFx0XHRcdC8vIEJsYW5rIGVudHJpZXMgdGVjaG5pY2FsbHkgYWxsb3dlZFxuXHRcdFx0XHRcdFx0bXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ayoeaciemAieaLqemhtemdouaIluWRveWQjeepuumXtO+8jOS5n+ayoeacieWBnOeUqOeUteWtkOmCruS7tuaIluemgeatouWIm+W7uui0puWPt++8m+ivt+mAieaLqeiHs+WwkeS4gOS4qumAiemhueS7peW6lOeUqOmDqOWIhuWwgeemge+8gScsXG5cdFx0XHRcdFx0XHRcdFx0J+aykuaciemBuOaTh+mggemdouaIluWRveWQjeepuumWk++8jOS5n+aykuacieWBnOeUqOmbu+WtkOmDteS7tuaIluemgeatouW7uueri+izrOiZn++8m+iri+mBuOaTh+iHs+WwkeS4gOWAi+mBuOmgheS7peaHieeUqOmDqOWIhuWwgemOlu+8gSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIbopoHov5vooYzlsIHnpoHvvIzkvYbmsqHmnInpmLvmraLku7vkvZXpobXpnaLmiJblkb3lkI3nqbrpl7TnmoTnvJbovpHvvIznoa7lrpropoHnu6fnu63vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIfopoHpgLLooYzlsIHpjpbvvIzkvYbmspLmnInpmLvmraLku7vkvZXpoIHpnaLmiJblkb3lkI3nqbrplpPnmoTnt6jovK/vvIznorrlrpropoHnubznuozvvJ8nXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghYmxvY2tvcHRpb25zLmV4cGlyeSkge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5Dkvpvov4fmnJ/ml7bpl7TvvIEnLCAn6KuL5o+Q5L6b6YGO5pyf5pmC6ZaT77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0gZWxzZSBpZiAoTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoYmxvY2tvcHRpb25zLmV4cGlyeSkgJiYgIVR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+emgeatouaXoOmZkOacn+WwgeemgUlQ5Zyw5Z2A77yBJywgJ+emgeatoueEoemZkOacn+WwgemOlklQ5L2N5Z2A77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghYmxvY2tvcHRpb25zLnJlYXNvbikge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5DkvpvlsIHnpoHnkIbnlLHvvIEnLCAn6KuL5o+Q5L6b5bCB6Y6W55CG55Sx77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+aJp+ihjOWwgeemgScsICfln7fooYzlsIHpjpYnKSk7XG5cdFx0XHRibG9ja29wdGlvbnMuYWN0aW9uID0gJ2Jsb2NrJztcblx0XHRcdGJsb2Nrb3B0aW9ucy51c2VyID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGJvb2xlYW4tZmxpcHBlZCBvcHRpb25zXG5cdFx0XHRibG9ja29wdGlvbnMuYW5vbm9ubHkgPSBibG9ja29wdGlvbnMuaGFyZGJsb2NrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdGJsb2Nrb3B0aW9ucy5hbGxvd3VzZXJ0YWxrID0gYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdC8qKlxuXHRcdFx0ICogQ2hlY2sgaWYgYmxvY2sgc3RhdHVzIGNoYW5nZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZm9ybS5cblx0XHRcdCAqIFRoZXJlJ3MgYSBsb3QgdG8gY29uc2lkZXIgaGVyZS4gbGlzdD1ibG9ja3MgcHJvdmlkZXMgdGhlXG5cdFx0XHQgKiBjdXJyZW50IGJsb2NrIHN0YXR1cywgYnV0IHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gaXNzdWVzIHdpdGhcblx0XHRcdCAqIHJlbHlpbmcgb24gaXQuIEZpcnN0LCB0aGUgaWQgZG9lc24ndCB1cGRhdGUgb24gYSByZWJsb2NrLFxuXHRcdFx0ICogbWVhbmluZyB0aGUgaW5kaXZpZHVhbCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgY29tcGFyZWQuIFRoaXNcblx0XHRcdCAqIGNhbiBiZSBkb25lIHJvdWdobHkgd2l0aCBKU09OLnN0cmluZ2lmeSAtIHdlIGNhbiB0aGFua2Z1bGx5XG5cdFx0XHQgKiByZWx5IG9uIG9yZGVyIGZyb20gdGhlIHNlcnZlciwgYWx0aG91Z2ggc29ydGluZyB3b3VsZCBiZVxuXHRcdFx0ICogZmluZSBpZiBub3QgLSBidXQgZmFsc2V5IHZhbHVlcyBhcmUgcHJvYmxlbWF0aWMgYW5kIGlzXG5cdFx0XHQgKiBub24taWRlYWwuIE1vcmUgaW1wb3J0YW50bHksIGxpc3Q9YmxvY2tzIHdvbid0IGluZGljYXRlIGlmIGFcblx0XHRcdCAqIG5vbi1ibG9ja2VkIHVzZXIgaXMgYmxvY2tlZCB0aGVuIHVuYmxvY2tlZC4gVGhpcyBzaG91bGQgYmVcblx0XHRcdCAqIGV4Y2VlZGluZ3kgcmFyZSwgYnV0IHJlZ2FyZGxlc3MsIHdlIHRodXMgbmVlZCB0byBjaGVja1xuXHRcdFx0ICogbGlzdD1sb2dldmVudHMsIHdoaWNoIGhhcyBhIG5pY2VseSB1cGRhdGluZyBsb2dpZFxuXHRcdFx0ICogcGFyYW1ldGVyLiBXZSBjYW4ndCByZWx5IGp1c3Qgb24gdGhhdCwgdGhvdWdoLCBzaW5jZSBpdFxuXHRcdFx0ICogZG9lc24ndCBhY2NvdW50IGZvciBibG9ja3MgdGhhdCBoYXZlIGV4cGlyZWQgb24gdGhlaXIgb3duLlxuXHRcdFx0ICogQXMgc3VjaCwgd2UgdXNlIGJvdGguIFVzaW5nIHNvbWUgdGVybmFyaWVzLCB0aGUgbG9naWRcblx0XHRcdCAqIHZhcmlhYmxlcyBhcmUgZmFsc2UgaWYgdGhlcmUncyBubyBsb2dldmVudHMsIHNvIGlmIHRoZXlcblx0XHRcdCAqIGFyZW4ndCBlcXVhbCB3ZSBkZWZpbnRlbHkgaGF2ZSBhIGNoYW5nZWQgZW50cnkgKHNlbmRcblx0XHRcdCAqIGNvbmZpcm1hdGlvbikuIElmIHRoZXkgYXJlIGVxdWFsLCB0aGVuIGVpdGhlciB0aGUgdXNlciB3YXNcblx0XHRcdCAqIG5ldmVyIGJsb2NrZWQgKHRoZSBibG9jayBzdGF0dXNlcyB3aWxsIGJlIGVxdWFsLCBub1xuXHRcdFx0ICogY29uZmlybWF0aW9uKSBvciB0aGVyZSdzIG5vIG5ldyBibG9jaywgaW4gd2hpY2ggY2FzZSBlaXRoZXJcblx0XHRcdCAqIGEgYmxvY2sgZXhwaXJlZCAoZGlmZmVyZW50IHN0YXR1c2VzLCBjb25maXJtYXRpb24pIG9yIHRoZVxuXHRcdFx0ICogc2FtZSBibG9jayBpcyBzdGlsbCBhY3RpdmUgKHNhbWUgc3RhdHVzLCBubyBjb25maXJtYXRpb24pLlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0bGlzdDogJ2Jsb2Nrc3xsb2dldmVudHMnLFxuXHRcdFx0XHRsZXR5cGU6ICdibG9jaycsXG5cdFx0XHRcdGxlbGltaXQ6IDEsXG5cdFx0XHRcdGxldGl0bGU6IGBVc2VyOiR7YmxvY2tvcHRpb25zLnVzZXJ9YCxcblx0XHRcdH07XG5cdFx0XHQvLyBia3VzZXJzIGRvZXNuJ3QgY2F0Y2ggc2luZ2xlIElQcyBibG9ja2VkIGFzIHBhcnQgb2YgYSByYW5nZSBibG9ja1xuXHRcdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MoYmxvY2tvcHRpb25zLnVzZXIsIHRydWUpKSB7XG5cdFx0XHRcdHF1ZXJ5LmJraXAgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHF1ZXJ5LmJrdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubGlzdCArPSAnfHVzZXJzJztcblx0XHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3Vwcyc7XG5cdFx0XHRcdHF1ZXJ5LnVzdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubWV0YSA9ICd0b2tlbnMnO1xuXHRcdFx0XHRxdWVyeS50eXBlID0gJ3VzZXJyaWdodHMnO1xuXHRcdFx0fVxuXHRcdFx0YXBpLmdldChxdWVyeSkudGhlbigoZGF0YSkgPT4ge1xuXHRcdFx0XHRsZXQgW2Jsb2NrXSA9IGRhdGEucXVlcnkuYmxvY2tzO1xuXHRcdFx0XHQvLyBBcyB3aXRoIHRoZSBpbml0aWFsIGRhdGEgZmV0Y2gsIGlmIGFuIElQIGlzIGJsb2NrZWRcblx0XHRcdFx0Ly8gKmFuZCogcmFuZ2VibG9ja2VkLCB0aGlzIHdvdWxkIG9ubHkgZ3JhYiB3aGljaGV2ZXJcblx0XHRcdFx0Ly8gYmxvY2sgaXMgbW9yZSByZWNlbnQsIHdoaWNoIHdvdWxkIGxpa2VseSBtZWFuIGFcblx0XHRcdFx0Ly8gbWlzbWF0Y2guICBIb3dldmVyLCBpZiB0aGUgcmFuZ2VibG9jayBpcyB1cGRhdGVkXG5cdFx0XHRcdC8vIHdoaWxlIGZpbGxpbmcgb3V0IHRoZSBmb3JtLCB0aGlzIHdvbid0IGRldGVjdCB0aGF0LFxuXHRcdFx0XHQvLyBidXQgdGhhdCdzIHByb2JhYmx5IGZpbmUuXG5cdFx0XHRcdGlmIChkYXRhLnF1ZXJ5LmJsb2Nrcy5sZW5ndGggPiAxICYmIGJsb2NrLnVzZXIgIT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0XHRbLCBibG9ja10gPSBkYXRhLnF1ZXJ5LmJsb2Nrcztcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBbbG9nZXZlbnRzXSA9IGRhdGEucXVlcnkubG9nZXZlbnRzO1xuXHRcdFx0XHRjb25zdCB1c2VyID0gZGF0YS5xdWVyeS51c2VycyA/IGRhdGEucXVlcnkudXNlcnNbMF0gOiBudWxsO1xuXHRcdFx0XHRjb25zdCBsb2dpZCA9IGRhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA/IGxvZ2V2ZW50cy5sb2dpZCA6IGZhbHNlO1xuXHRcdFx0XHRpZiAobG9naWQgIT09IFR3aW5rbGUuYmxvY2suYmxvY2tMb2dJZCB8fCAhIWJsb2NrICE9PSAhIVR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0XHRcdGxldCBtZXNzYWdlID0gYmxvY2tvcHRpb25zLnVzZXIgKyB3aW5kb3cud2dVTFMoJ+eahOWwgeemgeeKtuaAgeW3suiiq+S/ruaUueOAgicsICfnmoTlsIHpjpbni4DmhYvlt7Looqvkv67mlLnjgIInKTtcblx0XHRcdFx0XHRpZiAoYmxvY2spIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2UgKz0gd2luZG93LndnVUxTKCfmlrDnirbmgIHvvJonLCAn5paw54uA5oWL77yaJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2UgKz0gd2luZG93LndnVUxTKCfmnIDmlrDml6Xlv5fvvJonLCAn5pyA5paw5pel6KqM77yaJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxldCBsb2dFeHBpcnkgPSAnJztcblx0XHRcdFx0XHRpZiAobG9nZXZlbnRzLnBhcmFtcy5kdXJhdGlvbikge1xuXHRcdFx0XHRcdFx0aWYgKGxvZ2V2ZW50cy5wYXJhbXMuZHVyYXRpb24gPT09ICdpbmZpbml0eScpIHtcblx0XHRcdFx0XHRcdFx0bG9nRXhwaXJ5ID0gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBleHBpcnlEYXRlID0gbmV3IE1vcmViaXRzLmRhdGUobG9nZXZlbnRzLnBhcmFtcy5leHBpcnkpO1xuXHRcdFx0XHRcdFx0XHRsb2dFeHBpcnkgKz1cblx0XHRcdFx0XHRcdFx0XHQoZXhwaXJ5RGF0ZS5pc0JlZm9yZShuZXcgRGF0ZSgpKSA/IHdpbmRvdy53Z1VMUygn6L+H5pyf5LqOJywgJ+mBjuacn+aWvCcpIDogJ+ebtOWIsCcpICtcblx0XHRcdFx0XHRcdFx0XHRleHBpcnlEYXRlLmNhbGVuZGFyKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIG5vIGR1cmF0aW9uLCBhY3Rpb249dW5ibG9jaywganVzdCBzaG93IHRpbWVzdGFtcFxuXHRcdFx0XHRcdFx0bG9nRXhwaXJ5ID0gYOaWvCR7bmV3IE1vcmViaXRzLmRhdGUobG9nZXZlbnRzLnRpbWVzdGFtcCkuY2FsZW5kYXIoKX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtZXNzYWdlICs9IGDnlLEke2xvZ2V2ZW50cy51c2VyfSR7d2luZG93LndnVUxTKCfku6XigJwnLCAn5Lul44CMJyl9JHtsb2dldmVudHMuY29tbWVudH0ke3dpbmRvdy53Z1VMUygn4oCdJywgJ+OAjScpfSR7XG5cdFx0XHRcdFx0XHRibG9ja0FjdGlvblRleHRbbG9nZXZlbnRzLmFjdGlvbl1cblx0XHRcdFx0XHR9JHtsb2dFeHBpcnl9JHt3aW5kb3cud2dVTFMoJ++8jOS9oOaDs+imgeS7peS9oOeahOiuvue9ruabtOaUueWwgeemgeWQl++8nycsICfvvIzkvaDmg7PopoHku6XkvaDnmoToqK3lrprorormm7TlsIHpjpbll47vvJ8nKX1gO1xuXHRcdFx0XHRcdGlmICghY29uZmlybShtZXNzYWdlKSkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5omn6KGM5bCB56aBJywgJ+Wft+ihjOWwgemOlicpLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nCcsICfkvb/nlKjogIXlj5bmtojmk43kvZwnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YmxvY2tvcHRpb25zLnJlYmxvY2sgPSAxOyAvLyBXcml0aW5nIG92ZXIgYSBibG9jayB3aWxsIGZhaWwgb3RoZXJ3aXNlXG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZ3JvdXBzQ2FuQmVSZW1vdmVkID0gW1xuXHRcdFx0XHRcdCdhdXRvcGF0cm9sbGVkJyxcblx0XHRcdFx0XHQnY29uZmlybWVkJyxcblx0XHRcdFx0XHQncm5yc3ZlcmlmeS1leGVtcHQnLFxuXHRcdFx0XHRcdCdtYXNzbWVzc2FnZS1zZW5kZXInLFxuXHRcdFx0XHRcdCdwYXRyb2xsZXInLFxuXHRcdFx0XHRcdCd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0XHRcdFx0J2ltcG9ydGVyJyxcblx0XHRcdFx0XTtcblx0XHRcdFx0bGV0IGdyb3Vwc1RvQmVSZW1vdmVkID0gW107XG5cdFx0XHRcdGlmICh1c2VyICYmIE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KGJsb2Nrb3B0aW9ucy5leHBpcnkpKSB7XG5cdFx0XHRcdFx0Z3JvdXBzVG9CZVJlbW92ZWQgPSB1c2VyLmdyb3Vwcy5maWx0ZXIoKGdyb3VwKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZ3JvdXBzQ2FuQmVSZW1vdmVkLmluY2x1ZGVzKGdyb3VwKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBleGVjdXRlIGJsb2NrXG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy50YWdzID0gVHdpbmtsZS5jaGFuZ2VUYWdzO1xuXHRcdFx0XHRibG9ja29wdGlvbnMudG9rZW4gPSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdFx0XHRjb25zdCBtYkFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaSh3aW5kb3cud2dVTFMoJ+aJp+ihjOWwgeemgScsICfln7fooYzlsIHpjpYnKSwgYmxvY2tvcHRpb25zLCAoKSA9PiB7XG5cdFx0XHRcdFx0c3RhdHVzRWxlbWVudC5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0XHRpZiAodG9XYXJuKSB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmlzc3VlX3RlbXBsYXRlKHRlbXBsYXRlb3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0b0Nsb3NldmlwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB2aXBQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0J0xJQl90YWxrOuaKpeWRiuW9k+WJjeegtOWdjycsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5YWz6Zet6K+35rGCJywgJ+mXnOmWieiri+axgicpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0dmlwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0XHRcdHZpcFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKGJsb2Nrb3B0aW9ucyk7XG5cdFx0XHRcdFx0XHR2aXBQYWdlLmxvYWQoVHdpbmtsZS5ibG9jay5jYWxsYmFjay5jbG9zZVJlcXVlc3QpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZ3JvdXBzVG9CZVJlbW92ZWQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcmlnaHRTdGF0dXNFbGVtZW50ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+enu+mZpOadg+mZkCcsICfnp7vpmaTmrIrpmZAnKSk7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm0oXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor6XnlKjmiLfmnInku6XkuIvmnYPpmZDvvJonLCAn6Kmy5L2/55So6ICF5pyJ5Lul5LiL5qyK6ZmQ77yaJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0Z3JvdXBzVG9CZVJlbW92ZWQuam9pbign44CBJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfvvIzmgqjmmK/lkKbmg7PopoHlkIzml7bnp7vpmaTov5nkupvmnYPpmZDvvJ8nLCAn77yM5oKo5piv5ZCm5oOz6KaB5ZCM5pmC56e76Zmk6YCZ5Lqb5qyK6ZmQ77yfJylcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHJldm9rZU9wdGlvbnMgPSB7XG5cdFx0XHRcdFx0XHRcdFx0YWN0aW9uOiAndXNlcnJpZ2h0cycsXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogYmxvY2tvcHRpb25zLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3ZlOiBncm91cHNUb0JlUmVtb3ZlZC5qb2luKCd8JyksXG5cdFx0XHRcdFx0XHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+W3suiiq+aXoOmZkOacn+WwgeemgScsICfkvb/nlKjogIXlt7LooqvnhKHpmZDmnJ/lsIHpjpYnKSxcblx0XHRcdFx0XHRcdFx0XHR0b2tlbjogZGF0YS5xdWVyeS50b2tlbnMudXNlcnJpZ2h0c3Rva2VuLFxuXHRcdFx0XHRcdFx0XHRcdHRhZ3M6IFR3aW5rbGUuY2hhbmdlVGFncyxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbXJBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnp7vpmaTmnYPpmZAnLCAn56e76Zmk5qyK6ZmQJyksXG5cdFx0XHRcdFx0XHRcdFx0cmV2b2tlT3B0aW9ucyxcblx0XHRcdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyaWdodFN0YXR1c0VsZW1lbnQuaW5mbyhg5bey56e76ZmkJHtncm91cHNUb0JlUmVtb3ZlZC5qb2luKCfjgIEnKX1gKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdG1yQXBpLnBvc3QoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJpZ2h0U3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bWJBcGkucG9zdCgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0b1dhcm4pIHtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmlzc3VlX3RlbXBsYXRlKHRlbXBsYXRlb3B0aW9ucyk7XG5cdFx0fVxuXHRcdGlmICh0b1RhZyB8fCB0b1Byb3RlY3QpIHtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCB1c2VyUGFnZSA9IGBVc2VyOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YDtcblx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdHVzZXJQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOaIluS/neaKpOeUqOaIt+mhtScsICfmqJnoqJjmiJbkv53orbfkvb/nlKjogIXpoIHpnaInKVxuXHRcdFx0KTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudGFndXNlcnBhZ2UpO1xuXHRcdH1cblx0XHRpZiAodG9VbmJsb2NrKSB7XG5cdFx0XHRpZiAoIXVuYmxvY2tvcHRpb25zLnJlYXNvbikge1xuXHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5Dkvpvop6PpmaTlsIHnpoHnkIbnlLHvvIEnLCAn6KuL5o+Q5L6b6Kej6Zmk5bCB6Y6W55CG55Sx77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCB1bmJsb2NrU3RhdHVzRWxlbWVudCA9IG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfmiafooYzop6PpmaTlsIHnpoEnLCAn5Z+36KGM6Kej6Zmk5bCB6Y6WJykpO1xuXHRcdFx0dW5ibG9ja29wdGlvbnMuYWN0aW9uID0gJ3VuYmxvY2snO1xuXHRcdFx0dW5ibG9ja29wdGlvbnMudXNlciA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdFx0Ly8gZXhlY3V0ZSB1bmJsb2NrXG5cdFx0XHR1bmJsb2Nrb3B0aW9ucy50YWdzID0gVHdpbmtsZS5jaGFuZ2VUYWdzO1xuXHRcdFx0dW5ibG9ja29wdGlvbnMudG9rZW4gPSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdFx0Y29uc3QgdW5ibG9ja01iQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aJp+ihjOino+mZpOWwgeemgScsICfln7fooYzop6PpmaTlsIHpjpYnKSxcblx0XHRcdFx0dW5ibG9ja29wdGlvbnMsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHR1bmJsb2NrU3RhdHVzRWxlbWVudC5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdHVuYmxvY2tNYkFwaS5wb3N0KCk7XG5cdFx0fVxuXHRcdGlmICghdG9CbG9jayAmJiAhdG9XYXJuICYmICF0b1RhZyAmJiAhdG9Qcm90ZWN0ICYmICF0b1VuYmxvY2spIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+e7mVR3aW5rbGXngrnkuovlgZrvvIEnLCAn6KuL57WmVHdpbmtsZem7nuS6i+WBmu+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdH0pO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay50YWd1c2VycGFnZSA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdGlmIChwYXJhbXMuYWN0aW9udHlwZS5pbmNsdWRlcygndGFnJykpIHtcblx0XHRcdGNvbnN0IHRhZ3MgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWcpIHtcblx0XHRcdFx0bGV0IHRhZ3RleHQgPSBge3ske3RhZ31gO1xuXHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdGNhc2UgJ0Jsb2NrZWQgdXNlcic6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdTb2NrcHVwcGV0Jzpcblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgMSA9ICR7cGFyYW1zLnNwcFVzZXJuYW1lLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCAyID0gJHtwYXJhbXMuc3BwVHlwZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMuc3BwRXZpZGVuY2UudHJpbSgpKSB7XG5cdFx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgZXZpZGVuY2UgPSAke3BhcmFtcy5zcHBFdmlkZW5jZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gJ1xcbnwgbG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCBub3RibG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ1NvY2twdXBwZXRlZXInOlxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCAxID0gYmxvY2tlZCc7XG5cdFx0XHRcdFx0XHR0YWd0ZXh0ICs9IGBcXG58IGNoZWNrZWQgPSAke3BhcmFtcy5zcG1DaGVja2VkID8gJ3llcycgOiAnJ31gO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5zcG1FdmlkZW5jZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCBldmlkZW5jZSA9ICR7cGFyYW1zLnNwbUV2aWRlbmNlLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRtdy5ub3RpZnkod2luZG93LndnVUxTKCfmnKrnn6XnmoTnlKjmiLfpobXmqKHmnb/vvIEnLCAn5pyq55+l55qE5L2/55So6ICF6aCB6Z2i5qih5p2/77yBJyksIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0YWd0ZXh0ICs9ICd9fSc7XG5cdFx0XHRcdHRhZ3MucHVzaCh0YWd0ZXh0KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHRleHQgPSB0YWdzLmpvaW4oJ1xcbicpO1xuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfmoIforrDooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn5qiZ6KiY6KKr5rC45LmF5bCB6Y6W55qE5L2/55So6ICF6aCB6Z2iJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKCkgPT4ge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyh3aW5kb3cud2dVTFMoJ+agh+iusOeUqOaIt+mhtScsICfmqJnoqJjkvb/nlKjogIXpoIHpnaInKSwgJ+WujOaIkCcpO1xuXHRcdFx0XHRzdGF0ZWxlbS5zdGF0dXMod2luZG93LndnVUxTKCfmraPlnKjkv53miqTpobXpnaInLCAn5q2j5Zyo5L+d6K236aCB6Z2iJykpO1xuXHRcdFx0XHRwYWdlb2JqLmxvYWQoVHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcm90ZWN0dXNlcnBhZ2UpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sucHJvdGVjdHVzZXJwYWdlKHBhZ2VvYmopO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcm90ZWN0dXNlcnBhZ2UgPSAocGFnZW9iaikgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRpZiAocGFyYW1zLmFjdGlvbnR5cGUuaW5jbHVkZXMoJ3Byb3RlY3QnKSkge1xuXHRcdFx0aWYgKHBhZ2VvYmouZXhpc3RzKCkpIHtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0UHJvdGVjdGlvbignc3lzb3AnLCAnaW5kZWZpbml0ZScpO1xuXHRcdFx0XHRwYWdlb2JqLnNldE1vdmVQcm90ZWN0aW9uKCdzeXNvcCcsICdpbmRlZmluaXRlJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZVByb3RlY3Rpb24oJ3N5c29wJywgJ2luZGVmaW5pdGUnKTtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn6KKr5rC45LmF5bCB6Y6W55qE5L2/55So6ICF6aCB6Z2iJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnByb3RlY3QoKCkgPT4ge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/neaKpOeUqOaIt+mhtScsICfkv53orbfkvb/nlKjogIXpoIHpnaInKSxcblx0XHRcdFx0XHRwYWdlb2JqLmV4aXN0cygpID8gd2luZG93LndnVUxTKCflt7Llhajkv53miqQnLCAn5bey5YWo5L+d6K23JykgOiB3aW5kb3cud2dVTFMoJ+W3sueZvee6uOS/neaKpCcsICflt7Lnmb3ntJnkv53orbcnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRzdGF0ZWxlbS5pbmZvKCflhajpg6jlrozmiJAnKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdGF0ZWxlbS5pbmZvKCflhajpg6jlrozmiJAnKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suaXNzdWVfdGVtcGxhdGUgPSAoZm9ybURhdGEpID0+IHtcblx0XHQvLyBVc2Ugd2dSZWxldmFudFVzZXJOYW1lIHRvIGVuc3VyZSB0aGUgYmxvY2sgdGVtcGxhdGUgZ29lcyB0byBhIHNpbmdsZSBJUCBhbmQgbm90IHRvIHRoZVxuXHRcdC8vIFwidGFsayBwYWdlXCIgb2YgYW4gSVAgcmFuZ2UgKHdoaWNoIGRvZXMgbm90IGV4aXN0KVxuXHRcdGNvbnN0IHVzZXJUYWxrUGFnZSA9IGBVc2VyX3RhbGs6JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdC4uLmZvcm1EYXRhLFxuXHRcdFx0bWVzc2FnZURhdGE6IFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tmb3JtRGF0YS50ZW1wbGF0ZV0sXG5cdFx0XHR1c2VydGFsa19zdW1tYXJ5OiBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bZm9ybURhdGEucHJlc2V0IHx8IGZvcm1EYXRhLnRlbXBsYXRlXS5zdW1tYXJ5LFxuXHRcdFx0cmVhc29uOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYmxvY2tfcmVhc29uLFxuXHRcdFx0ZGlzYWJsZXRhbGs6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub3RhbGssXG5cdFx0XHRub2VtYWlsOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9lbWFpbF90ZW1wbGF0ZSxcblx0XHRcdG5vY3JlYXRlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9jcmVhdGVfdGVtcGxhdGUsXG5cdFx0fTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHVzZXJUYWxrUGFnZTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHQn5a6M5oiQ77yM5bCG5Zyo5Yeg56eS5ZCO5Yqg6L2955So5oi36K6o6K666aG1Jyxcblx0XHRcdCflrozmiJDvvIzlsIflnKjlub7np5LlvozovInlhaXkvb/nlKjogIXoqI7oq5bpoIEnXG5cdFx0KTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0dXNlclRhbGtQYWdlLFxuXHRcdFx0d2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobXkv67mlLknLCAn5L2/55So6ICF6KiO6KuW6aCB5L+u5pS5Jylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmJsb2NrLmNhbGxiYWNrLm1haW4pO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNsb3NlUmVxdWVzdCA9ICh2aXBQYWdlKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gdmlwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRsZXQgdGV4dCA9IHZpcFBhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gdmlwUGFnZS5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0Y29uc3QgdXNlck5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHRjb25zdCBleHBpcnlUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmZvcm1hdFRpbWUocGFyYW1zLmV4cGlyeSk7XG5cdFx0Y29uc3QgY29tbWVudCA9IGB7e0Jsb2NrZWR8JHtNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShwYXJhbXMuZXhwaXJ5KSA/ICdpbmRlZicgOiBleHBpcnlUZXh0fX1944CCYDtcblx0XHRjb25zdCByZXF1ZXN0TGlzdCA9IHRleHQuc3BsaXQoLyg/PVxcbj09PS4rPT09XFxzKlxcbikvKTtcblx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRsZXQgaGlkZW5hbWUgPSBmYWxzZTtcblx0XHRjb25zdCB2aXBSZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRge3tcXFxccypbVnZdYW5kYWxcXFxccypcXFxcfFxcXFxzKigxXFxcXHMqPVxcXFxzKik/JHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KFxuXHRcdFx0XHR1c2VyTmFtZVxuXHRcdFx0KX1cXFxccyooXFxcXHxcXFxccypoaWRlbmFtZVxcXFxzKj1bXnxdKyk/fX1gLFxuXHRcdFx0J20nXG5cdFx0KTtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHJlcXVlc3RMaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAodmlwUmUuZXhlYyhyZXF1ZXN0TGlzdFtpXSkpIHtcblx0XHRcdFx0aGlkZW5hbWUgPSAvXFx8XFxzKmhpZGVuYW1lXFxzKj1bXnxdKy8udGVzdChyZXF1ZXN0TGlzdFtpXSk7XG5cdFx0XHRcdHJlcXVlc3RMaXN0W2ldID0gcmVxdWVzdExpc3RbaV0udHJpbUVuZCgpO1xuXHRcdFx0XHRsZXQgbmV3VGV4dCA9IHJlcXVlc3RMaXN0W2ldLnJlcGxhY2UoXG5cdFx0XHRcdFx0L14oXFwqXFxzKuWkhOeQhu+8milbIFxcdF0qKDwhLS0g6Z2e566h55CG5ZOh5YOF5Y+v5qiZ6KiY5bey5Z+36KGM55qE5bCB56aB77yM6Yed5bCN5o+Q5aCx55qE5oSP6KaL6KuL5pS+5Zyo5LiL5LiA6KGMIC0tPik/WyBcXHRdKiQvbSxcblx0XHRcdFx0XHRgJDEke2NvbW1lbnR9LS1+fmAuY29uY2F0KCd+ficpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChyZXF1ZXN0TGlzdFtpXSA9PT0gbmV3VGV4dCkge1xuXHRcdFx0XHRcdG5ld1RleHQgPSBgJHtyZXF1ZXN0TGlzdFtpXX1cXG4qIOWkhOeQhu+8miR7Y29tbWVudH0tLX5+YC5jb25jYXQoJ35+Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVxdWVzdExpc3RbaV0gPSBgJHtuZXdUZXh0fVxcbmA7XG5cdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZm91bmQpIHtcblx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+ayoeacieaJvuWIsOebuOWFs+eahOivt+axgicsICfmspLmnInmib7liLDnm7jpl5znmoToq4vmsYInKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRleHQgPSByZXF1ZXN0TGlzdC5qb2luKCcnKTtcblx0XHRsZXQgc3VtbWFyeTtcblx0XHRpZiAoaGlkZW5hbWUpIHtcblx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+agh+iusOS4uuW3suWkhOeQhicsICfmqJnoqJjngrrlt7LomZXnkIYnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VtbWFyeSA9IGAvKiAke3VzZXJOYW1lfSAqLyBgO1xuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdHN1bW1hcnkgKz0gd2luZG93LndnVUxTKCfkuI3pmZDmnJ/lsIHnpoEnLCAn5LiN6ZmQ5pyf5bCB6Y6WJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdW1tYXJ5ICs9IHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpICsgZXhwaXJ5VGV4dDtcblx0XHRcdH1cblx0XHR9XG5cdFx0dmlwUGFnZS5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5KTtcblx0XHR2aXBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR2aXBQYWdlLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdHZpcFBhZ2Uuc2F2ZSgpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmdldEJsb2NrTm90aWNlV2lraXRleHQgPSAocGFyYW1zKSA9PiB7XG5cdFx0bGV0IHRleHQgPSAne3snO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW3BhcmFtcy50ZW1wbGF0ZV07XG5cdFx0aWYgKHNldHRpbmdzLm5vbnN0YW5kYXJkKSB7XG5cdFx0XHR0ZXh0ICs9IHBhcmFtcy50ZW1wbGF0ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCArPSAnc3Vic3Q6Jy5jb25jYXQocGFyYW1zLnRlbXBsYXRlKTtcblx0XHRcdGlmIChwYXJhbXMuYXJ0aWNsZSAmJiBzZXR0aW5ncy5wYWdlUGFyYW0pIHtcblx0XHRcdFx0dGV4dCArPSBgfHBhZ2U9JHtwYXJhbXMuYXJ0aWNsZX1gO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCEvdGU/bXB8XlxccyokfG1pbi8uZXhlYyhwYXJhbXMuZXhwaXJ5KSkge1xuXHRcdFx0XHRpZiAocGFyYW1zLmluZGVmaW5pdGUpIHtcblx0XHRcdFx0XHR0ZXh0ICs9ICd8aW5kZWY9eWVzJztcblx0XHRcdFx0fSBlbHNlIGlmICghcGFyYW1zLmJsYW5rX2R1cmF0aW9uKSB7XG5cdFx0XHRcdFx0Ly8gTm8gZXhwaXJ5IGNoZWNrc1xuXHRcdFx0XHRcdC8vIEJsb2NrIHRlbXBsYXRlIHdhbnRzIGEgZHVyYXRpb24sIG5vdCBkYXRlXG5cdFx0XHRcdFx0dGV4dCArPSBgfHRpbWU9JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KX1gOyAvLyBmb3JtYXRUaW1lXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQgJiYgIXBhcmFtcy5oYXJkYmxvY2spIHtcblx0XHRcdFx0dGV4dCArPSAnfGFub249eWVzJztcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMucmVhc29uKSB7XG5cdFx0XHRcdHRleHQgKz0gYHxyZWFzb249JHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLmRpc2FibGV0YWxrKSB7XG5cdFx0XHRcdHRleHQgKz0gJ3xub3RhbGs9eWVzJztcblx0XHRcdH1cblx0XHRcdC8vIEN1cnJlbnRseSwgYWxsIHBhcnRpYWwgYmxvY2sgdGVtcGxhdGVzIGFyZSBcInN0YW5kYXJkXCJcblx0XHRcdC8vIEJ1aWxkaW5nIHRoZSB0ZW1wbGF0ZSwgaG93ZXZlciwgdGFrZXMgYSBmYWlyIGJpdCBvZiBsb2dpY1xuXHRcdFx0aWYgKHBhcmFtcy5wYXJ0aWFsKSB7XG5cdFx0XHRcdGlmIChwYXJhbXMucGFnZXJlc3RyaWN0aW9ucy5sZW5ndGggfHwgcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBtYWtlU2VudGVuY2UgPSAoYXJyYXkpID0+IHtcblx0XHRcdFx0XHRcdGlmIChhcnJheS5sZW5ndGggPCAzKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhcnJheS5qb2luKCflkownKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNvbnN0IGxhc3QgPSBhcnJheS5wb3AoKTtcblx0XHRcdFx0XHRcdHJldHVybiBgJHthcnJheS5qb2luKCfjgIEnKX3lkowke2xhc3R9YDtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHRleHQgKz0gJ3xhcmVhPeafkOS6myc7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSBg6aCB6Z2i77yIJHttYWtlU2VudGVuY2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLm1hcCgocCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBgW1s6JHtwfV1dYDtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCl9YDtcblx0XHRcdFx0XHRcdHRleHQgKz0gcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGggPyAn77yJ5ZKM5p+Q5LqbJyA6ICfvvIknO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdC8vIDEgPT4gVGFsaywgMiA9PiBVc2VyLCBldGMuXG5cdFx0XHRcdFx0XHRjb25zdCBuYW1lc3BhY2VOYW1lcyA9IHBhcmFtcy5uYW1lc3BhY2VyZXN0cmljdGlvbnMubWFwKChpZCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbWVudUZvcm1hdHRlZE5hbWVzcGFjZXNbaWRdO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ZXh0ICs9IGAke1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ1tbSGVscDrlkb3lkI3nqbrpl7R85ZG95ZCN56m66Ze0XV3vvIgnLCAnW1tIZWxwOuWRveWQjeepuumWk3zlkb3lkI3nqbrplpNdXe+8iCcpICtcblx0XHRcdFx0XHRcdFx0bWFrZVNlbnRlbmNlKG5hbWVzcGFjZU5hbWVzKVxuXHRcdFx0XHRcdFx0fe+8iWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5hcmVhKSB7XG5cdFx0XHRcdFx0dGV4dCArPSBgfGFyZWE9JHtwYXJhbXMuYXJlYX1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9lbWFpbCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSAnfGVtYWlsPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9jcmVhdGUpIHtcblx0XHRcdFx0XHRcdHRleHQgKz0gJ3xhY2NvdW50Y3JlYXRlPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzZXR0aW5ncy5zaWcpIHtcblx0XHRcdHRleHQgKz0gYHxzaWc9JHtzZXR0aW5ncy5zaWd9YDtcblx0XHR9XG5cdFx0cmV0dXJuIGAke3RleHR9fX1gO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLm1haW4gPSAocGFnZW9iaikgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Y29uc3QgZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHBhZ2VvYmouZ2V0TG9hZFRpbWUoKSk7XG5cdFx0Y29uc3Qge21lc3NhZ2VEYXRhfSA9IHBhcmFtcztcblx0XHRsZXQgdGV4dDtcblx0XHRwYXJhbXMuaW5kZWZpbml0ZSA9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2JsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2snKSAmJiBwYXJhbXMudGVtcGxhdGUgIT09ICd1dy1sYmxvY2snICYmIHBhcmFtcy5pbmRlZmluaXRlKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5qC55o2u5Y+C5pWw6K6+572u5riF56m66K6o6K666aG15bm25Li65pel5pyf5Yib5bu65pawMue6p+agh+mimCcsXG5cdFx0XHRcdFx0J+agueaTmuWBj+WlveioreWumua4heepuuiojuirlumggeS4pueCuuaXpeacn+W7uueri+aWsDLntJrmqJnpoYwnXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHR0ZXh0ID0gYCR7ZGF0ZS5tb250aEhlYWRlcigpfVxcbmA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBkYXRlLm1vbnRoSGVhZGVyUmVnZXgoKTtcblx0XHRcdGxldCBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0bGV0IGRhdGVIZWFkZXJSZWdleFJlc3VsdDtcblx0XHRcdHdoaWxlICgoZGF0ZUhlYWRlclJlZ2V4TGFzdCA9IGRhdGVIZWFkZXJSZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRkYXRlSGVhZGVyUmVnZXhSZXN1bHQgPSBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0IGlzIG51bGwgdGhlbiBsYXN0SGVhZGVySW5kZXggaXMgbmV2ZXIgY2hlY2tlZC4gSWYgaXQgaXMgbm90IG51bGwgYnV0XG5cdFx0XHQvLyBcXG49PSBpcyBub3QgZm91bmQsIHRoZW4gdGhlIGRhdGUgaGVhZGVyIG11c3QgYmUgYXQgdGhlIHZlcnkgc3RhcnQgb2YgdGhlIHBhZ2UuIGxhc3RJbmRleE9mXG5cdFx0XHQvLyByZXR1cm5zIC0xIGluIHRoaXMgY2FzZSwgc28gbGFzdEhlYWRlckluZGV4IGdldHMgc2V0IHRvIDAgYXMgZGVzaXJlZC5cblx0XHRcdGNvbnN0IGxhc3RIZWFkZXJJbmRleCA9IHRleHQubGFzdEluZGV4T2YoJ1xcbj09JykgKyAxO1xuXHRcdFx0aWYgKHRleHQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0ZXh0ICs9ICdcXG5cXG4nO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFkYXRlSGVhZGVyUmVnZXhSZXN1bHQgfHwgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0LmluZGV4ICE9PSBsYXN0SGVhZGVySW5kZXgpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnKrmib7liLDlvZPmnIjnmoTkuoznuqfmoIfpopjvvIzlsIbliJvlu7rmlrDnmoQnLCAn5pyq5om+5Yiw55W25pyI55qE5LqM57Sa5qiZ6aGM77yM5bCH5bu656uL5paw55qEJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGV4dCArPSBgJHtkYXRlLm1vbnRoSGVhZGVyKCl9XFxuYDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cGFyYW1zLmV4cGlyeSA9IHBhcmFtcy50ZW1wbGF0ZV9leHBpcnkgPT09IHVuZGVmaW5lZCA/IHBhcmFtcy5leHBpcnkgOiBwYXJhbXMudGVtcGxhdGVfZXhwaXJ5O1xuXHRcdHRleHQgKz0gVHdpbmtsZS5ibG9jay5jYWxsYmFjay5nZXRCbG9ja05vdGljZVdpa2l0ZXh0KHBhcmFtcyk7XG5cdFx0Ly8gYnVpbGQgdGhlIGVkaXQgc3VtbWFyeVxuXHRcdGxldCBzdW1tYXJ5ID0gcGFyYW1zLnVzZXJ0YWxrX3N1bW1hcnk7XG5cdFx0aWYgKG1lc3NhZ2VEYXRhLnN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeSAhPT0gdHJ1ZSAmJiBwYXJhbXMuYXJ0aWNsZSkge1xuXHRcdFx0c3VtbWFyeSArPSBgJHt3aW5kb3cud2dVTFMoJ++8jOS6jicsICfvvIzmlrwnKX1bWzoke3BhcmFtcy5hcnRpY2xlfV1dYDtcblx0XHR9XG5cdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkpO1xuXHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hCbG9ja05vdGljZXMnKSk7XG5cdFx0cGFnZW9iai5zYXZlKCk7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmxvY2ssICdibG9jaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gZnJpZW5kbHl0YWxrYmFjay5qcyAqL1xuKGZ1bmN0aW9uIGZyaWVuZGx5dGFsa2JhY2soJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIGZyaWVuZGx5dGFsa2JhY2suanM6IFRhbGtiYWNrIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJUQlwiKVxuXHQgKiBBY3RpdmUgb246IEFueSBwYWdlIHdpdGggcmVsZXZhbnQgdXNlciBuYW1lICh1c2Vyc3BhY2UsIGNvbnRyaWJzLCBldGMuKSBleGNlcHQgSVAgcmFuZ2VzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS50YWxrYmFjayA9ICgpID0+IHtcblx0XHRpZiAoIW13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrLFxuXHRcdFx0J+mAmuWRiicsXG5cdFx0XHQnZnJpZW5kbHktdGFsa2JhY2snLFxuXHRcdFx0d2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5a+C5a+e5Yiw5LqG6KaB6Ieq5bex5Zue5aSN6Ieq5bex55qE56iL5bqm5LmI77yfJywgJ+aCqOWvguWvnuWIsOS6huimgeiHquW3seWbnuimhuiHquW3seeahOeoi+W6pum6vO+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzUwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflhbPkuo57e3RhbGtiYWNrfX0nLCAn6Zec5pa8e3t0YWxrYmFja319JyksICdUZW1wbGF0ZTpUYWxrYmFjaycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6YCa5ZGK6K6+572uJywgJ+mAmuWRiuioreWumicpLCAnSDpUVy9QUkVGI3RhbGtiYWNrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3RhbGtiYWNrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3JhZGlvJyxcblx0XHRcdG5hbWU6ICd0YnRhcmdldCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm57lpI3vvJrmiJHnmoTorqjorrrpobUnLCAn5Zue6KaG77ya5oiR55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdteXRhbGsnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICd0cnVlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuS7lueUqOaIt+eahOiuqOiuuumhtScsICflm57opobvvJrlhbbku5bkvb/nlKjogIXnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3VzZXJ0YWxrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuWug+mhtemdoicsICflm57opobvvJrlhbblroPpoIHpnaInKSxcblx0XHRcdFx0XHR2YWx1ZTogJ290aGVyJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mCgOivt+iuqOiuuicsICfpgoDoq4voqI7oq5YnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NlZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+mAmuWRiuadv+mAmuefpScsXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpY2UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn4oCc5pyJ5paw6YKu5Lu24oCdJywgJ+OAjOacieaWsOmDteS7tuOAjScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWFpbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUudGFsa2JhY2suY2hhbmdlVGFyZ2V0LFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJ+W3peS9nOWMuicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHR9KTtcblx0XHRjb25zdCBwcmV2aWV3bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHQkKHByZXZpZXdsaW5rKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcocmVzdWx0KTsgLy8gfHJlc3VsdHwgaXMgZGVmaW5lZCBiZWxvd1xuXHRcdH0pO1xuXG5cdFx0cHJldmlld2xpbmsuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuXHRcdHByZXZpZXdsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfpooTop4gnLCAn6aCQ6Ka9Jyk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3RhbGtiYWNrcHJldmlldycsXG5cdFx0XHRsYWJlbDogW3ByZXZpZXdsaW5rXSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnZnJpZW5kbHl0YWxrYmFjay1wcmV2aWV3Ym94Jyxcblx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0cmVzdWx0LnByZXZpZXdlciA9IG5ldyBNb3JlYml0cy53aWtpLnByZXZpZXcoJChyZXN1bHQpLmZpbmQoJ2RpdiNmcmllbmRseXRhbGtiYWNrLXByZXZpZXdib3gnKS5sYXN0KClbMF0pO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGVcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQudGJ0YXJnZXRbMF0uZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdC8vIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIgaGFzIG9wdGVkIG91dCBmcm9tIHRhbGtiYWNrXG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAnZXh0bGlua3MnLFxuXHRcdFx0dGl0bGVzOiBgVXNlciB0YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCxcblx0XHRcdGVscXVlcnk6ICd1c2VyanMuaW52YWxpZC9ub1RhbGtiYWNrJyxcblx0XHRcdGVsbGltaXQ6ICcxJyxcblx0XHR9O1xuXHRcdGNvbnN0IHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bpgIDlh7rpgJrlkYrkv6Hmga8nLCAn5oqT5Y+W6YCA5Ye66YCa5ZGK6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUudGFsa2JhY2suY2FsbGJhY2sub3B0b3V0U3RhdHVzXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUudGFsa2JhY2sub3B0b3V0ID0gJyc7XG5cdFR3aW5rbGUudGFsa2JhY2suY2FsbGJhY2sub3B0b3V0U3RhdHVzID0gKGFwaW9iaikgPT4ge1xuXHRcdGNvbnN0ICRlbCA9ICQoYXBpb2JqLmdldFhNTCgpKS5maW5kKCdlbCcpO1xuXHRcdGlmICgkZWwubGVuZ3RoKSB7XG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLm9wdG91dCA9XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpICsgd2luZG93LndnVUxTKCfkuI3luIzmnJvmlLbliLDlm57lpI3pgJrlkYonLCAn5LiN5biM5pyb5pS25Yiw5Zue6KaG6YCa5ZGKJyk7XG5cdFx0XHRjb25zdCB1cmwgPSAkZWwudGV4dCgpO1xuXHRcdFx0Y29uc3QgcmVhc29uID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdyZWFzb24nLCB1cmwpO1xuXHRcdFx0VHdpbmtsZS50YWxrYmFjay5vcHRvdXQgKz0gcmVhc29uID8gYO+8miR7TW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKHJlYXNvbil9YCA6ICfjgIInO1xuXHRcdH1cblx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScpLnRleHQoVHdpbmtsZS50YWxrYmFjay5vcHRvdXQpO1xuXHR9O1xuXHRsZXQgcHJldl9wYWdlID0gJyc7XG5cdGxldCBwcmV2X3NlY3Rpb24gPSAnJztcblx0bGV0IHByZXZfbWVzc2FnZSA9ICcnO1xuXHRUd2lua2xlLnRhbGtiYWNrLmNoYW5nZVRhcmdldCA9IChlKSA9PiB7XG5cdFx0Y29uc3QgdmFsdWUgPSBlLnRhcmdldC52YWx1ZXM7XG5cdFx0Y29uc3Qgcm9vdCA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyb290LCAnd29ya19hcmVhJyk7XG5cdFx0aWYgKHJvb3Quc2VjdGlvbikge1xuXHRcdFx0cHJldl9zZWN0aW9uID0gcm9vdC5zZWN0aW9uLnZhbHVlO1xuXHRcdH1cblx0XHRpZiAocm9vdC5tZXNzYWdlKSB7XG5cdFx0XHRwcmV2X21lc3NhZ2UgPSByb290Lm1lc3NhZ2UudmFsdWU7XG5cdFx0fVxuXHRcdGlmIChyb290LnBhZ2UpIHtcblx0XHRcdHByZXZfcGFnZSA9IHJvb3QucGFnZS52YWx1ZTtcblx0XHR9XG5cdFx0bGV0IHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zue5aSN6YCa5ZGK5L+h5oGvJywgJ+WbnuimhumAmuWRiuizh+ioiicpLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0cm9vdC5wcmV2aWV3ZXIuY2xvc2VQcmV2aWV3KCk7XG5cdFx0c3dpdGNoICh2YWx1ZSkge1xuXHRcdFx0Y2FzZSAndXNlcnRhbGsnOlxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRsYWJlbDogJycsXG5cdFx0XHRcdFx0c3R5bGU6ICdjb2xvcjogI2YwMCcsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlLXRhbGtiYWNrLW9wdG91dC1tZXNzYWdlJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt++8iOW/heWhq++8iScsICfkvb/nlKjogIXvvIjlv4XloavvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+aCqOeVmeiogOmhtemdoueahOeUqOaIt+WQje+8jOW/heWhq+OAgicsICfmgqjnlZnoqIDpoIHpnaLnmoTkvb/nlKjogIXlkI3nqLHvvIzlv4XloavjgIInKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9wYWdlLFxuXHRcdFx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56ug6IqC77yI5Y+v6YCJ77yJJywgJ+eroOevgO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6DoioLmoIfpopjvvIznlZnnqbrliJnkuI3kvJrkuqfnlJ/nq6DoioLpk77mjqXjgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOevgOaomemhjO+8jOeVmeepuuWJh+S4jeacg+eUoueUn+eroOevgOmAo+e1kOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3NlY3Rpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ25vdGljZSc6IHtcblx0XHRcdFx0Y29uc3Qgbm90aWNlYm9hcmQgPSB3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnbm90aWNlYm9hcmQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn6YCa5ZGK5p2/77yaJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvciAoY29uc3QgW25ibmFtZSwgZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS50YWxrYmFjay5ub3RpY2Vib2FyZHMpKSB7XG5cdFx0XHRcdFx0bm90aWNlYm9hcmQuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGRhdGEubGFiZWwsXG5cdFx0XHRcdFx0XHR2YWx1ZTogbmJuYW1lLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWQ6ICEhZGF0YS5kZWZhdWx0U2VsZWN0ZWQsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56ug6IqC77yI5Y+v6YCJ77yJJywgJ+eroOevgO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJywgJ+eroOevgOaomemhjO+8jOeVmeepuuWJh+S4jeacg+eUoueUn+eroOevgOmAo+e1kOOAgicpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3NlY3Rpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgJ290aGVyJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0XHRcdGlkOiAndHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrozmlbTpobXpnaLlkI0nLCAn5a6M5pW06aCB6Z2i5ZCNJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+a2iOaBr+eahOWujOaVtOmhtemdouWQje+8jOS+i+WmguKAnExJQl90YWxrOummlumhteKAneOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ5LiL6KiK5oGv55qE5a6M5pW06aCB6Z2i5ZCN77yM5L6L5aaC44CMTElCX3RhbGs66aaW6aCB44CN44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfcGFnZSxcblx0XHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJyxcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdtYWlsJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55S15a2Q6YKu5Lu25Li76aKY77yI5Y+v6YCJ77yJJywgJ+mbu+WtkOmDteS7tuS4u+mhjO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oKo5Y+R5Ye655qE55S15a2Q6YKu5Lu255qE5Li76aKY44CCJywgJ+aCqOeZvOWHuueahOmbu+WtkOmDteS7tueahOS4u+mhjOOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzZWUnOlxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrozmlbTpobXpnaLlkI0nLCAn5a6M5pW06aCB6Z2i5ZCNJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+a2iOaBr+eahOWujOaVtOmhtemdouWQje+8jOS+i+WmguKAnExJQl90YWxrOummlumhteKAneOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ5LiL6KiK5oGv55qE5a6M5pW06aCB6Z2i5ZCN77yM5L6L5aaC44CMTElCX3RhbGs66aaW6aCB44CN44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfcGFnZSxcblx0XHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJyxcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvKiBjYXNlICdteXRhbGsnOiAqL1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0XHRcdGlkOiAndHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzZWN0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnq6DoioLvvIjlj6/pgInvvIknLCAn56ug56+A77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug56+A5qiZ6aGM77yM55WZ56m65YmH5LiN5pyD55Si55Sf56ug56+A6YCj57WQ44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfc2VjdGlvbixcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZiAodmFsdWUgIT09ICdub3RpY2UnKSB7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6ZmE5Yqg5L+h5oGv77yI5Y+v6YCJ77yJ77yaJywgJ+mZhOWKoOizh+ioiu+8iOWPr+mBuO+8ie+8micpLFxuXHRcdFx0XHRuYW1lOiAnbWVzc2FnZScsXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5Lya5Zyo5Zue5aSN6YCa5ZGK5qih5p2/5LiL5Ye6546w55qE5raI5oGv77yM5oKo55qE562+5ZCN5Lya6KKr5Yqg5Zyo5pyA5ZCO44CCJyxcblx0XHRcdFx0XHQn5pyD5Zyo5Zue6KaG6YCa5ZGK5qih5p2/5LiL5Ye654++55qE6KiK5oGv77yM5oKo55qE57C95ZCN5pyD6KKr5Yqg5Zyo5pyA5b6M44CCJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRyb290LnJlcGxhY2VDaGlsZCh3b3JrX2FyZWEsIG9sZF9hcmVhKTtcblx0XHRpZiAocm9vdC5tZXNzYWdlKSB7XG5cdFx0XHRyb290Lm1lc3NhZ2UudmFsdWUgPSBwcmV2X21lc3NhZ2U7XG5cdFx0fVxuXHRcdCRib2R5LmZpbmQoJyN0d2lua2xlLXRhbGtiYWNrLW9wdG91dC1tZXNzYWdlJykudGV4dChUd2lua2xlLnRhbGtiYWNrLm9wdG91dCk7XG5cdH07XG5cdFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzID0ge1xuXHRcdGFmZnA6IHtcblx0XHRcdGxhYmVsOiBgTElCOkFGL0ZQ77yIJHt3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOWkhOeQhi/miqXlkYonLCAn6YGO5r++5Zmo6JmV55CGL+WgseWRiicpfe+8iWAsXG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfov4fmu6TlmajplJnor6/miqXlkYrmnInmlrDlm57lupQnLCAn6YGO5r++5Zmo6Yyv6Kqk5aCx5ZGK5pyJ5paw5Zue5oeJJyksXG5cdFx0XHRjb250ZW50OiBgJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmgqjnmoRbW0xJQl90YWxrOui/h+a7pOWZqOWkhOeQhi/miqXlkYp86L+H5ruk5Zmo6ZSZ6K+v5oql5ZGKXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOmBjua/vuWZqOmMr+iqpOWgseWRil1d5bey5pyJ5Zue5oeJ77yM6KuL5YmN5b6A5p+l55yL44CCJ1xuXHRcdFx0KX0tLX5+YC5jb25jYXQoJ35+JyksXG5cdFx0XHRlZGl0U3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5pyJ5YWzW1tMSUJfdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOi/h+a7pOWZqOmUmeivr+aKpeWRil1d55qE6YCa55+lJyxcblx0XHRcdFx0J+aciemXnFtbTElCX3RhbGs66L+H5ruk5Zmo5aSE55CGL+aKpeWRinzpgY7mv77lmajpjK/oqqTloLHlkYpdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0XHRkZWZhdWx0U2VsZWN0ZWQ6IHRydWUsXG5cdFx0fSxcblx0XHRzYmw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS1ibGFja2xpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOm7keWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ6buR5ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXpu5HlkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDpu5HlkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHRzaGw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS13aGl0ZWxpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOeZveWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tMSUJfdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ55m95ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXnmb3lkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW0xJQl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDnmb3lkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0bGV0IHBhZ2U7XG5cdFx0bGV0IG1lc3NhZ2U7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgZWRpdFN1bW1hcnk7XG5cdFx0aWYgKHRidGFyZ2V0ID09PSAnbm90aWNlJykge1xuXHRcdFx0cGFnZSA9IGZvcm0ubm90aWNlYm9hcmQudmFsdWU7XG5cdFx0XHQoe2VkaXRTdW1tYXJ5fSA9IFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzW3BhZ2VdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRidGFyZ2V0ID09PSAnbWFpbCcpIHtcblx0XHRcdFx0ZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+mAmuefpe+8muacieaWsOmCruS7ticsICfpgJrnn6XvvJrmnInmlrDpg7Xku7YnKTtcblx0XHRcdH0gZWxzZSBpZiAodGJ0YXJnZXQgPT09ICdzZWUnKSB7XG5cdFx0XHRcdGVkaXRTdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKCfor7fnnIvnnIsnLCAn6KuL55yL55yLJyl9W1s6JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ31dXSR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfkuIrnmoTorqjorronLFxuXHRcdFx0XHRcdCfkuIrnmoToqI7oq5YnXG5cdFx0XHRcdCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHRlZGl0U3VtbWFyeSA9IGAke3dpbmRvdy53Z1VMUygn5Zue5aSN6YCa5ZGKJywgJ+WbnuimhumAmuWRiicpfe+8iFtbOmA7XG5cdFx0XHRcdGlmICh0YnRhcmdldCAhPT0gJ290aGVyJyAmJiAhbmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoMyl9OmAsICdpJykudGVzdChwYWdlKSkge1xuXHRcdFx0XHRcdGVkaXRTdW1tYXJ5ICs9ICdVc2VyIHRhbGs6Jztcblx0XHRcdFx0fVxuXHRcdFx0XHRlZGl0U3VtbWFyeSArPSBgJHtwYWdlICsgKHNlY3Rpb24gPyBgIyR7c2VjdGlvbn1gIDogJycpfV1dKWA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0Y29uc3QgZnVsbFVzZXJUYWxrUGFnZU5hbWUgPSBgJHtcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW213LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykudXNlcl90YWxrXVxuXHRcdH06JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gZnVsbFVzZXJUYWxrUGFnZU5hbWU7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+WbnuWkjemAmuWRiuWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5Zue6KaG6YCa5ZGK5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0Y29uc3QgdGV4dCA9IGBcXG5cXG4ke1R3aW5rbGUudGFsa2JhY2suZ2V0Tm90aWNlV2lraXRleHQodGJ0YXJnZXQsIHBhZ2UsIHNlY3Rpb24sIG1lc3NhZ2UpWzBdfWA7XG5cdFx0Y29uc3QgdGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKGZ1bGxVc2VyVGFsa1BhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+WKoOWFpeWbnuWkjemAmuWRiicsICfliqDlhaXlm57opobpgJrlkYonKSk7XG5cdFx0dGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoZWRpdFN1bW1hcnkpO1xuXHRcdHRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KHRleHQpO1xuXHRcdHRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHR0YWxrcGFnZS5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFsa2JhY2tBc01pbm9yJykpO1xuXHRcdHRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdHRhbGtwYWdlLmFwcGVuZCgpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgcGFnZTtcblx0XHRsZXQgbWVzc2FnZTtcblx0XHRpZiAodGJ0YXJnZXQgPT09ICdub3RpY2UnKSB7XG5cdFx0XHRwYWdlID0gZm9ybS5ub3RpY2Vib2FyZC52YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBbbm90aWNldGV4dF0gPSBUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0KHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKTtcblx0XHRmb3JtLnByZXZpZXdlci5iZWdpblJlbmRlcihub3RpY2V0ZXh0LCBgVXNlcl90YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0fTtcblxuXHRUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0ID0gKHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKSA9PiB7XG5cdFx0bGV0IHRleHQ7XG5cdFx0bGV0IHRpdGxlO1xuXHRcdGxldCBjb250ZW50O1xuXHRcdGlmICh0YnRhcmdldCA9PT0gJ25vdGljZScpIHtcblx0XHRcdCh7dGl0bGV9ID0gVHdpbmtsZS50YWxrYmFjay5ub3RpY2Vib2FyZHNbcGFnZV0pO1xuXHRcdFx0Y29udGVudCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShUd2lua2xlLnRhbGtiYWNrLm5vdGljZWJvYXJkc1twYWdlXS5jb250ZW50LCAnJFNFQ1RJT04nLCBzZWN0aW9uKTtcblx0XHRcdHRleHQgPSBgPT0gJHt0aXRsZX0gPT1cXG4ke2NvbnRlbnR9YDtcblx0XHR9IGVsc2UgaWYgKHRidGFyZ2V0ID09PSAnc2VlJykge1xuXHRcdFx0dGl0bGUgPSBwYWdlICsgd2luZG93LndnVUxTKCfnmoTnm7jlhbPorqjorronLCAn55qE55u46Zec6KiO6KuWJyk7XG5cdFx0XHRjb250ZW50ID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRgUGxlYXNlIHNlZXxsb2NhdGlvbj0ke3BhZ2V9JHtzZWN0aW9uID8gYCMke3NlY3Rpb259YCA6ICcnfXxtb3JlPSR7bWVzc2FnZS50cmltKCl9fX1gXG5cdFx0XHQpO1xuXHRcdFx0dGV4dCA9ICd7eycuY29uY2F0KFxuXHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0YFBsZWFzZSBzZWV8bG9jYXRpb249JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ318bW9yZT0ke21lc3NhZ2UudHJpbSgpfX19YFxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCA9ICc9PSc7XG5cdFx0XHRpZiAodGJ0YXJnZXQgPT09ICdtYWlsJykge1xuXHRcdFx0XHR0aXRsZSA9IFR3aW5rbGUuZ2V0UHJlZignbWFpbEhlYWRpbmcnKTtcblx0XHRcdFx0Y29udGVudCA9IGB7e1lvdSd2ZSBnb3QgbWFpbHxzdWJqZWN0PSR7c2VjdGlvbn18dHM9fn5gLmNvbmNhdCgnficsICd+fn19Jyk7XG5cdFx0XHRcdHRleHQgKz0gYCR7VHdpbmtsZS5nZXRQcmVmKCdtYWlsSGVhZGluZycpfT09XFxue3tZb3UndmUgZ290IG1haWx8c3ViamVjdD0ke3NlY3Rpb259YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHQvLyBjbGVhbiB0YWxrYmFjayBoZWFkaW5nOiBzdHJpcCBzZWN0aW9uIGhlYWRlciBtYXJrZXJzIHRoYXQgd2VyZSBlcnJvbmVvdXNseSBzdWdnZXN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb25cblx0XHRcdFx0dGl0bGUgPSBUd2lua2xlLmdldFByZWYoJ3RhbGtiYWNrSGVhZGluZycpLnJlcGxhY2UoL15cXHMqPStcXHMqKC4qPylcXHMqPSskXFxzKi8sICckMScpO1xuXHRcdFx0XHRjb250ZW50ID0gYHt7dGFsa2JhY2t8JHtwYWdlfSR7c2VjdGlvbiA/IGB8JHtzZWN0aW9ufWAgOiAnJ31gO1xuXHRcdFx0XHR0ZXh0ICs9IGAke1R3aW5rbGUuZ2V0UHJlZigndGFsa2JhY2tIZWFkaW5nJykucmVwbGFjZShcblx0XHRcdFx0XHQvXlxccyo9K1xccyooLio/KVxccyo9KyRcXHMqLyxcblx0XHRcdFx0XHQnJDEnXG5cdFx0XHRcdCl9PT1cXG57e3RhbGtiYWNrfCR7cGFnZX0ke3NlY3Rpb24gPyBgfCR7c2VjdGlvbn1gIDogJyd9YDtcblx0XHRcdH1cblx0XHRcdGNvbnRlbnQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdHRleHQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRcdGNvbnRlbnQgKz0gYFxcbiR7bWVzc2FnZX1gO1xuXHRcdFx0XHR0ZXh0ICs9IGBcXG4ke21lc3NhZ2V9ICB+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmdldFByZWYoJ2luc2VydFRhbGtiYWNrU2lnbmF0dXJlJykpIHtcblx0XHRcdFx0dGV4dCArPSAnXFxufn4nLmNvbmNhdCgnfn4nKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFt0ZXh0LCB0aXRsZSwgY29udGVudF07XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUudGFsa2JhY2ssICd0YWxrYmFjaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXNwZWVkeS5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVzcGVlZHkoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVzcGVlZHkuanM6IENTRCBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiQ1NEXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwsIGV4aXN0aW5nIHBhZ2VzXG5cdCAqXG5cdCAqIE5PVEUgRk9SIERFVkVMT1BFUlM6XG5cdCAqICBJZiBhZGRpbmcgYSBuZXcgY3JpdGVyaW9uLCBhZGQgaXQgdG8gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcyBhdCB0aGUgdG9wIG9mXG5cdCAqICB0d2lua2xlY29uZmlnLmpzLlxuXHQgKiAgQWxzbywgY2hlY2sgb3V0IHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgQ1NEIHByZWZlcmVuY2VzIGluIHR3aW5rbGUuanMsXG5cdCAqICBhbmQgYWRkIHlvdXIgbmV3IGNyaXRlcmlvbiB0byB0aG9zZSBpZiB5b3UgdGhpbmsgaXQgd291bGQgYmUgZ29vZC5cblx0ICovXG5cdFR3aW5rbGUuc3BlZWR5ID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfpgJ/liKAnLCAn6YCf5YiqJyksXG5cdFx0XHQndHctY3NkJyxcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wID8gd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaQnLCAn5b+r6YCf5Yiq6ZmkJykgOiB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpCcsICfoq4vmsYLlv6vpgJ/liKrpmaQnKVxuXHRcdCk7XG5cdH07XG5cdC8vIFRoaXMgZnVuY3Rpb24gaXMgcnVuIHdoZW4gdGhlIENTRCB0YWIvaGVhZGVyIGxpbmsgaXMgY2xpY2tlZFxuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5pbml0RGlhbG9nKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgPyBUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVN5c29wIDogVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZXZhbHVhdGVVc2VyLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH07XG5cdC8vIFVzZWQgYnkgdW5saW5rIGZlYXR1cmVcblx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nID0gbnVsbDtcblx0Ly8gVXNlZCB0aHJvdWdob3V0XG5cdFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCA9ICEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlbGV0ZS1yZWFzb24nKTtcblx0Ly8gVGhlIHNwZWVkeSBjcml0ZXJpYSBsaXN0IGNhbiBiZSBpbiBvbmUgb2Ygc2V2ZXJhbCBtb2Rlc1xuXHRUd2lua2xlLnNwZWVkeS5tb2RlID0ge1xuXHRcdHN5c29wU2luZ2xlU3VibWl0OiAxLFxuXHRcdC8vIHJhZGlvIGJ1dHRvbnMsIG5vIHN1Ymdyb3Vwcywgc3VibWl0IHdoZW4gXCJTdWJtaXRcIiBidXR0b24gaXMgY2xpY2tlZFxuXHRcdHN5c29wUmFkaW9DbGljazogMixcblx0XHQvLyByYWRpbyBidXR0b25zLCBubyBzdWJncm91cHMsIHN1Ym1pdCB3aGVuIGEgcmFkaW8gYnV0dG9uIGlzIGNsaWNrZWRcblx0XHRzeXNvcE11bHRpcGxlU3VibWl0OiAzLFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIFwiU3VibWl0XCIgYnV0dG9uIGFscmVhZHkgcHJlc2VudFxuXHRcdHN5c29wTXVsdGlwbGVSYWRpb0NsaWNrOiA0LFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIG5lZWQgdG8gYWRkIGEgXCJTdWJtaXRcIiBidXR0b25cblx0XHR1c2VyTXVsdGlwbGVTdWJtaXQ6IDUsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgXCJTdWJtaXRcIiBidXR0b24gYWxyZWFkeSBwcmVzc2VudFxuXHRcdHVzZXJNdWx0aXBsZVJhZGlvQ2xpY2s6IDYsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgbmVlZCB0byBhZGQgYSBcIlN1Ym1pdFwiIGJ1dHRvblxuXHRcdHVzZXJTaW5nbGVTdWJtaXQ6IDcsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBcIlN1Ym1pdFwiIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0dXNlclNpbmdsZVJhZGlvQ2xpY2s6IDgsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBhIHJhZGlvIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0Ly8gYXJlIHdlIGluIFwiZGVsZXRlIHBhZ2VcIiBtb2RlP1xuXHRcdC8vIChzeXNvcHMgY2FuIGFjY2VzcyBib3RoIFwiZGVsZXRlIHBhZ2VcIiBbc3lzb3BdIGFuZCBcInRhZyBwYWdlIG9ubHlcIiBbdXNlcl0gbW9kZXMpXG5cdFx0aXNTeXNvcDogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2tcblx0XHRcdCk7XG5cdFx0fSxcblx0XHQvLyBkbyB3ZSBoYXZlIGEgXCJTdWJtaXRcIiBidXR0b24gb25jZSB0aGUgZm9ybSBpcyBjcmVhdGVkP1xuXHRcdGhhc1N1Ym1pdEJ1dHRvbjogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlclNpbmdsZVN1Ym1pdFxuXHRcdFx0KTtcblx0XHR9LFxuXHRcdC8vIGlzIGRiLW11bHRpcGxlIHRoZSBvdXRjb21lIGhlcmU/XG5cdFx0aXNNdWx0aXBsZTogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlck11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVN1Ym1pdCB8fFxuXHRcdFx0XHRtb2RlID09PSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlUmFkaW9DbGlja1xuXHRcdFx0KTtcblx0XHR9LFxuXHR9O1xuXHQvLyBQcmVwYXJlcyB0aGUgc3BlZWR5IGRlbGV0aW9uIGRpYWxvZyBhbmQgZGlzcGxheXMgaXRcblx0VHdpbmtsZS5zcGVlZHkuaW5pdERpYWxvZyA9IChjYWxsYmFja2Z1bmMpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dXaWR0aCcpLFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dIZWlnaHQnKVxuXHRcdCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLnNwZWVkeTtcblx0XHRkaWFsb2cuc2V0VGl0bGUod2luZG93LndnVUxTKCfpgInmi6nlv6vpgJ/liKDpmaTnkIbnlLEnLCAn6YG45pOH5b+r6YCf5Yiq6Zmk55CG55SxJykpO1xuXHRcdGRpYWxvZy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmlrnpkognLCAn5b+r6YCf5Yiq6Zmk5pa56YedJyksICdMSUI6Q1NEJyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfpgJ/liKDorr7nva4nLCAn6YCf5Yiq6Kit5a6aJyksICdIOlRXL1BSRUYjc3BlZWR5Jyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3NwZWVkeScpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFxuXHRcdFx0Y2FsbGJhY2tmdW5jLFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlTZWxlY3Rpb25TdHlsZScpID09PSAncmFkaW9DbGljaycgPyAnY2hhbmdlJyA6IG51bGxcblx0XHQpO1xuXHRcdGlmIChNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+q5qCH6K6w77yM5LiN5Yig6ZmkJywgJ+WPquaomeiomO+8jOS4jeWIqumZpCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICd0YWdfb25seScsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFnX29ubHknLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfoi6Xmgqjlj6rmg7PmoIforrDmraTpobXpnaLogIzkuI3mmK/lsIblhbbliKDpmaQnLCAn6Iul5oKo5Y+q5oOz5qiZ6KiY5q2k6aCB6Z2i6ICM5LiN5piv5bCH5YW25Yiq6ZmkJyksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiAhKFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCB8fCBUd2lua2xlLmdldFByZWYoJ2RlbGV0ZVN5c29wRGVmYXVsdFRvRGVsZXRlJykpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjRm9ybSA9IGV2ZW50LnRhcmdldC5mb3JtO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUvZGlzYWJsZSB0YWxrIHBhZ2UgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0aWYgKGNGb3JtLnRhbGtwYWdlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y0Zvcm0udGFsa3BhZ2UuZGlzYWJsZWQgPSBjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0XHRjRm9ybS50YWxrcGFnZS5jaGVja2VkID0gIWNDaGVja2VkICYmIFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZScpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIHJlZGlyZWN0cyBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRjRm9ybS5yZWRpcmVjdHMuZGlzYWJsZWQgPSBjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ucmVkaXJlY3RzLmNoZWNrZWQgPSAhY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIGRlbGV0ZSBtdWx0aXBsZVxuXHRcdFx0XHRcdFx0XHRjRm9ybS5kZWxtdWx0aXBsZS5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5kZWxtdWx0aXBsZS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIG9wZW4gdGFsayBwYWdlIGNoZWNrYm94XG5cdFx0XHRcdFx0XHRcdGNGb3JtLm9wZW51c2VydGFsay5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5vcGVudXNlcnRhbGsuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUvZGlzYWJsZSBub3RpZnkgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ubm90aWZ5LmRpc2FibGVkID0gIWNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5ub3RpZnkuY2hlY2tlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUvZGlzYWJsZSBtdWx0aXBsZVxuXHRcdFx0XHRcdFx0XHRjRm9ybS5tdWx0aXBsZS5kaXNhYmxlZCA9ICFjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ubXVsdGlwbGUuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHQvLyBlbmFibGUgcmVxdWVzdGluZyBjcmVhdGlvbiBwcm90ZWN0aW9uXG5cdFx0XHRcdFx0XHRcdGNGb3JtLnNhbHRpbmcuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5tb2RlQ2hhbmdlZChjRm9ybSk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBkZWxldGVPcHRpb25zID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bmFtZTogJ2RlbGV0ZV9vcHRpb25zJyxcblx0XHRcdH0pO1xuXHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz6YCJ6aG5JywgJ+WIqumZpOebuOmXnOmBuOmghScpLFxuXHRcdFx0fSk7XG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSAlIDIgPT09IDAgJiYgbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSAhPT0gMikge1xuXHRcdFx0XHQvLyBoaWRlIG9wdGlvbiBmb3IgdXNlciBwYWdlcywgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGRlbGV0aW5nIHVzZXIgdGFsayBwYWdlXG5cdFx0XHRcdGRlbGV0ZU9wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk6K6o6K666aG1JywgJ+WIqumZpOiojuirlumggScpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3RhbGtwYWdlJyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3RhbGtwYWdlJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfliKDpmaTml7bpmYTluKbliKDpmaTmraTpobXpnaLnmoTorqjorrrpobXjgIInLCAn5Yiq6Zmk5pmC6ZmE5bi25Yiq6Zmk5q2k6aCB6Z2i55qE6KiO6KuW6aCB44CCJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZScpLFxuXHRcdFx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk6YeN5a6a5ZCRJywgJ+WIqumZpOmHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdyZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOWIsOatpOmhteeahOmHjeWumuWQkeOAgicsICfliKrpmaTliLDmraTpoIHnmoTph43mlrDlsI7lkJHjgIInKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlUmVkaXJlY3RzT25EZWxldGUnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGRlbGV0ZU9wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W6lOeUqOWkmuS4queQhueUseWIoOmZpCcsICfmh4nnlKjlpJrlgIvnkIbnlLHliKrpmaQnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsbXVsdGlwbGUnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ2RlbG11bHRpcGxlJyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oKo5Y+v6YCJ5oup5bqU55So5LqO6K+l6aG155qE5aSa5Liq55CG55Sx44CCJywgJ+aCqOWPr+mBuOaTh+aHieeUqOaWvOipsumggeeahOWkmuWAi+eQhueUseOAgicpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5tb2RlQ2hhbmdlZChldmVudC50YXJnZXQuZm9ybSk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHRkZWxldGVPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvIDlkK/nlKjmiLforqjorrrpobUnLCAn6ZaL5ZWf5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ29wZW51c2VydGFsaycsXG5cdFx0XHRcdFx0XHRuYW1lOiAnb3BlbnVzZXJ0YWxrJyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+atpOmhueeahOm7mOiupOWAvOS4uuaCqOeahOW8gOWQr+iuqOiuuumhteiuvue9ruOAguWcqOaCqOmAieaLqeW6lOeUqOWkmuadoeeQhueUseWIoOmZpOaXtuatpOmhueWwhuS/neaMgeS4jeWPmOOAgicsXG5cdFx0XHRcdFx0XHRcdCfmraTpoIXnmoTpoJDoqK3lgLzngrrmgqjnmoTplovllZ/oqI7oq5bpoIHoqK3lrprjgILlnKjmgqjpgbjmk4fmh4nnlKjlpJrmop3nkIbnlLHliKrpmaTmmYLmraTpoIXlsIfkv53mjIHkuI3ororjgIInXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCB0YWdPcHRpb25zID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRuYW1lOiAndGFnX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGlmIChNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0dGFnT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w55u45YWz6YCJ6aG5JywgJ+aomeiomOebuOmXnOmBuOmghScpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRhZ09wdGlvbnMuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpoLlj6/og73vvIzpgJrnn6XliJvlu7rogIUnLCAn5aaC5Y+v6IO977yM6YCa55+l5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkuIDkuKrpgJrnn6XmqKHmnb/lsIbkvJrooqvliqDlhaXliJvlu7rogIXnmoTorqjorrrpobXvvIzoi6XmgqjlkK/nlKjkuobor6XnkIbmja7nmoTpgJrnn6XjgIInLFxuXHRcdFx0XHRcdFx0J+S4gOWAi+mAmuefpeaooeadv+Wwh+acg+iiq+WKoOWFpeW7uueri+iAheeahOiojuirlumgge+8jOiLpeaCqOWVn+eUqOS6huipsueQhuaTmueahOmAmuefpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6XG5cdFx0XHRcdFx0XHQhTW9yZWJpdHMudXNlcklzU3lzb3AgfHxcblx0XHRcdFx0XHRcdCEoVHdpbmtsZS5zcGVlZHkuaGFzQ1NEIHx8IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUnKSksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+a4heepuumhtemdoicsICfmuIXnqbrpoIHpnaInKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2JsYW5rJyxcblx0XHRcdFx0XHRuYW1lOiAnYmxhbmsnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjmoIforrDmqKHmnb/liY3vvIzlhYjmuIXnqbrpobXpnaLvvIzpgILnlKjkuo7kuKXph43noLTlnY/miJbotJ/pnaLnlJ/ogIXkvKDorrDnrYnjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOaomeiomOaooeadv+WJje+8jOWFiOa4heepuumggemdou+8jOmBqeeUqOaWvOWatOmHjeegtOWjnuaIluiyoOmdoueUn+iAheWCs+iomOetieOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZCM5pe25qCH6K6w5Lul6K+35rGC55m957q45L+d5oqkJywgJ+WQjOaZguaomeiomOS7peiri+axgueZvee0meS/neittycpLFxuXHRcdFx0XHRcdHZhbHVlOiAnc2FsdGluZycsXG5cdFx0XHRcdFx0bmFtZTogJ3NhbHRpbmcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfpgInlj5blkI7vvIzlv6vpgJ/liKDpmaTmqKHmnb/lkI7lsIbpmYTluKYge3tzYWx0fX0g5qCH562+77yM5Lul6K+35rGC5omn6KGM5Yig6Zmk55qE566h55CG5ZGY6L+b6KGM55m957q45L+d5oqk77yM5LuF5Zyo6aG16Z2i5Yib5bu6M+asoeS7peS4iuaJjemAieaLqeatpOmhueOAgicsXG5cdFx0XHRcdFx0XHQn6YG45Y+W5b6M77yM5b+r6YCf5Yiq6Zmk5qih5p2/5b6M5bCH6ZmE5bi2IHt7c2FsdH19IOaomeexpO+8jOS7peiri+axguWft+ihjOWIqumZpOeahOeuoeeQhuWToemAsuihjOeZvee0meS/neitt++8jOWDheWcqOmggemdouW7uuerizPmrKHku6XkuIrmiY3pgbjmk4fmraTpoIXjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W6lOeUqOWkmuS4queQhueUsScsICfmh4nnlKjlpJrlgIvnkIbnlLEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ211bHRpcGxlJyxcblx0XHRcdFx0XHRuYW1lOiAnbXVsdGlwbGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5oKo5Y+v6YCJ5oup5bqU55So5LqO6K+l6aG155qE5aSa5Liq55CG55Sx44CCJywgJ+aCqOWPr+mBuOaTh+aHieeUqOaWvOipsumggeeahOWkmuWAi+eQhueUseOAgicpLFxuXHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKGV2ZW50LnRhcmdldC5mb3JtKTtcblx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0aWQ6ICdwcmlvci1kZWxldGlvbi1jb3VudCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfliJ3lp4vljJZDU0TmqKHlnZflpLHotKXvvIzor7fph43or5XvvIzmiJblsIbov5nmiqXlkYrnu5lUd2lua2xl5byA5Y+R6ICF44CCJyxcblx0XHRcdFx0J+WIneWni+WMlkNTROaooee1hOWkseaVl++8jOiri+mHjeippu+8jOaIluWwh+mAmeWgseWRiue1plR3aW5rbGXplovnmbzogIXjgIInXG5cdFx0XHQpLFxuXHRcdH0pO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgIT09ICdyYWRpb0NsaWNrJykge1xuXHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0Y2xhc3NOYW1lOiAndHctc3BlZWR5LXN1Ym1pdCcsXG5cdFx0XHR9KTsgLy8gUmVuYW1lZCBpbiBtb2RlQ2hhbmdlZFxuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0ZGlhbG9nLnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRkaWFsb2cuZGlzcGxheSgpO1xuXHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKHJlc3VsdCk7XG5cdFx0Ly8gQ2hlY2sgZm9yIHByaW9yIGRlbGV0aW9ucy4gIEp1c3Qgb25jZSwgdXBvbiBpbml0XG5cdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2sucHJpb3JEZWxldGlvbkNvdW50KCk7XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLmdldE1vZGUgPSAoZm9ybSkgPT4ge1xuXHRcdGxldCBtb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyU2luZ2xlU3VibWl0O1xuXHRcdGlmIChmb3JtLnRhZ19vbmx5ICYmICFmb3JtLnRhZ19vbmx5LmNoZWNrZWQpIHtcblx0XHRcdGlmIChmb3JtLmRlbG11bHRpcGxlLmNoZWNrZWQpIHtcblx0XHRcdFx0bW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVN1Ym1pdDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnN5c29wU2luZ2xlU3VibWl0O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZm9ybS5tdWx0aXBsZS5jaGVja2VkKSB7XG5cdFx0XHRtb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVTdWJtaXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJTaW5nbGVTdWJtaXQ7XG5cdFx0fVxuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgPT09ICdyYWRpb0NsaWNrJykge1xuXHRcdFx0bW9kZSsrO1xuXHRcdH1cblx0XHRyZXR1cm4gbW9kZTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2subW9kZUNoYW5nZWQgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IG5hbWVzcGFjZSA9IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJyk7XG5cdFx0Ly8gZmlyc3QgZmlndXJlIG91dCB3aGF0IG1vZGUgd2UncmUgaW5cblx0XHRjb25zdCBtb2RlID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZ2V0TW9kZShmb3JtKTtcblx0XHRjb25zdCBpc1N5c29wTW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKTtcblx0XHRpZiAoaXNTeXNvcE1vZGUpIHtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPWRlbGV0ZV9vcHRpb25zXScpLnNob3coKTtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPXRhZ19vcHRpb25zXScpLmhpZGUoKTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy1zcGVlZHktc3VibWl0JykudGV4dCh3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPWRlbGV0ZV9vcHRpb25zXScpLmhpZGUoKTtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPXRhZ19vcHRpb25zXScpLnNob3coKTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy1zcGVlZHktc3VibWl0JykudGV4dCh3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSk7XG5cdFx0fVxuXHRcdGNvbnN0IHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdH0pO1xuXHRcdGlmIChcblx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlck11bHRpcGxlUmFkaW9DbGljayB8fFxuXHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlUmFkaW9DbGlja1xuXHRcdCkge1xuXHRcdFx0Y29uc3QgZXZhbHVhdGVUeXBlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpID8gJ2V2YWx1YXRlU3lzb3AnIDogJ2V2YWx1YXRlVXNlcic7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W9k+mAieaLqeWujOaIkOWQju+8jOWNleWHu++8micsICfnlbbpgbjmk4flrozmiJDlvozvvIzpu57mk4rvvJonKSxcblx0XHRcdH0pO1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRuYW1lOiAnc3VibWl0LW11bHRpcGxlJyxcblx0XHRcdFx0bGFiZWw6IGlzU3lzb3BNb2RlID8gd2luZG93LndnVUxTKCfliKDpmaTpobXpnaInLCAn5Yiq6Zmk6aCB6Z2iJykgOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSxcblx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrW2V2YWx1YXRlVHlwZV0oZXZlbnQpO1xuXHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHR9LFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IHJhZGlvT3JDaGVja2JveCA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNNdWx0aXBsZShtb2RlKSA/ICdjaGVja2JveCcgOiAncmFkaW8nO1xuXHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnnkIbnlLEnLCAn6Ieq6KiC55CG55SxJyksXG5cdFx0XHR9KTtcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiByYWRpb09yQ2hlY2tib3gsXG5cdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuY3VzdG9tUmF0aW9uYWxlLCBtb2RlKSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRzd2l0Y2ggKG5hbWVzcGFjZSkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHQvLyBhcnRpY2xlIGFuZCBwc2V1ZG8gbmFtZXNwYWNlXG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuYXJ0aWNsZUxpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRcdC8vIHVzZXJcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi36aG1JywgJ+S9v+eUqOiAhemggemdoicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS51c2VyTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMzpcblx0XHRcdFx0Ly8gdXNlciB0YWxrXG5cdFx0XHRcdGlmIChtdy51dGlsLmlzSVBBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobUnLCAn5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiByYWRpb09yQ2hlY2tib3gsXG5cdFx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS51c2VydGFsa0xpc3QsIG1vZGUpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSA2OlxuXHRcdFx0XHQvLyBmaWxlXG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7ticsICfmqpTmoYgnKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuZmlsZUxpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkpIHtcblx0XHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+agh+iusENTRCBGMeOAgUYz44CBRjXvvIzor7fkvb/nlKhUd2lua2xl55qE4oCc5Zu+5p2D4oCd5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdFx0J+aomeiomENTRCBGMeOAgUYz44CBRjXvvIzoq4vkvb/nlKhUd2lua2xl55qE44CM5ZyW5qyK44CN5Yqf6IO944CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTQ6XG5cdFx0XHRcdC8vIGNhdGVnb3J5XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIhuexuycsICfliIbpoZ4nKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuY2F0ZWdvcnlMaXN0LCBtb2RlKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzMDI6XG5cdFx0XHRcdC8vIGRyYWZ0XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiAn6I2J56i/Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkuZHJhZnRMaXN0LCBtb2RlKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBuYW1lc3BhY2UgJSAyID09PSAxICYmIG5hbWVzcGFjZSAhPT0gMzpcblx0XHRcdFx0Ly8gc2hvdyBkYi10YWxrIG9uIHRhbGsgcGFnZXMsIGJ1dCBub3QgdXNlciB0YWxrIHBhZ2VzXG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iuqOiuuumhtScsICfoqI7oq5bpoIEnKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoVHdpbmtsZS5zcGVlZHkudGFsa0xpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gY3VzdG9tIHJhdGlvbmFsZSBsaXZlcyB1bmRlciBnZW5lcmFsIGNyaXRlcmlhIHdoZW4gdGFnZ2luZ1xuXHRcdGxldCBnZW5lcmFsQ3JpdGVyaWEgPSBUd2lua2xlLnNwZWVkeS5nZW5lcmFsTGlzdDtcblx0XHRpZiAoIVR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSkge1xuXHRcdFx0Z2VuZXJhbENyaXRlcmlhID0gWy4uLlR3aW5rbGUuc3BlZWR5LmN1c3RvbVJhdGlvbmFsZSwgLi4uZ2VuZXJhdGVBcnJheShnZW5lcmFsQ3JpdGVyaWEpXTtcblx0XHR9XG5cdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhCcsICfluLjopo8nKSxcblx0XHR9KTtcblx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KGdlbmVyYWxDcml0ZXJpYSwgbW9kZSksXG5cdFx0fSk7XG5cdFx0aWYgKCFUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkpIHtcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5oql5L615p2D6aG16Z2i77yM6K+35L2/55SoVHdpbmtsZeeahOKAnOS+teadg+KAneWKn+iDveOAgicsXG5cdFx0XHRcdFx0J+aPkOWgseS+teasiumggemdou+8jOiri+S9v+eUqFR3aW5rbGXnmoTjgIzkvrXmrIrjgI3lip/og73jgIInXG5cdFx0XHRcdCksXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnSXNSZWRpcmVjdCcpIHx8IE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGxhYmVsOiAn6YeN5a6a5ZCRJyxcblx0XHRcdH0pO1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5yZWRpcmVjdExpc3QsIG1vZGUpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IFtvbGRfYXJlYV0gPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ3dvcmtfYXJlYScpO1xuXHRcdGZvcm0ucmVwbGFjZUNoaWxkKHdvcmtfYXJlYS5yZW5kZXIoKSwgb2xkX2FyZWEpO1xuXHRcdC8vIGlmIHN5c29wLCBjaGVjayBpZiBDU0QgaXMgYWxyZWFkeSBvbiB0aGUgcGFnZSBhbmQgZmlsbCBpbiBjdXN0b20gcmF0aW9uYWxlXG5cdFx0aWYgKGlzU3lzb3BNb2RlICYmIFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCkge1xuXHRcdFx0Y29uc3QgW2N1c3RvbU9wdGlvbl0gPSAkYm9keS5maW5kKCdpbnB1dFtuYW1lPWNzZF1bdmFsdWU9cmVhc29uXScpO1xuXHRcdFx0aWYgKGN1c3RvbU9wdGlvbikge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlTZWxlY3Rpb25TdHlsZScpICE9PSAncmFkaW9DbGljaycpIHtcblx0XHRcdFx0XHQvLyBmb3JjZSBsaXN0ZW5lcnMgdG8gcmUtaW5pdFxuXHRcdFx0XHRcdGN1c3RvbU9wdGlvbi5jbGljaygpO1xuXHRcdFx0XHRcdGN1c3RvbU9wdGlvbi5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGN1c3RvbU9wdGlvbi5zdWJncm91cCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3VzdG9tT3B0aW9uLnN1Ymdyb3VwLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI2RlbGV0ZS1yZWFzb24nKS50ZXh0KClcblx0XHRcdFx0KS5yZXBsYWNlKC9cXCsvZywgJyAnKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gZW5sYXJnZSBHNyByYWRpby9jaGVja2JveCBhbmQgaXRzIGxhYmVsXG5cdFx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3ZhbHVlPVwiZzdcIl0nKSAmJiBUd2lua2xlLmdldFByZWYoJ2VubGFyZ2VHN0lucHV0JykpIHtcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3ZhbHVlPVwiZzdcIl0nKS5zdHlsZSA9XG5cdFx0XHRcdCdoZWlnaHQ6IDJlbTsgd2lkdGg6IDJlbTsgaGVpZ2h0OiAtbW96LWluaXRpYWw7IHdpZHRoOiAtbW96LWluaXRpYWw7IC1tb3otdHJhbnNmb3JtOiBzY2FsZSgyKTsgLW8tdHJhbnNmb3JtOiBzY2FsZSgyKTsnO1xuXHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdmFsdWU9XCJnN1wiXScpLmxhYmVsc1swXS5zdHlsZSA9ICdmb250LXNpemU6IDEuNWVtOyBsaW5lLWhlaWdodDogMS41ZW07Jztcblx0XHR9XG5cdFx0aWYgKCFpc1N5c29wTW9kZSAmJiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSAhPT0gJ3dpa2l0ZXh0Jykge1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnX29wdGlvbnNdJykuaGlkZSgpO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9d29ya19hcmVhXScpLmVtcHR5KCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gW1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ1R3aW5rbGXkuI3mlK/mjIHlnKjpobXpnaLlhoXlrrnmqKHlnovkuLonLCAnVHdpbmtsZeS4jeaUr+aPtOWcqOmggemdouWFp+WuueaooeWei+eCuicpLFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSxcblx0XHRcdFx0d2luZG93LndnVUxTKCfnmoTpobXpnaLkuIrmjILkuIrlv6vpgJ/liKDpmaTmqKHmnb/vvIzor7flj4Lop4EnLCAn55qE6aCB6Z2i5LiK5o6b5LiK5b+r6YCf5Yiq6Zmk5qih5p2/77yM6KuL5Y+D6KaLJyksXG5cdFx0XHRcdCQoJzxhPicpXG5cdFx0XHRcdFx0LmF0dHIoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiAnX2JsYW5rJyxcblx0XHRcdFx0XHRcdHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInLFxuXHRcdFx0XHRcdFx0aHJlZjogbXcudXRpbC5nZXRVcmwoJ0xJQjpTUEVDSUFMU0QnKSxcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5omL5Yqo5pS+572u5qih5p2/5pe255qE5rOo5oSP5LqL6aG5JywgJ+aJi+WLleaUvue9ruaooeadv+aZgueahOazqOaEj+S6i+mghScpKVswXSxcblx0XHRcdFx0J+OAgicsXG5cdFx0XHRdO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9d29ya19hcmVhXScpLmFwcGVuZChtZXNzYWdlKTtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZCh0cnVlKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLnByaW9yRGVsZXRpb25Db3VudCA9ICgpID0+IHtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0bGlzdDogJ2xvZ2V2ZW50cycsXG5cdFx0XHRsZXR5cGU6ICdkZWxldGUnLFxuXHRcdFx0bGVhY3Rpb246ICdkZWxldGUvZGVsZXRlJyxcblx0XHRcdC8vIEp1c3QgcHVyZSBwYWdlIGRlbGV0aW9uLCBubyByZWRpcmVjdCBvdmVyd3JpdGVzIG9yIHJldmRlbFxuXHRcdFx0bGV0aXRsZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0bGVwcm9wOiAnJyxcblx0XHRcdC8vIFdlJ3JlIGp1c3QgY291bnRpbmcgd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgZW50cmllc1xuXHRcdFx0bGVsaW1pdDogNSxcblx0XHRcdC8vIEEgbGl0dGxlIGJpdCBnb2VzIGEgbG9uZyB3YXlcblx0XHR9O1xuXG5cdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn5qOA5p+l5LmL5YmN55qE5Yig6ZmkJywgJ+aqouafpeS5i+WJjeeahOWIqumZpCcpLCBxdWVyeSwgKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhcGlvYmouZ2V0UmVzcG9uc2UoKTtcblx0XHRcdGNvbnN0IGRlbENvdW50ID0gcmVzcG9uc2UucXVlcnkubG9nZXZlbnRzLmxlbmd0aDtcblx0XHRcdGlmIChkZWxDb3VudCkge1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9IHdpbmRvdy53Z1VMUygn6KKr5Yig6ZmkJywgJ+iiq+WIqumZpCcpO1xuXHRcdFx0XHRpZiAocmVzcG9uc2UuY29udGludWUpIHtcblx0XHRcdFx0XHRtZXNzYWdlICs9IHdpbmRvdy53Z1VMUygn6LaF6L+HJywgJ+i2hemBjicpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lc3NhZ2UgKz0gYCR7ZGVsQ291bnR95qyhYDtcblx0XHRcdFx0Ly8gMysgc2VlbXMgcHJvYmxlbWF0aWNcblx0XHRcdFx0aWYgKGRlbENvdW50ID49IDMpIHtcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjcHJpb3ItZGVsZXRpb24tY291bnQnKS5jc3MoJ2NvbG9yJywgJyNmZjAwMDAnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBQcm92aWRlIGEgbGluayB0byBwYWdlIGxvZ3MgKENTRCB0ZW1wbGF0ZXMgaGF2ZSBvbmUgZm9yIHN5c29wcylcblx0XHRcdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgd2luZG93LndnVUxTKCfvvIjml6Xlv5fvvIknLCAn77yI5pel6KqM77yJJykpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZShcblx0XHRcdFx0XHQnaHJlZicsXG5cdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0cGFnZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG5cdFx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdFx0XHQkYm9keS5maW5kKCcjcHJpb3ItZGVsZXRpb24tY291bnQnKS50ZXh0KG1lc3NhZ2UpOyAvLyBTcGFjZSBiZWZvcmUgbG9nIGxpbmtcblx0XHRcdFx0JGJvZHkuZmluZCgnI3ByaW9yLWRlbGV0aW9uLWNvdW50JykuYXBwZW5kKGxpbmspO1xuXHRcdFx0fVxuXHRcdH0pLnBvc3QoKTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0ID0gKGxpc3QsIG1vZGUpID0+IHtcblx0XHQvLyBtb2RlIHN3aXRjaGVzXG5cdFx0Y29uc3QgaXNTeXNvcE1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSk7XG5cdFx0Y29uc3QgbXVsdGlwbGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzTXVsdGlwbGUobW9kZSk7XG5cdFx0Y29uc3QgaGFzU3VibWl0QnV0dG9uID0gVHdpbmtsZS5zcGVlZHkubW9kZS5oYXNTdWJtaXRCdXR0b24obW9kZSk7XG5cdFx0Y29uc3Qgb3BlblN1Ymdyb3VwSGFuZGxlciA9IChlKSA9PiB7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2lucHV0JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblx0XHRcdCQoZS50YXJnZXQuZm9ybSkuY2hpbGRyZW4oKS5jc3MoJ2NvbG9yJywgJ2dyYXknKTtcblx0XHRcdCQoZS50YXJnZXQpLnBhcmVudCgpLmNzcygnY29sb3InLCAnYmxhY2snKS5maW5kKCdpbnB1dCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuXHRcdFx0JChlLnRhcmdldCkucGFyZW50KCkuZmluZCgnaW5wdXQ6dGV4dCcpWzBdLmZvY3VzKCk7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH07XG5cdFx0Y29uc3Qgc3VibWl0U3ViZ3JvdXBIYW5kbGVyID0gKGUpID0+IHtcblx0XHRcdGNvbnN0IGV2YWx1YXRlVHlwZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSA/ICdldmFsdWF0ZVN5c29wJyA6ICdldmFsdWF0ZVVzZXInO1xuXHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tbZXZhbHVhdGVUeXBlXShlKTtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fTtcblx0XHRyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGxpc3QsIChjcml0RWxlbWVudCkgPT4ge1xuXHRcdFx0Y29uc3QgY3JpdGVyaW9uID0ge1xuXHRcdFx0XHQuLi5jcml0RWxlbWVudCxcblx0XHRcdH07XG5cdFx0XHRpZiAobXVsdGlwbGUpIHtcblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlV2hlbk11bHRpcGxlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlU3ViZ3JvdXBXaGVuTXVsdGlwbGUpIHtcblx0XHRcdFx0XHRjcml0ZXJpb24uc3ViZ3JvdXAgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVXaGVuU2luZ2xlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlU3ViZ3JvdXBXaGVuU2luZ2xlKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGlzU3lzb3BNb2RlKSB7XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVdoZW5TeXNvcCkge1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVN1Ymdyb3VwV2hlblN5c29wKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlV2hlblVzZXIpIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVTdWJncm91cFdoZW5Vc2VyKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnSXNSZWRpcmVjdCcpICYmIGNyaXRlcmlvbi5oaWRlV2hlblJlZGlyZWN0KSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjcml0ZXJpb24uc2hvd0luTmFtZXNwYWNlcyAmJlxuXHRcdFx0XHQhY3JpdGVyaW9uLnNob3dJbk5hbWVzcGFjZXMuaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGNyaXRlcmlvbi5oaWRlSW5OYW1lc3BhY2VzICYmXG5cdFx0XHRcdGNyaXRlcmlvbi5oaWRlSW5OYW1lc3BhY2VzLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3JpdGVyaW9uLnN1Ymdyb3VwICYmICFoYXNTdWJtaXRCdXR0b24pIHtcblx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gZ2VuZXJhdGVBcnJheShjcml0ZXJpb24uc3ViZ3JvdXAsIHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRuYW1lOiAnc3VibWl0Jyxcblx0XHRcdFx0XHRsYWJlbDogaXNTeXNvcE1vZGUgPyB3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSA6IHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpLFxuXHRcdFx0XHRcdGV2ZW50OiBzdWJtaXRTdWJncm91cEhhbmRsZXIsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBGSVhNRTogZG9lcyB0aGlzIGRvIGFueXRoaW5nP1xuXHRcdFx0XHRjcml0ZXJpb24uZXZlbnQgPSBvcGVuU3ViZ3JvdXBIYW5kbGVyO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGlzU3lzb3BNb2RlKSB7XG5cdFx0XHRcdGNvbnN0IG9yaWdpbmFsRXZlbnQgPSBjcml0ZXJpb24uZXZlbnQ7XG5cdFx0XHRcdGNyaXRlcmlvbi5ldmVudCA9IChlKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG11bHRpcGxlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luYWxFdmVudChlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3Qgbm9ybWFsaXplZENyaXRlcmlvbiA9IFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2hbZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0XHRcdCRib2R5XG5cdFx0XHRcdFx0XHQuZmluZCgnW25hbWU9b3BlbnVzZXJ0YWxrXScpXG5cdFx0XHRcdFx0XHQucHJvcChcblx0XHRcdFx0XHRcdFx0J2NoZWNrZWQnLFxuXHRcdFx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ29wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZScpLmluY2x1ZGVzKG5vcm1hbGl6ZWRDcml0ZXJpb24pXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChvcmlnaW5hbEV2ZW50KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luYWxFdmVudChlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3JpdGVyaW9uO1xuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jdXN0b21SYXRpb25hbGUgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6IGDoh6rlrprkuYnnkIbnlLEke01vcmViaXRzLnVzZXJJc1N5c29wID8gJ++8iOiHquWumuS5ieWIoOmZpOeQhueUse+8iScgOiAnJ31gLFxuXHRcdFx0dmFsdWU6ICdyZWFzb24nLFxuXHRcdFx0dG9vbHRpcDogJ+ivpemhteiHs+WwkeW6lOivpeespuWQiOS4gOadoeW/q+mAn+WIoOmZpOeahOagh+WHhu+8jOW5tuS4lOaCqOW/hemhu+WcqOeQhueUseS4reaPkOWIsOOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAncmVhc29uXzEnLFxuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5maWxlTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Yx77ya5piO5pi+5LiN56ym5ZCI5pys56uZ6JGX5L2c5p2D5pa56ZKI55qE5paH5Lu2Jyxcblx0XHRcdHZhbHVlOiAnZjEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheWGte+8mjEu5LiK5Lyg5ZCOM+WkqeWGheS7jeeEtuadpea6kOS4jeaYjuOAgeiRl+S9nOadg+S4jeaYjueahOaWh+S7tuOAgjIu5LiK5Lyg6ICF5a6j56ew5oul5pyJ77yM6ICM5Zyo5YW25LuW5p2l5rqQ5om+5Yiw55qE5paH5Lu244CCMy7mlofku7blrqPnp7DnlLHmn5DkvZzogIXkvp3mja7mn5Doh6rnlLHokZfkvZzmnYPljY/orq7lj5HluIPvvIzkvYbmib7kuI3liLDor6Xoh6rnlLHljY/orq7nmoTlo7DmmI7jgII0LuWFtuS7luaYjuaYvuS+teadg+eahOaWh+S7tu+8jOWPr+mZhOWKoOS+teadg+eQhueUseOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Yy77ya6YeN5aSN5LiU5LiN5YaN6KKr5L2/55So55qE5paH5Lu2Jyxcblx0XHRcdHZhbHVlOiAnZjInLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheWGte+8muS4jueOsOacieaWh+S7tuWujOWFqOebuOWQjO+8iOaIluS4jueOsOacieaWh+S7tuWGheWuueS4gOiHtOS9huWwuuWvuOi+g+Wwj++8ie+8jOS4lOayoeacieWuouingumcgOimge+8iOWmguafkOS6m+WcuuWQiOmcgOS9v+eUqOWwj+WwuuWvuOWbvueJh++8ieeahOaWh+S7tuOAguaIluaYr+iiq+abtOWKoOa4heaZsOeahOaWh+S7tuOAgVNWR+agvOW8j+aWh+S7tuaJgOWPluS7o+eahOaWh+S7tuOAguivt+aPkOaKpeiAheehruWumuaWh+S7tuayoeacieS7u+S9lemhtemdouS9v+eUqOWQjuWGjeaPkOaKpeWIoOmZpO+8jOW5tumZhOazqOWvueW6lOi0qOmHj+abtOWlveeahOaWh+S7tuWQjeOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAnZjJfZmlsZW5hbWUnLFxuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRsYWJlbDogJ+aWsOaWh+S7tuWQje+8micsXG5cdFx0XHRcdHRvb2x0aXA6ICflj6/kuI3lkKvigJxGaWxlOuKAneWJjee8gOOAgicsXG5cdFx0XHR9LFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LmFydGljbGVMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnQTHvvJrlhoXlrrnnqbrms5vmiJblrozlhajmsqHmnInlhoXlrrnjgIInLFxuXHRcdFx0dmFsdWU6ICdhMScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5p2h55uu55qE5YaF5a6556y857uf77yM5oiW55Sa6Iez5qC55pys5rKh5pyJ5o+Q5Y+K5p2h55uu5Li75L2T77yM5L2/5p2h55uu5LiN6IO955So5Lul5Yy65YiG5YW25LuW5LqL54mp77yb5oiW5p2h55uu5Y+q5YyF5ous5aSW6YOo6ZO+5o6l44CB5Y+C6KeB44CB5Y+C6ICD5p2l5rqQ44CB5YiG57G744CB5qih5p2/77yM6ICM5rKh5pyJ5paH5a2X5o+P6L+w44CC5raI5q2n5LmJ6aG144CB6YeN5a6a5ZCR6aG15LiN6YCC55So5q2k5p2h44CC6K+35rOo5oSP5pyJ5Lqb55So5oi35Y+v6IO95Lya5aSa5qyh5L+d5a2Y77yM6Iul5q2k57G76aG16Z2i55qE5pyA5ZCO5LiA5qyh57yW6L6R5pe26Ze06LaF6L+HMjTlsI/ml7bvvIzliJnlj6/mj5Dor7flv6vpgJ/liKDpmaTjgIInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdBMu+8muS4juWFtuS7luadoeebruaIluWFtuWOhuWPsueJiOacrOmHjeWkje+8jOS4lOS4jemAguWQiOS9nOS4uuWFtumHjeWumuWQkeOAgicsXG5cdFx0XHR2YWx1ZTogJ2EyJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfmnaHnm67liJvlu7rml7bnmoTlhoXlrrnvvIzkuI7lhbbku5bnjrDmnInmnaHnm67vvIjmiJblhbbljoblj7LniYjmnKzvvInlhoXlrrnlrozlhajnm7jlkIzmiJbpnZ7luLjnm7jkvLzvvIzkuJTlkI3np7DkuI3pgILlkIjkvZzkuLrlkI7ogIXnmoTph43lrprlkJHjgILkuI3ljIXmi6zmi4bliIbjgIHlkIjlubbjgIHph43nu4TlkI7kuqfnlJ/nmoTmnaHnm67jgILlpoLmnInnlpHomZHvvIzlj6/ovazkuqTliKDpmaTorqjorrrjgILoi6XlkI7liJvlu7rnmoTmnaHnm67lkI3np7Dlj6/kvZzkuLrph43lrprlkJHvvIzlj6/nm7TmjqXmlLnkuLrph43lrprlkJHvvJvoi6XlhYjliJvlu7rnmoTmnaHnm67lrpzkvZzkuLrlkI7liJvlu7rmnaHnm67nmoTph43lrprlkJHvvIzor7fmj5Dor7fnp7vliqjor7fmsYLjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ2EyX3BhZ2VuYW1lJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfnjrDmnInmnaHnm67lkI3vvJonLFxuXHRcdFx0XHR0b29sdGlwOiAn5LiN6Ieq5Yqo5Yqg5LiK6ZO+5o6l77yM6Iul6ZyA6KaB6K+36Ieq6KGM5Yqg5LiKW1tdXeOAgicsXG5cdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnQTPvvJrpnZ7njrDku6PmsYnor63miJbnv7vor5Hmi5nliqPnmoTmnaHnm64nLFxuXHRcdFx0dmFsdWU6ICdhMycsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5p2h55uu5YaF5a6557ud5aSn6YOo5YiG6Z2e546w5Luj5rGJ6K+t77yM5YyF5ous5pyq57+76K+R55qE5aSW6K+t44CB5pa56KiA5Y+K5paH6KiA5paH77yb5oiW57+76K+R6LSo6YeP5L2O5LiL77yM5Lul6Iez5LqO6Zq+5Lul55CG6Kej5oiW5Ye6546w6L6D5aSa6ZSZ6K+v44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5jYXRlZ29yeUxpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdPMu+8muepuuWIhuexu+OAgicsXG5cdFx0XHR2YWx1ZTogJ28yJyxcblx0XHRcdHRvb2x0aXA6ICfmsqHmnInmlLblvZXku7vkvZXpobXpnaLjgIHmlofku7bjgIHlrZDliIbnsbvnmoTliIbnsbvjgIJDYXRlZ29yeTror7fli7/liKDpmaTnmoTliIbnsbvkuK3nmoTliIbnsbvkuI3pgILnlKjjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LmRyYWZ0TGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ08z77ya5bqf5byD6I2J56i/44CCJyxcblx0XHRcdHZhbHVlOiAnbzMnLFxuXHRcdFx0dG9vbHRpcDogJ+iNieeov+WQjeWtl+epuumXtOWGheWFreS4quaciOWGheaXoOe8lui+keeahOmhtemdouOAgicsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkudXNlckxpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdPMe+8mueUqOaIt+ivt+axguWIoOmZpOiHquW3seeahOeUqOaIt+mhteOAgicsXG5cdFx0XHR2YWx1ZTogJ28xJyxcblx0XHRcdHRvb2x0aXA6ICfnrqHnkIblkZjpnIDmn6XnnIvnvJbovpHljoblj7LvvIznoa7orqTor6XpobXpnaLkuI3mmK/ku47lhbbku5blkI3lrZfnqbrpl7Tnp7vliqjogIzmnaXjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LmdlbmVyYWxMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzHvvJrmmI7mmL7ov53lj43ms5Xlvovms5Xop4TmiJbov53og4zlhazluo/oia/kv5fnmoTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnMScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5piO5pi+6L+d5Y+N5pyN5Yqh5Zmo5omA5Zyo5Zyw55qE5rOV5b6L5rOV6KeE5Y+K5pyJ5YWz6KeE5a6a77yM5oiW56qB56C056S+5Lya5YWs5bqP6Imv5L+X5bqV57q/77yM5oyJ54Wn5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95LqS6IGU572R566h55CG6KeE5a6a5bqU5LqI5Yig6Zmk55qE6aG16Z2i44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzLvvJrmsqHmnInlrp7pmYXlhoXlrrnnmoTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnMicsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5LuF5YyF5ous5peg5oSP5LmJ5a2X56ym5Liy6ICM5rKh5pyJ5a6e6ZmF5YaF5a6555qE6aG16Z2i44CC55Sx55So5oi35pys5Lq65Yib5bu655qE55So5oi36aG144CB55So5oi36K6o6K666aG177yM5Y+K5LiT5Li65rWL6K+V5o+Q5L6b55qE5rKZ55uS77yM5LiN6YCC55So5q2k5YeG5YiZ44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzPvvJrnuq/nsrnnoLTlnY8nLFxuXHRcdFx0dmFsdWU6ICdnMycsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5YyF5ous5L2G5LiN6ZmQ5LqO5piO5pi+55qE5oG25L2c5Ymn44CB6ZSZ6K+v5L+h5oGv44CB5Lq66Lqr5pS75Ye7562J77yM5Lul5Y+K5riF55CG56e75Yqo56C05Z2P5pe255WZ5LiL55qE6YeN5a6a5ZCR44CC6Iul5pS25Yiw5oiW5Y+R546w5Lil6YeN55qE5Lq66Lqr5pS75Ye75LiO6K+L5q+B77yM566h55CG5ZGY5Y+K5YW25LuW55So5oi35bqU6YCa55+l55uR552j5ZGY6L+b6KGM55uR552j6ZqQ6JeP44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzTvvJrph43mlrDliJvlu7rlt7LooqvliKDpmaTnmoTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnNCcsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn6Iul546w5pyJ6aG16Z2i5LiO5pu+5Zyo5Yig6Zmk6K6o6K6677yI5ZCr6aG16Z2i5a2Y5bqf6K6o6K6644CB5paH5Lu25a2Y5bqf6K6o6K665ZKM5L615p2D5a6h5qC477yM5LiN5ZCr5b+r6YCf5Yig6Zmk77yJ5Lit6KKr5Yig6Zmk5YaF5a6555u45ZCM5oiW6Z2e5bi455u45Ly877yM5LiU546w5pyJ5YaF5a655LuN54S26YCC55So5Yig6Zmk6K6o6K665Lit55qE57uT6K6677yM5peg6K665qCH6aKY5piv5ZCm55u45ZCM77yM6YO96YCC55So5pys5qCH5YeG44CC6Iul546w5pyJ6aG16Z2i5qCH6aKY5LiO5bey5Yig54mI5pys5LiN5LiA6Ie077yM5YiZ5o+Q6K+36YCf5Yig6ICF5bqU5LiA5bm25rOo5piO5bey5Yig54mI5pys55qE6aG16Z2i5ZCN77yb6Iul6K+l6aG16Z2i5LmL5YmN6KKr5b+r6YCf5Yig6Zmk77yM6K+35Lul55u45ZCM55CG55Sx6YeN5paw5o+Q6K+36YCf5Yig44CC6Iul546w5pyJ5YaF5a655LiN6YCC55So5Yig6Zmk6K6o6K665Lit55qE57uT6K6677yM5bqU6YeN5paw5o+Q5Ye65Yig6Zmk6K6o6K6644CCJyxcblx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZzRfcGFnZW5hbWUnLFxuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bGFiZWw6ICflt7LliKDniYjmraTpobXpnaLlkI3vvJonLFxuXHRcdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHRcdGhpZGVTdWJncm91cFdoZW5NdWx0aXBsZTogdHJ1ZSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzXvvJrlm6DmioDmnK/ljp/lm6DliKDpmaTpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnNScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5YyF5ous5Lul5LiL5oOF5b2i77ya5Zug56e75Yqo6K+35rGC6ICM5Yig6Zmk6aG16Z2i77yb5Lul6KaG55uW5Yig6Zmk6YeN5a6a5ZCR77yb5Yig6Zmk5peg55So55qETWVkaWFXaWtp6aG16Z2i77yM5Y+K5YW25LuW5oqA5pyv5Zui6Zif5oiW55WM6Z2i566h55CG5ZGY6K6k5Li65pyJ5b+F6KaB5omn6KGM55qE5b+r6YCf5Yig6Zmk5oOF5b2i44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzbvvJrljp/kvZzogIXmj5Dor7fliKDpmaTmiJbmuIXnqbrpobXpnaLvvIzkuJTpobXpnaLljp/kvZzogIXku4XmnInkuIDkuronLFxuXHRcdFx0dmFsdWU6ICdnNicsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn6aG16Z2i5Y6f5L2c6ICF5oyB5ZCI55CG55CG55Sx5o+Q5Ye655qE5b+r6YCf5Yig6Zmk77yb5oiW6aG16Z2i5Y6f5L2c6ICF77yI5a6e6ZmF6LSh54yu6ICF77yJ5riF56m66aG16Z2i77yM5YW25LuW55So5oi35o+Q5Lqk55qE5b+r6YCf5Yig6Zmk44CC6aG16Z2i5Y6f5L2c6ICF77yI5a6e6ZmF6LSh54yu6ICF77yJ5LuF5LiA5Lq65pe25ruh6Laz5pys5YeG5YiZ44CC6Iul6aG16Z2i5a6e6ZmF6LSh54yu6ICF5aSa5LqO5LiA5Lq677yM6K+35oyB5ZCI55CG55CG55Sx5o+Q5Lqk5Yig6Zmk6K6o6K6644CC5ZCO5LiA5oOF5b2i5LiN5YyF5ous55So5oi36aG144CB55So5oi36K6o6K666aG177yM5LiU5bqU5Zyo6aG16Z2i5pyA5ZCO5LiA5qyh57yW6L6RNuWwj+aXtuWQjuaPkOWHuuOAguiiq+WvvOWFpeeahOmhtemdou+8jOWvvOWFpeiAheinhuS4uuWOn+S9nOiAheOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAnZzZfcmF0aW9uYWxlJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfliKDpmaTljp/lm6DvvJonLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0sXG5cdFx0XHRoaWRlU3ViZ3JvdXBXaGVuU3lzb3A6IHRydWUsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c377ya5piO5pi+55qE5bm/5ZGK5a6j5LygJyxcblx0XHRcdHZhbHVlOiAnZzcnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+W6lOeUqOS6juaYjuaYvueahOW5v+WRiuWuo+S8oO+8jOaIluWPquacieebuOWFs+S6uueJqeOAgee7hOe7h+etieS6i+eJqeiBlOezu+aWueazle+8iOWMheaLrOS9huS4jemZkOS6jueUteivneOAgeWcsOWdgOOAgeeUteWtkOmCrueuseOAgeWNs+aXtumAmuiur+i9r+S7tuiBlOezu+aWueW8j++8iOWmglFR5Y+344CB5b6u5L+h5Y+377yJ44CB56S+5Lqk5aqS5L2T6ZO+5o6l77yJ44CC6Iul5a6j5Lyg6K+t5rCU5LiN5piO5pi+77yM5bu66K6u6L2s5Lqk5Yig6Zmk6K6o6K6644CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRzjvvJrmnKrliJfmmI7lj6/pnaDmnaXmupDkuJTor63osIPotJ/pnaLnmoTnlJ/ogIXkvKDorrAnLFxuXHRcdFx0dmFsdWU6ICdnOCcsXG5cdFx0XHR0b29sdGlwOiAn5pys5oOF5Ya15LiL5pyJ55qE6aG16Z2i5Lil6YeN5L6154qv5LuW5Lq65ZCN6KqJ5p2D77yM5pyJ5pe25Y+v6IO95L6154qv6ZqQ56eB5p2D77yM5Y+v6IO96ZyA6KaB5o+Q6K+355uR552j44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnRznvvJrlraTnq4vpobXpnaInLFxuXHRcdFx0dmFsdWU6ICdnOScsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5YyF5ous5Lul5LiL5Yeg56eN57G75Z6L77yaMS7msqHmnInlr7nlupTmlofku7bnmoTmlofku7bpobXpnaLvvJsyLuayoeacieWvueW6lOavjemhtemdoueahOWtkOmhtemdou+8iOeUqOaIt+mhteWtkOmhtemdoumZpOWklu+8ie+8mzMu5oyH5ZCR5LiN5a2Y5Zyo6aG16Z2i55qE6YeN5a6a5ZCR77ybNC7msqHmnInlr7nlupTlhoXlrrnpobXpnaLnmoTorqjorrrpobXvvIjorqjorrrpobXlrZjmoaPjgIHnlKjmiLforqjorrrpobXvvIzku6Xlj4rlnKjkuLvpobXpnaLmjILmnIl7e0NTRCBQbGFjZWhvbGRlcn195qih5p2/55qE6K6o6K666aG16Zmk5aSW77yJ77ybNS7kuI3lrZjlnKjms6jlhoznlKjmiLfnmoTnlKjmiLfpobXlj4rnlKjmiLfpobXlrZDpobXpnaLvvIjpmo/nlKjmiLfmm7TlkI3kuqfnlJ/nmoTnlKjmiLfpobXph43lrprlkJHpmaTlpJbvvInjgILor7flnKjliKDpmaTml7bms6jmhI/mnInml6DlsIblhoXlrrnnp7voh7Pku5blpITnmoTlv4XopoHjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LnJlZGlyZWN0TGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ1Ix77ya5LiN6IO95Y+R5oyl5a6e6ZmF5L2c55So55qE6YeN5a6a5ZCR44CCJyxcblx0XHRcdHZhbHVlOiAncjEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheWGte+8mjEu5oyH5ZCR5pys6Lqr5oiW5b6q546v55qE6YeN5a6a5ZCR77yM5aaCQeKGkkLihpJD4oaS4oCm4oCm4oaSQeaIlkHihpJB77yI57mB566A6YeN5a6a5ZCR5LiN6YCC55So5q2k6aG577yJ77ybMi7moLzlvI/plJnor6/nmoTph43lrprlkJHvvIzljIXmi6zmoIfpopjku4XkuLrnuYHkvZPjgIHnuYHnroDmt7fnlKjjgIHmtojmrafkuYnkvb/nlKjnmoTmi6zlvKfmiJbnqbrmoLzplJnor6/jgIHpl7TpmpTlj7fkvb/nlKjplJnor6/vvIjlm6DnsbvmjqjnroDljJblrZfmnKrmlLblvZXoh7PjgIrpgJrnlKjop4TojIPmsYnlrZfooajjgIvlr7zoh7TnmoTnuYHnroDmt7fmnYLmg4XlvaLvvIzmiJbns7vnu5/ml6Dms5Xoh6rliqjov5vooYznuYHnroDlpITnkIbnmoTmg4XlvaLvvIzliJnkuI3pgILnlKjvvInjgILoi6Xph43lrprlkJHpobXpnaLmoIfpopjvvIzkuI7lkIjkuY7lkb3lkI3luLjop4TnmoTnm67moIfpobXpnaLmoIfpopjkuYvpl7TvvIzku4XlrZjlnKjnuYHnroDlrZfkvZPnmoTljLrliKvvvIzogIzkuI3lrZjlnKjor43or63nlKjms5XljLrliKvvvIzliJnkuI3kv53nlZnor6Xph43lrprlkJHjgILlm6Dns7vnu5/ml6Dms5Xoh6rliqjnuYHnroDovazmjaLogIzlv4Xpobvkv53nlZnnmoTph43lrprlkJHpobXpnaLpmaTlpJbjgILlr7nkuo7lhbbku5bmnKrliJflh7rnmoTmg4XlhrXvvIzoi6XnlKjmiLforqTkuLror6Xph43lrprlkJHml6Dms5Xlj5HmjKXlrp7pmYXkvZznlKjvvIzkuJTkvp3mja7luLjor4bmsqHmnInku7vkvZXkuonorq7vvIzlj6/lh63lkIjnkIbnkIbnlLHmj5Dor7fpgJ/liKDvvIznlLHnrqHnkIblkZjliKTmlq3jgILmjIflkJHkuI3lrZjlnKjpobXpnaLnmoTph43lrprlkJHvvIzpgILnlKhHNeWHhuWImeOAgicsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAncjFfdHlwZScsXG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRsYWJlbDogJ+mAgueUqOexu+Wei++8micsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+ivt+mAieaLqScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+aMh+WQkeacrOi6q+aIluW+queOr+eahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+aMh+WQkeacrOi6q+aIluW+queOr+eahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+agh+mimOe5geeugOa3t+eUqCcsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+agh+mimOe5geeugOa3t+eUqOOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+a2iOatp+S5ieS9v+eUqOeahOaLrOWPt+aIluepuuagvOmUmeivrycsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+a2iOatp+S5ieS9v+eUqOeahOaLrOWPt+aIluepuuagvOmUmeivr+OAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+mXtOmalOWPt+S9v+eUqOmUmeivrycsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+mXtOmalOWPt+S9v+eUqOmUmeivr+OAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+WFtuS7lueQhueUse+8iOivt+WLvumAieS4iuaWueKAnOW6lOeUqOWkmuS4queQhueUseKAne+8jOW5tuWhq+WGmeiHquWumuS5ieeQhueUse+8iScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ1Iy77ya5ZCN56ew5LiO5a+85ZCR55uu5qCH5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJyxcblx0XHRcdHZhbHVlOiAncjInLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS9huS4jemZkOS6juS7peS4i+aDheWGte+8mjEu55Sx5Lu75L2V6Z2e5p2h55uu6aG16Z2i77yI6Zmk55So5oi36aG177yJ5a+85ZCR5p2h55uu6aG155qE6YeN5a6a5ZCR77yM5Lul5Y+K55Sx5p2h55uu6aG15a+85ZCR5Lu75L2V6Z2e5p2h55uu6aG16Z2i55qE6YeN5a6a5ZCR44CCMi7mmI7mmL7nrJTor6/nmoTph43lrprlkJHvvIzlpoLlh7rnjrDkuI3luLjop4HnmoTplJnliKvlrZfnrYnjgILvvIjliKvnp7Dph43lrprlkJHkuI3pgILnlKjmraTpobnjgILoi6XlkKvplJnliKvlrZfmiJbmnInnrJTor6/nmoTph43lrprlkJHkvb/nlKjpopHnjofpq5jvvIzmraTnsbvph43lrprlkJHmnInliqnkuo7luK7liqnnlKjmiLflr7vmib7liLDmraPnoa7nmoTpobXpnaLvvIzkuI3pgILnlKjmraTmoIflh4bjgILmnInkuonorq7nmoTmraTnsbvph43lrprlkJHlrpzmj5DkuqTliKDpmaTorqjorrrjgILvvIkzLuaYjuaYvuS4juWvvOWQkeebruagh+aJgOa2teeblueahOS4u+mimOaXoOWFs++8jOaIluavlOWvvOWQkeebruagh+aJgOa2teeblueahOS4u+mimOabtOW5v+azm+eahOmHjeWumuWQkeOAgu+8iOiLpeS4jeaYjuaYvu+8jOWPr+aUueS4uuaPkOS6pOWIoOmZpOiuqOiuuuOAgu+8iScsXG5cdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRuYW1lOiAncjJfdHlwZScsXG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRsYWJlbDogJ+mAgueUqOexu+Wei++8micsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+ivt+mAieaLqScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+eUsemdnuadoeebrumhtemdou+8iOmZpOeUqOaIt+mhte+8ieWvvOWQkeadoeebrumhteeahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+eUsemdnuadoeebrumhtemdou+8iOmZpOeUqOaIt+mhte+8ieWvvOWQkeadoeebrumhteeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+eUseadoeebrumhteWvvOWQkemdnuadoeebrumhtemdoueahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+eUseadoeebrumhteWvvOWQkeS7u+S9lemdnuadoeebrumhtemdoueahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+aYjuaYvueslOivr+eahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+aYjuaYvueslOivr+eahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+S4juWvvOWQkeebruagh+aXoOWFs+aIluavlOWFtuiMg+WbtOabtOW5v+azm+eahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ+S4juWvvOWQkeebruagh+aXoOWFs+aIluavlOWFtuiMg+WbtOabtOW5v+azm+eahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ+WFtuS7lueQhueUse+8iOivt+WLvumAieS4iuaWueKAnOW6lOeUqOWkmuS4queQhueUseKAne+8jOW5tuWhq+WGmeiHquWumuS5ieeQhueUse+8iScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0sXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkubm9ybWFsaXplSGFzaCA9IHtcblx0XHRyZWFzb246ICdkYicsXG5cdFx0bXVsdGlwbGU6ICdtdWx0aXBsZScsXG5cdFx0J211bHRpcGxlLWZpbmlzaCc6ICdtdWx0aXBsZS1maW5pc2gnLFxuXHRcdGcxOiAnZzEnLFxuXHRcdGcyOiAnZzInLFxuXHRcdGczOiAnZzMnLFxuXHRcdGc0OiAnZzQnLFxuXHRcdGc1OiAnZzUnLFxuXHRcdGc2OiAnZzYnLFxuXHRcdGc3OiAnZzcnLFxuXHRcdGc4OiAnZzgnLFxuXHRcdGc5OiAnZzknLFxuXHRcdGExOiAnYTEnLFxuXHRcdGEyOiAnYTInLFxuXHRcdGEzOiAnYTMnLFxuXHRcdHIxOiAncjEnLFxuXHRcdHIyOiAncjInLFxuXHRcdGYxOiAnZjEnLFxuXHRcdGYyOiAnZjInLFxuXHRcdGYzOiAnZjMnLFxuXHRcdGY0OiAnZjQnLFxuXHRcdGY1OiAnZjUnLFxuXHRcdG8xOiAnbzEnLFxuXHRcdG8yOiAnbzInLFxuXHRcdG8zOiAnbzMnLFxuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MgPSB7XG5cdFx0Z2V0VGVtcGxhdGVDb2RlQW5kUGFyYW1zOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRsZXQgY29kZTtcblx0XHRcdGxldCBwYXJhbWV0ZXJzO1xuXHRcdFx0bGV0IGk7XG5cdFx0XHRpZiAocGFyYW1zLm5vcm1hbGl6ZWRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0Y29kZSA9ICd7e2RlbGV0ZSc7XG5cdFx0XHRcdHBhcmFtcy51dHBhcmFtcyA9IHt9O1xuXHRcdFx0XHRmb3IgKGNvbnN0IFtpbmRleCwgbm9ybV0gb2YgcGFyYW1zLm5vcm1hbGl6ZWRzLmVudHJpZXMoKSkge1xuXHRcdFx0XHRcdGlmIChub3JtICE9PSAnZGInKSB7XG5cdFx0XHRcdFx0XHRjb2RlICs9IGB8JHtub3JtLnRvVXBwZXJDYXNlKCl9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cGFyYW1ldGVycyA9IHBhcmFtcy50ZW1wbGF0ZVBhcmFtc1tpbmRleF0gfHwgW107XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpXyBpbiBwYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtZXRlcnNbaV9dID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRjb2RlICs9IGB8JHtwYXJhbWV0ZXJzW2lfXX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwYXJhbXMudXRwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHQuLi5wYXJhbXMudXRwYXJhbXMsXG5cdFx0XHRcdFx0XHQuLi5Ud2lua2xlLnNwZWVkeS5nZXRVc2VyVGFsa1BhcmFtZXRlcnMobm9ybSwgcGFyYW1ldGVycyksXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb2RlICs9ICd9fSc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwYXJhbWV0ZXJzID0gcGFyYW1zLnRlbXBsYXRlUGFyYW1zWzBdIHx8IFtdO1xuXHRcdFx0XHRjb2RlID0gJ3t7ZGVsZXRlJztcblx0XHRcdFx0aWYgKHBhcmFtcy52YWx1ZXNbMF0gIT09ICdyZWFzb24nKSB7XG5cdFx0XHRcdFx0Y29kZSArPSBgfCR7cGFyYW1zLnZhbHVlc1swXX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoaSBpbiBwYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbWV0ZXJzW2ldID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0Y29kZSArPSBgfCR7cGFyYW1ldGVyc1tpXX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjb2RlICs9ICd9fSc7XG5cdFx0XHRcdHBhcmFtcy51dHBhcmFtcyA9IFR3aW5rbGUuc3BlZWR5LmdldFVzZXJUYWxrUGFyYW1ldGVycyhwYXJhbXMubm9ybWFsaXplZHNbMF0sIHBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFtjb2RlLCBwYXJhbXMudXRwYXJhbXNdO1xuXHRcdH0sXG5cdFx0cGFyc2VXaWtpdGV4dDogKHRpdGxlLCB3aWtpdGV4dCwgY2FsbGJhY2spID0+IHtcblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwYXJzZScsXG5cdFx0XHRcdHByb3A6ICd0ZXh0Jyxcblx0XHRcdFx0cHN0OiAndHJ1ZScsXG5cdFx0XHRcdHRleHQ6IHdpa2l0ZXh0LFxuXHRcdFx0XHRjb250ZW50bW9kZWw6ICd3aWtpdGV4dCcsXG5cdFx0XHRcdHRpdGxlLFxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IHN0YXR1c0luZGljYXRvciA9IG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfmnoTpgKDliKDpmaTnkIbnlLEnLCAn5qeL6YCg5Yiq6Zmk55CG55SxJykpO1xuXHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ino+aekOWIoOmZpOaooeadvycsICfop6PmnpDliKrpmaTmqKHmnb8nKSxcblx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdChhcGlPYmopID0+IHtcblx0XHRcdFx0XHRjb25zdCByZWFzb24gPSBkZWNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRcdFx0XHQkKGFwaU9iai5nZXRYTUwoKS5xdWVyeVNlbGVjdG9yKCd0ZXh0JykuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpXG5cdFx0XHRcdFx0XHRcdC5maW5kKCcjZGVsZXRlLXJlYXNvbicpXG5cdFx0XHRcdFx0XHRcdC50ZXh0KClcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL1xcKy9nLCAnICcpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAocmVhc29uKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN0YXR1c0luZGljYXRvci53YXJuKHdpbmRvdy53Z1VMUygn5pyq6IO95LuO5Yig6Zmk5qih5p2/55Sf5oiQ5Yig6Zmk55CG55SxJywgJ+acquiDveW+nuWIqumZpOaooeadv+eUn+aIkOWIqumZpOeQhueUsScpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FsbGJhY2socmVhc29uKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yXG5cdFx0XHQpO1xuXHRcdFx0YXBpLnBvc3QoKTtcblx0XHR9LFxuXHRcdHN5c29wOiB7XG5cdFx0XHRtYWluOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdGxldCByZWFzb247XG5cdFx0XHRcdGlmICghcGFyYW1zLm5vcm1hbGl6ZWRzLmxlbmd0aCAmJiBwYXJhbXMubm9ybWFsaXplZHNbMF0gPT09ICdkYicpIHtcblx0XHRcdFx0XHRyZWFzb24gPSBwcm9tcHQod2luZG93LndnVUxTKCfovpPlhaXliKDpmaTnkIbnlLHvvJonLCAn6Ly45YWl5Yiq6Zmk55CG55Sx77yaJyksICcnKTtcblx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUGFnZShyZWFzb24sIHBhcmFtcyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgW2NvZGVdID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLmdldFRlbXBsYXRlQ29kZUFuZFBhcmFtcyhwYXJhbXMpO1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5wYXJzZVdpa2l0ZXh0KG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwgY29kZSwgKGRlbGV0ZVJlYXNvbikgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5wcm9tcHRGb3JTdW1tYXJ5KSB7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZVJlYXNvbiA9IHByb21wdChcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6L6T5YWl5Yig6Zmk55CG55Sx77yM5oiW5Y2V5Ye756Gu5a6a5Lul5o6l5Y+X6Ieq5Yqo55Sf5oiQ55qE77yaJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfovLjlhaXliKrpmaTnkIbnlLHvvIzmiJbpu57mk4rnorrlrprku6XmjqXlj5foh6rli5XnlJ/miJDnmoTvvJonXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRkZWxldGVSZWFzb25cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5kZWxldGVQYWdlKGRlbGV0ZVJlYXNvbiwgcGFyYW1zKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVBhZ2U6IChyZWFzb24sIHBhcmFtcykgPT4ge1xuXHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk6aG16Z2iJywgJ+WIqumZpOmggemdoicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChyZWFzb24gPT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gTW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor6Lpl67nkIbnlLEnLCAn6Kmi5ZWP55CG55SxJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIXJlYXNvbiB8fCAhcmVhc29uLnRyaW0oKSkge1xuXHRcdFx0XHRcdHJldHVybiBNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivoumXrueQhueUsScsICfoqaLllY/nkIbnlLEnKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L2g5LiN57uZ5oiR55CG55Sx4oCm5oiR5bCx4oCm5LiN566h5LqG4oCmJywgJ+S9oOS4jee1puaIkeeQhueUseKApuaIkeWwseKApuS4jeeuoeS6huKApicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBkZWxldGVNYWluID0gKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldEVkaXRTdW1tYXJ5KHJlYXNvbik7XG5cdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldFdhdGNobGlzdChwYXJhbXMud2F0Y2gpO1xuXHRcdFx0XHRcdHRoaXNwYWdlLmRlbGV0ZVBhZ2UoKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVRhbGsocGFyYW1zKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdFx0Ly8gbG9vayB1cCBpbml0aWFsIGNvbnRyaWJ1dG9yLiBJZiBwcm9tcHRpbmcgdXNlciBmb3IgZGVsZXRpb24gcmVhc29uLCBqdXN0IGRpc3BsYXkgYSBsaW5rLlxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugb3BlbiB0aGUgdGFsayBwYWdlIGRpcmVjdGx5XG5cdFx0XHRcdGlmIChwYXJhbXMub3BlblVzZXJUYWxrKSB7XG5cdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdFx0dGhpc3BhZ2UubG9va3VwQ3JlYXRpb24oKCkgPT4ge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLm9wZW5Vc2VyVGFsa1BhZ2UodGhpc3BhZ2UpO1xuXHRcdFx0XHRcdFx0ZGVsZXRlTWFpbigpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlbGV0ZU1haW4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVRhbGs6IChwYXJhbXMpID0+IHtcblx0XHRcdFx0Ly8gZGVsZXRlIHRhbGsgcGFnZVxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cGFyYW1zLmRlbGV0ZVRhbGtQYWdlICYmXG5cdFx0XHRcdFx0cGFyYW1zLm5vcm1hbGl6ZWQgIT09ICdvMScgJiZcblx0XHRcdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NhLXRhbGsnKS5jbGFzc0xpc3QuY29udGFpbnMoJ25ldycpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IHRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdGAke1xuXHRcdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVttdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICsgMV1cblx0XHRcdFx0XHRcdH06JHttdy5jb25maWcuZ2V0KCd3Z1RpdGxlJyl9YCxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk6K6o6K666aG1JywgJ+WIqumZpOiojuirlumggScpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRcdGBbW0xJQjpDU0QjRzl8RzldXTog5a2k56uL6aG16Z2i77ya5bey5Yig6Zmk6aG16Z2i4oCcJHtNb3JlYml0cy5wYWdlTmFtZU5vcm194oCd55qE6K6o6K666aG1YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdHRhbGtwYWdlLmRlbGV0ZVBhZ2UoKTtcblx0XHRcdFx0XHQvLyB0aGlzIGlzIHVnbHksIGJ1dCBiZWNhdXNlIG9mIHRoZSBhcmNoaXRlY3R1cmUgb2Ygd2lraS5hcGksIGl0IGlzIG5lZWRlZFxuXHRcdFx0XHRcdC8vIChvdGhlcndpc2Ugc3VjY2Vzcy9mYWlsdXJlIG1lc3NhZ2VzIGZvciB0aGUgcHJldmlvdXMgYWN0aW9uIHdvdWxkIGJlIHN1cHByZXNzZWQpXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUmVkaXJlY3RzKHBhcmFtcyk7XG5cdFx0XHRcdFx0fSwgMTgwMCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVJlZGlyZWN0cyhwYXJhbXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZXRlUmVkaXJlY3RzOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdC8vIGRlbGV0ZSByZWRpcmVjdHNcblx0XHRcdFx0aWYgKHBhcmFtcy5kZWxldGVSZWRpcmVjdHMpIHtcblx0XHRcdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0cHJvcDogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRyZGxpbWl0OiA1MDAwLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6YeN5a6a5ZCR5YiX6KGo4oCmJywgJ+WPluW+l+mHjeaWsOWwjuWQkeWIl+ihqOKApicpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUmVkaXJlY3RzTWFpbixcblx0XHRcdFx0XHRcdG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEnLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRJykpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHByb21wdCBmb3IgcHJvdGVjdCBvbiBHN1xuXHRcdFx0XHRsZXQgJGxpbms7XG5cdFx0XHRcdGxldCAkYmlndGV4dDtcblx0XHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkID09PSAnZzcnKSB7XG5cdFx0XHRcdFx0JGxpbmsgPSAkKCc8YT4nKVxuXHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnIycpXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WNleWHu+i/memHjOaWveihjOS/neaKpCcsICfpu57mk4rpgJnoo6Hmlr3ooYzkv53orbcnKSlcblx0XHRcdFx0XHRcdC5jc3Moe1xuXHRcdFx0XHRcdFx0XHQnZm9udC1zaXplJzogJzEyNSUnLFxuXHRcdFx0XHRcdFx0XHQnZm9udC13ZWlnaHQnOiAnYm9sZCcsXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0Lm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLnNldCgnd2dBcnRpY2xlSWQnLCAwKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrKCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkYmlndGV4dCA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn55m957q45L+d5oqk6K+l6aG1JywgJ+eZvee0meS/neitt+ipsumggScpKTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHByb21vdGUgVW5saW5rIHRvb2xcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0XHQkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICcjJylcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y2V5Ye76L+Z6YeM5YmN5b6A5Y+W5raI6ZO+5YWl5bel5YW3JywgJ+m7nuaTiumAmeijoeWJjeW+gOWPlua2iOmAo+WFpeW3peWFtycpKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnVubGluay5jYWxsYmFjayhcblx0XHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOaWh+S7tiAnLCAn5Y+W5raI5bCN5bey5Yiq6Zmk5qqU5qGIICcpICsgTW9yZWJpdHMucGFnZU5hbWVOb3JtfSDnmoTkvb/nlKhgXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkYmlndGV4dCA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y+W5raI5a+55bey5Yig6Zmk5paH5Lu255qE5L2/55SoJywgJ+WPlua2iOWwjeW3suWIqumZpOaqlOahiOeahOS9v+eUqCcpKTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJyMnKVxuXHRcdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vov5nph4zliY3lvoDlj5bmtojpk77lhaXlt6XlhbcnLCAn6bue5pOK6YCZ6KOh5YmN5b6A5Y+W5raI6YCj5YWl5bel5YW3JykpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUudW5saW5rLmNhbGxiYWNrKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Y+W5raI5a+55bey5Yig6Zmk6aG16Z2iICcsICflj5bmtojlsI3lt7LliKrpmaTpoIHpnaIgJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtICtcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOeahOmTvuaOpScsICcg55qE6YCj57WQJylcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdCRiaWd0ZXh0ID0gJCgnPHNwYW4+JykudGV4dCh3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOmhtemdoueahOmTvuaOpScsICflj5bmtojlsI3lt7LliKrpmaTpoIHpnaLnmoTpgKPntZAnKSkuY3NzKHtcblx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHQuYXR0cignaHJlZicsIG13LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOlJhbmRvbUluQ2F0ZWdvcnkv5b+r6YCf5Yig6Zmk5YCZ6YCJJykpXG5cdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vliY3lvoDkuIvkuIDkuKrlv6vpgJ/liKDpmaTlgJnpgIknLCAn6bue5pOK5YmN5b6A5LiL5LiA5YCL5b+r6YCf5Yiq6Zmk5YCZ6YG4JykpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygn5bel5YW3JywgJGxpbmtbMF0pO1xuXHRcdFx0fSxcblx0XHRcdG9wZW5Vc2VyVGFsa1BhZ2U6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpLnVubGluaygpOyAvLyBkb24ndCBuZWVkIGl0IGFueW1vcmVcblx0XHRcdFx0Y29uc3QgdXNlciA9IHBhZ2VvYmouZ2V0Q3JlYXRvcigpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdlZGl0Jyxcblx0XHRcdFx0XHRwcmV2aWV3OiAneWVzJyxcblx0XHRcdFx0XHR2YW5hcnRpY2xlOiBNb3JlYml0cy5wYWdlTmFtZU5vcm0sXG5cdFx0XHRcdH07XG5cdFx0XHRcdGNvbnN0IHRpdGxlID0gYFVzZXIgdGFsazoke3VzZXJ9YDtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy5ub3JtYWxpemVkID09PSAnZGInIHx8XG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnknKS5pbmNsdWRlcyhwYXJhbXMubm9ybWFsaXplZClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Ly8gcHJvdmlkZSBhIGxpbmsgdG8gdGhlIHVzZXIgdGFsayBwYWdlXG5cdFx0XHRcdFx0Y29uc3QgJGxpbmsgPSAkKCc8YT4nKVxuXHRcdFx0XHRcdFx0LmF0dHIoe1xuXHRcdFx0XHRcdFx0XHRocmVmOiBtdy51dGlsLmdldFVybCh0aXRsZSwgcXVlcnkpLFxuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRyZWw6ICdub29wZW5lciBub3JlZmVycmVyJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn54K55q2k5omT5byAVXNlciB0YWxrOicsICfpu57mraTmiZPplotVc2VyIHRhbGs6JykgKyB1c2VyKTtcblx0XHRcdFx0XHRjb25zdCAkYmlndGV4dCA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICFJywgJ+mAmuefpemggemdouW7uueri+iAhScpKTtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygkYmlndGV4dFswXSwgJGxpbmtbMF0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIG9wZW4gdGhlIGluaXRpYWwgY29udHJpYnV0b3IncyB0YWxrIHBhZ2Vcblx0XHRcdFx0XHRjb25zdCBzdGF0dXNJbmRpY2F0b3IgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmiZPlvIDnlKjmiLcnLCAn5omT6ZaL5L2/55So6ICFJykgK1xuXHRcdFx0XHRcdFx0XHR1c2VyICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnmoTorqjorrrpobXnvJbovpHnqpflj6MnLCAn55qE6KiO6KuW6aCB57eo6Lyv6KaW56qXJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aJk+W8gOS4reKApicsICfmiZPplovkuK3igKYnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c3dpdGNoIChUd2lua2xlLmdldFByZWYoJ3VzZXJUYWxrUGFnZU1vZGUnKSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAndGFiJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4obXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnYmxhbmsnOlxuXHRcdFx0XHRcdFx0XHR3aW5kb3cub3Blbihcblx0XHRcdFx0XHRcdFx0XHRtdy51dGlsLmdldFVybCh0aXRsZSwgcXVlcnkpLFxuXHRcdFx0XHRcdFx0XHRcdCdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRcdCdub29wZW5lcixub3JlZmVycmVyLGxvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHQvKiBjYXNlICd3aW5kb3cnOiAqL1xuXHRcdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93JyA/ICdfYmxhbmsnIDogJ3R3aW5rbGV3YXJud2luZG93Jyxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93J1xuXHRcdFx0XHRcdFx0XHRcdFx0PyAnbm9vcGVuZXIsbm9yZWZlcnJlciwnXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICcnICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbG9jYXRpb249bm8sdG9vbGJhcj1ubyxzdGF0dXM9bm8sZGlyZWN0b3JpZXM9bm8sc2Nyb2xsYmFycz15ZXMsd2lkdGg9MTIwMCxoZWlnaHQ9ODAwJ1xuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZXRlUmVkaXJlY3RzTWFpbjogKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxEb2MgPSBhcGlvYmouZ2V0WE1MKCk7XG5cdFx0XHRcdGNvbnN0ICRzbmFwc2hvdCA9ICQoeG1sRG9jKS5maW5kKCdyZWRpcmVjdHMgcmQnKTtcblx0XHRcdFx0Y29uc3QgdG90YWwgPSAkc25hcHNob3QubGVuZ3RoO1xuXHRcdFx0XHRjb25zdCBzdGF0dXNJbmRpY2F0b3IgPSBhcGlvYmouc3RhdGVsZW07XG5cdFx0XHRcdGlmICghdG90YWwpIHtcblx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IuaW5mbyh3aW5kb3cud2dVTFMoJ+acquWPkeeOsOmHjeWumuWQkScsICfmnKrnmbznj77ph43mlrDlsI7lkJEnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0YXR1c0luZGljYXRvci5zdGF0dXMoJzAlJyk7XG5cdFx0XHRcdGxldCBjdXJyZW50ID0gMDtcblx0XHRcdFx0Y29uc3Qgb25zdWNjZXNzID0gKGFwaW9iaklubmVyKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgbm93ID0gYCR7TnVtYmVyLnBhcnNlSW50KCgxMDAgKiArK2N1cnJlbnQpIC8gdG90YWwsIDEwKX0lYDtcblx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IudXBkYXRlKG5vdyk7XG5cdFx0XHRcdFx0YXBpb2JqSW5uZXIuc3RhdGVsZW0udW5saW5rKCk7XG5cdFx0XHRcdFx0aWYgKGN1cnJlbnQgPj0gdG90YWwpIHtcblx0XHRcdFx0XHRcdHN0YXR1c0luZGljYXRvci5pbmZvKGAke25vd33vvIjlrozmiJDvvIlgKTtcblx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0XHRcdCRzbmFwc2hvdC5lYWNoKChfa2V5LCB2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJCh2YWx1ZSkuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCBwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdHRpdGxlLFxuXHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEgXCInLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRIFwiJykgKyB0aXRsZX1cImBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkoYFtbTElCOkNTRCNHOXxHOV1dOiDlraTnq4vpobXpnaLvvJrph43lrprlkJHliLDlt7LliKDpmaTpobXpnaLigJwke01vcmViaXRzLnBhZ2VOYW1lTm9ybX3igJ1gKTtcblx0XHRcdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRwYWdlLmRlbGV0ZVBhZ2Uob25zdWNjZXNzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0dXNlcjoge1xuXHRcdFx0bWFpbjogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKDpmaQnLCAn6aCB6Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yiq6ZmkJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0c3RhdGVsZW0uc3RhdHVzKHdpbmRvdy53Z1VMUygn5qOA5p+l6aG16Z2i5bey5pyJ5qCH6K6w4oCmJywgJ+aqouafpemggemdouW3suacieaomeiomOKApicpKTtcblx0XHRcdFx0Ly8gY2hlY2sgZm9yIGV4aXN0aW5nIGRlbGV0aW9uIHRhZ3Ncblx0XHRcdFx0Y29uc3QgdGV4dE5vU2QgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZXxkZWxldGViZWNhdXNlfHNwZWVkeXxjc2R86YCf5YiqfOmAn+WIoHzlv6vliKB85b+r5YiqKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb1NkICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDlv6vpgJ/liKDpmaTmqKHmnb/vvIzopoHnp7vpmaTlubbliqDlhaXmlrDnmoTlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK5om+5Yiw5b+r6YCf5Yiq6Zmk5qih5p2/77yM6KaB56e76Zmk5Lim5Yqg5YWl5paw55qE5ZeO77yfJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmqKHmnb/lt7Looqvnva7kuo7pobXpnaLkuK3jgIInLCAn5b+r6YCf5Yiq6Zmk5qih5p2/5bey6KKr572u5pa86aCB6Z2i5Lit44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0ZXh0ID0gdGV4dE5vU2Q7XG5cdFx0XHRcdGNvbnN0IGNvcHl2aW8gPSAvKD86XFx7XFx7XFxzKihjb3B5dmlvfOS+teadg3zkvrXmrIopW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y29weXZpbyAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6JGX5L2c5p2D6aqM6K+B5qih5p2/5bey6KKr572u5LqO6aG16Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz5Yqg5YWl5LiA5Liq5b+r6YCf5Yig6Zmk5qih5p2/77yfJyxcblx0XHRcdFx0XHRcdFx0J+iRl+S9nOasiumpl+itieaooeadv+W3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5Lit5bey5pyJ6JGX5L2c5p2D6aqM6K+B5qih5p2/44CCJywgJ+mggemdouS4reW3suacieiRl+S9nOasiumpl+itieaooeadv+OAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7PliqDlhaXkuIDkuKrlv6vpgJ/liKDpmaTmqKHmnb/vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBnaXZlbiB0aGUgcGFyYW1zLCBidWlsZHMgdGhlIHRlbXBsYXRlIGFuZCBhbHNvIGFkZHMgdGhlIHVzZXIgdGFsayBwYWdlIHBhcmFtZXRlcnMgdG8gdGhlIHBhcmFtcyB0aGF0IHdlcmUgcGFzc2VkIGluXG5cdFx0XHRcdC8vIHJldHVybnMgPT4gWzxzdHJpbmc+IHdpa2l0ZXh0LCA8b2JqZWN0PiB1dHBhcmFtc11cblx0XHRcdFx0Y29uc3QgYnVpbGREYXRhID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLmdldFRlbXBsYXRlQ29kZUFuZFBhcmFtcyhwYXJhbXMpO1xuXHRcdFx0XHRsZXQgW2NvZGVdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRbLCBwYXJhbXMudXRwYXJhbXNdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpKTtcblx0XHRcdFx0Ly8gcGF0cm9sIHRoZSBwYWdlLCBpZiByZWFjaGVkIGZyb20gU3BlY2lhbDpOZXdQYWdlc1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZCcpKSB7XG5cdFx0XHRcdFx0dGhpc3BhZ2UucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gV3JhcCBTRCB0ZW1wbGF0ZSBpbiBub2luY2x1ZGUgdGFncyBpZiB3ZSBhcmUgaW4gdGVtcGxhdGUgc3BhY2UuXG5cdFx0XHRcdC8vIFdvbid0IHdvcmsgd2l0aCB1c2VyYm94ZXMgaW4gdXNlcnNwYWNlLCBvciBhbnkgb3RoZXIgdHJhbnNjbHVkZWQgcGFnZSBvdXRzaWRlIHRlbXBsYXRlIHNwYWNlXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCkge1xuXHRcdFx0XHRcdC8vIFRlbXBsYXRlOlxuXHRcdFx0XHRcdGNvZGUgPSBgPG5vaW5jbHVkZT4ke2NvZGV9PC9ub2luY2x1ZGU+YDtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBSZW1vdmUgdGFncyB0aGF0IGJlY29tZSBzdXBlcmZsdW91cyB3aXRoIHRoaXMgYWN0aW9uXG5cdFx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooW05uXWV3IHVucmV2aWV3ZWQgYXJ0aWNsZXxbVXVdbnJldmlld2VkfFtVdV1zZXJzcGFjZSBkcmFmdClcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2csXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgXCJtb3ZlIHRvIENvbW1vbnNcIiB0YWcgLSBkZWxldGlvbi10YWdnZWQgZmlsZXMgY2Fubm90IGJlIG1vdmVkIHRvIENvbW1vbnNcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyhtdGN8KGNvcHkgfG1vdmUgKT90byA/KHNoYXJlfGNvbW1vbnMpfG1vdmUgdG8gKHlzYXJjaGl2ZXMgc2hhcmV8d2lraW1lZGlhIGNvbW1vbnMpfGNvcHkgdG8gKHlzYXJjaGl2ZXMgc2hhcmV8d2lraW1lZGlhIGNvbW1vbnMpKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHRcdFx0Jydcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMucmVxdWVzdHNhbHQpIHtcblx0XHRcdFx0XHRjb2RlID0gYHt7c2FsdH19XFxuJHtjb2RlfWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gR2VuZXJhdGUgZWRpdCBzdW1tYXJ5IGZvciBlZGl0XG5cdFx0XHRcdGxldCBlZGl0c3VtbWFyeTtcblx0XHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpO+8iCcsICfoq4vmsYLlv6vpgJ/liKrpmaTvvIgnKTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IG5vcm0gb2YgcGFyYW1zLm5vcm1hbGl6ZWRzKSB7XG5cdFx0XHRcdFx0XHRpZiAobm9ybSAhPT0gJ2RiJykge1xuXHRcdFx0XHRcdFx0XHRlZGl0c3VtbWFyeSArPSBgW1tMSUI6Q1NEIyR7bm9ybS50b1VwcGVyQ2FzZSgpfXxDU0QgJHtub3JtLnRvVXBwZXJDYXNlKCl9XV3jgIFgO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlZGl0c3VtbWFyeSA9IGVkaXRzdW1tYXJ5LnNsaWNlKDAsIE1hdGgubWF4KDAsIGVkaXRzdW1tYXJ5Lmxlbmd0aCAtIDEpKTsgLy8gcmVtb3ZlIHRyYWlsaW5nIGNvbW1hXG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPVxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fmsYJbW0xJQjpDU0R85b+r6YCf5Yig6ZmkXV3vvJonLCAn6KuL5rGCW1tMSUI6Q1NEfOW/q+mAn+WIqumZpF1d77yaJykgK1xuXHRcdFx0XHRcdFx0cGFyYW1zLnRlbXBsYXRlUGFyYW1zWzBdWycxJ107XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPSBgJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6K+35rGC5b+r6YCf5Yig6ZmkJyxcblx0XHRcdFx0XHRcdCfoq4vmsYLlv6vpgJ/liKrpmaQnXG5cdFx0XHRcdFx0KX3vvIhbW0xJQjpDU0QjJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWRzWzBdLnRvVXBwZXJDYXNlKCl9XV3vvIlgO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEJsYW5rIGF0dGFjayBwYWdlc1xuXHRcdFx0XHRpZiAocGFyYW1zLmJsYW5rKSB7XG5cdFx0XHRcdFx0dGV4dCA9IGNvZGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZSh0ZXh0KTtcblx0XHRcdFx0XHR0ZXh0ID0geXNhcmNoaXZlc19wYWdlLmluc2VydEFmdGVyVGVtcGxhdGVzKGAke2NvZGV9XFxuYCwgVHdpbmtsZS5oYXRub3RlUmVnZXgpLmdldFRleHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGVkaXRzdW1tYXJ5KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KHBhcmFtcy53YXRjaCk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci50YWdDb21wbGV0ZSk7XG5cdFx0XHR9LFxuXHRcdFx0dGFnQ29tcGxldGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0XHRpZiAocGFyYW1zLnVzZXJ0YWxrKSB7XG5cdFx0XHRcdFx0Y29uc3QgY2FsbGJhY2sgPSAocGFnZU9iaikgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGluaXRpYWxDb250cmliID0gcGFnZU9iai5nZXRDcmVhdG9yKCk7XG5cdFx0XHRcdFx0XHQvLyBkaXNhbGxvdyB3YXJuaW5nIHlvdXJzZWxmXG5cdFx0XHRcdFx0XHRpZiAoaW5pdGlhbENvbnRyaWIgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSkge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHRg5oKo77yIJHtpbml0aWFsQ29udHJpYn0ke3dpbmRvdy53Z1VMUygn77yJ5Yib5bu65LqG6K+l6aG177yM6Lez6L+H6YCa55+lJywgJ++8ieW7uueri+S6huipsumgge+8jOi3s+mBjumAmuefpScpfWBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0aW5pdGlhbENvbnRyaWIgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHQvLyBkb24ndCBub3RpZnkgdXNlcnMgd2hlbiB0aGVpciB1c2VyIHRhbGsgcGFnZSBpcyBub21pbmF0ZWRcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID09PSBtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykgJiZcblx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gM1xuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpobXpnaLliJvlu7rogIXvvJrnlKjmiLfliJvlu7rkuoboh6rlt7HnmoTorqjorrrpobUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+mAmuefpemggemdouW7uueri+iAhe+8muS9v+eUqOiAheW7uueri+S6huiHquW3seeahOiojuirlumggSdcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Ly8gcXVpY2sgaGFjayB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSB1bndhbnRlZCBub3RpZmljYXRpb25zLiBTaG91bGQgYWN0dWFsbHkgYmUgY29uZmlndXJhYmxlIG9uIHJlY2lwaWVudCBwYWdlLi4uXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGluaXRpYWxDb250cmliID09PSAnQTIwOTMwNjQtYm90JyAmJiBwYXJhbXMubm9ybWFsaXplZHNbMF0gPT09ICdnMTUnKSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpobXpnaLliJvlu7rogIXvvJrnlLHmnLrlmajkurrliJvlu7rvvIzot7Pov4fpgJrnn6UnLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+mAmuefpemggemdouW7uueri+iAhe+8mueUseapn+WZqOS6uuW7uueri++8jOi3s+mBjumAmuefpSdcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID0gbnVsbDtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtpbml0aWFsQ29udHJpYn1gO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIGluaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0bGV0IG5vdGlmeXRleHQ7XG5cdFx0XHRcdFx0XHRcdG5vdGlmeXRleHQgPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYGRiLW5vdGljZXx0YXJnZXQ9JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19YCk7XG5cdFx0XHRcdFx0XHRcdG5vdGlmeXRleHQgKz0gXCJ8bm93ZWxjb21lPXllcyd9fS0tfn5cIi5jb25jYXQoJ35+Jyk7XG5cdFx0XHRcdFx0XHRcdGxldCBlZGl0c3VtbWFyeSA9ICfpgJrnn6XvvJonO1xuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm5vcm1hbGl6ZWRzLmluY2x1ZGVzKCdnMycpKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ+S4gOaUu+WHu+aAp+mhtemdoic7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gbm8gYXJ0aWNsZSBuYW1lIGluIHN1bW1hcnkgZm9yIEcxMCBkZWxldGlvbnNcblx0XHRcdFx0XHRcdFx0XHRlZGl0c3VtbWFyeSArPSBg6aG16Z2iW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ+W/q+mAn+WIoOmZpOaPkOWQjSc7XG5cdFx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KG5vdGlmeXRleHQpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoZWRpdHN1bW1hcnkpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5hZGRUb0xvZyhwYXJhbXMsIGluaXRpYWxDb250cmliKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGNvbnN0IHRoaXNwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShNb3JlYml0cy5wYWdlTmFtZU5vcm0pO1xuXHRcdFx0XHRcdHRoaXNwYWdlLmxvb2t1cENyZWF0aW9uKGNhbGxiYWNrKTtcblx0XHRcdFx0XHQvLyBvciwgaWYgbm90IG5vdGlmeWluZywgYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2cgd2l0aG91dCB0aGUgaW5pdGlhbCBjb250cmlidXRvcidzIG5hbWVcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy51c2VyLmFkZFRvTG9nKHBhcmFtcywgbnVsbCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQvLyBub3RlOiB0aGlzIGNvZGUgaXMgYWxzbyBpbnZva2VkIGZyb20gdHdpbmtsZWltYWdlXG5cdFx0XHQvLyB0aGUgcGFyYW1zIHVzZWQgYXJlOlxuXHRcdFx0Ly8gICBmb3IgQ1NEOiBwYXJhbXMudmFsdWVzLCBwYXJhbXMubm9ybWFsaXplZHMgIChub3RlOiBub3JtYWxpemVkcyBpcyBhbiBhcnJheSlcblx0XHRcdC8vICAgZm9yIERJOiBwYXJhbXMuZnJvbURJID0gdHJ1ZSwgcGFyYW1zLnRlbXBsYXRlbmFtZSwgcGFyYW1zLm5vcm1hbGl6ZWQgIChub3RlOiBub3JtYWxpemVkIGlzIGEgc3RyaW5nKVxuXHRcdFx0YWRkVG9Mb2c6IChwYXJhbXMsIGluaXRpYWxDb250cmliKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHVzbCA9IG5ldyBNb3JlYml0cy51c2Vyc3BhY2VMb2dnZXIoVHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlMb2dQYWdlTmFtZScpKTtcblx0XHRcdFx0dXNsLmluaXRpYWxUZXh0ID0gYOi/meaYr+ivpeeUqOaIt+S9v+eUqFtbSDpUV3xUd2lua2xlXV3nmoTpgJ/liKDmqKHlnZflgZrlh7rnmoRbW0xJQjpDU0R85b+r6YCf5Yig6ZmkXV3mj5DlkI3liJfooajjgIJcXG5cXG7oi6XmgqjkuI3lho3mg7Pkv53nlZnmraTml6Xlv5fvvIzor7flnKhbWyR7VHdpbmtsZS5nZXRQcmVmKFxuXHRcdFx0XHRcdCdjb25maWdQYWdlJ1xuXHRcdFx0XHQpfXzlj4LmlbDorr7nva5dXeS4reWFs+aOie+8jOW5tuS9v+eUqFtbTElCOkNTRCNPMXxDU0QgTzFdXeaPkOS6pOW/q+mAn+WIoOmZpOOAgiR7XG5cdFx0XHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgPyAnXFxuXFxu5q2k5pel5b+X5bm25LiN6K6w5b2V55SoVHdpbmtsZeebtOaOpeaJp+ihjOeahOWIoOmZpOOAgicgOiAnJ1xuXHRcdFx0XHR9YDtcblx0XHRcdFx0bGV0IGFwcGVuZFRleHQgPSBgIyBbWzoke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXe+8mmA7XG5cdFx0XHRcdGlmIChwYXJhbXMuZnJvbURJKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSBg5Zu+54mIW1tMSUI6Q1NEIyR7cGFyYW1zLm5vcm1hbGl6ZWQudG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWQudG9VcHBlckNhc2UoKX1dXe+8iHt7dGx8JHtcblx0XHRcdFx0XHRcdHBhcmFtcy50ZW1wbGF0ZW5hbWVcblx0XHRcdFx0XHR9fX3vvIlgO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSAn5aSa5Liq55CG55Sx77yIJztcblx0XHRcdFx0XHRmb3IgKGNvbnN0IG5vcm0gb2YgcGFyYW1zLm5vcm1hbGl6ZWRzKSB7XG5cdFx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGBbW0xJQjpDU0QjJHtub3JtLnRvVXBwZXJDYXNlKCl9fCR7bm9ybS50b1VwcGVyQ2FzZSgpfV1d44CBYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCA9IGFwcGVuZFRleHQuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYXBwZW5kVGV4dC5sZW5ndGggLSAxKSk7IC8vIHJlbW92ZSB0cmFpbGluZyBjb21tYVxuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSAn6Ieq5a6a5LmJ55CG55SxJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGBbW0xJQjpDU0QjJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWRzWzBdLnRvVXBwZXJDYXNlKCl9XV1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMucmVxdWVzdHNhbHQpIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IHdpbmRvdy53Z1VMUygn77yb6K+35rGC55m957q45L+d5oqkJywgJ++8m+iri+axgueZvee0meS/neittycpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChpbml0aWFsQ29udHJpYikge1xuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gYO+8m+mAmuefpXt7dXNlcnwke2luaXRpYWxDb250cmlifX19YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcHBlbmRUZXh0ICs9ICcgfn4nLmNvbmNhdCgnficsICd+flxcbicpO1xuXHRcdFx0XHR1c2wuY2hhbmdlVGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdFx0dXNsLmxvZyhcblx0XHRcdFx0XHRhcHBlbmRUZXh0LFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6K6w5b2V5a+5W1snLCAn6KiY6YyE5bCNW1snKSArXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeeahOW/q+mAn+WIoOmZpOaPkOWQjScsICddXeeahOW/q+mAn+WIqumZpOaPkOWQjScpXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdH07XG5cdC8vIHZhbGlkYXRlIHN1Ymdyb3VwcyBpbiB0aGUgZm9ybSBwYXNzZWQgaW50byB0aGUgc3BlZWR5IGRlbGV0aW9uIHRhZ1xuXHRUd2lua2xlLnNwZWVkeS5nZXRQYXJhbWV0ZXJzID0gKGZvcm0sIHZhbHVlcykgPT4ge1xuXHRcdGxldCBwYXJhbWV0ZXJzID0gW107XG5cdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRQYXJhbXMgPSBbXTtcblx0XHRcdGxldCByZWRpbWFnZTtcblx0XHRcdHN3aXRjaCAodmFsdWUpIHtcblx0XHRcdFx0Y2FzZSAncmVhc29uJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLnJlYXNvbl8xJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IGRicmF0aW9uYWxlID0gZm9ybVsnY3NkLnJlYXNvbl8xJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIWRicmF0aW9uYWxlIHx8ICFkYnJhdGlvbmFsZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfoh6rlrprkuYnnkIbnlLHvvJror7fmjIflrprnkIbnlLHjgIInLCAn6Ieq6KiC55CG55Sx77ya6KuL5oyH5a6a55CG55Sx44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zWycxJ10gPSBkYnJhdGlvbmFsZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2EyJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmEyX3BhZ2VuYW1lJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IG90aGVycGFnZSA9IGZvcm1bJ2NzZC5hMl9wYWdlbmFtZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFvdGhlcnBhZ2UgfHwgIW90aGVycGFnZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCdDU0QgQTLvvJror7fmj5DkvpvnjrDmnInmnaHnm67nmoTlkI3np7DjgIInLCAnQ1NEIEEy77ya6KuL5o+Q5L6b54++5pyJ5qKd55uu55qE5ZCN56ix44CCJyksXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zLnBhZ2VuYW1lID0gb3RoZXJwYWdlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZzQnOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QuZzRfcGFnZW5hbWUnXSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGFnZW5hbWUgPSBmb3JtWydjc2QuZzRfcGFnZW5hbWUnXS52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICghcGFnZW5hbWUgfHwgIXBhZ2VuYW1lLnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ0NTRCBHNO+8muivt+aPkOS+m+mhtemdouWQjeensOOAgicsICdDU0QgRzTvvJroq4vmj5DkvpvpoIHpnaLlkI3nqLHjgIInKSwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1cnJlbnRQYXJhbXMucGFnZW5hbWUgPSBwYWdlbmFtZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2YyJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmYyX2ZpbGVuYW1lJ10pIHtcblx0XHRcdFx0XHRcdHJlZGltYWdlID0gZm9ybVsnY3NkLmYyX2ZpbGVuYW1lJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIXJlZGltYWdlIHx8ICFyZWRpbWFnZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCdDU0QgRjLvvJror7fmj5Dkvpvlj6bkuIDmlofku7bnmoTlkI3np7DjgIInLCAnQ1NEIEYy77ya6KuL5o+Q5L6b5Y+m5LiA5qqU5qGI55qE5ZCN56ix44CCJyksXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zLmZpbGVuYW1lID0gcmVkaW1hZ2UucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OmAsICdpJyksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncjEnOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucjFfdHlwZSddKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZWRpcnR5cGUgPSBmb3JtWydjc2QucjFfdHlwZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFyZWRpcnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgUjHvvJror7fpgInmi6npgILnlKjnsbvlnovjgIInLCAnQ1NEIFIx77ya6KuL6YG45pOH6YGp55So6aGe5Yil44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zWycxJ10gPSByZWRpcnR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdyMic6XG5cdFx0XHRcdFx0aWYgKGZvcm1bJ2NzZC5yMl90eXBlJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlZGlydHlwZSA9IGZvcm1bJ2NzZC5yMl90eXBlJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIXJlZGlydHlwZSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ0NTRCBSMu+8muivt+mAieaLqemAgueUqOexu+Wei+OAgicsICdDU0QgUjLvvJroq4vpgbjmk4fpgannlKjpoZ7liKXjgIInKSwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1cnJlbnRQYXJhbXNbJzEnXSA9IHJlZGlydHlwZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVuZ3RoXSA9IGN1cnJlbnRQYXJhbXM7XG5cdFx0fVxuXHRcdHJldHVybiBwYXJhbWV0ZXJzO1xuXHR9O1xuXHQvLyBGdW5jdGlvbiBmb3IgcHJvY2Vzc2luZyB0YWxrIHBhZ2Ugbm90aWZpY2F0aW9uIHRlbXBsYXRlIHBhcmFtZXRlcnNcblx0VHdpbmtsZS5zcGVlZHkuZ2V0VXNlclRhbGtQYXJhbWV0ZXJzID0gKG5vcm1hbGl6ZWQpID0+IHtcblx0XHRjb25zdCB1dHBhcmFtcyA9IFtdO1xuXHRcdHN3aXRjaCAobm9ybWFsaXplZCkge1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiB1dHBhcmFtcztcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkucmVzb2x2ZUNzZFZhbHVlcyA9IChlKSA9PiB7XG5cdFx0Y29uc3QgdmFsdWVzID0gKGUudGFyZ2V0LmZvcm0gPz8gZS50YXJnZXQpLmdldENoZWNrZWQoJ2NzZCcpO1xuXHRcdGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+mAieaLqeS4gOS4queQhuaNru+8gScsICfoq4vpgbjmk4fkuIDlgIvnkIbmk5rvvIEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGVzcGVlZHknLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlcztcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZXZhbHVhdGVTeXNvcCA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0LmZvcm0gPz8gZS50YXJnZXQ7XG5cdFx0aWYgKGUudGFyZ2V0LnR5cGUgPT09ICdjaGVja2JveCcgfHwgZS50YXJnZXQudHlwZSA9PT0gJ3RleHQnIHx8IGUudGFyZ2V0LnR5cGUgPT09ICdzZWxlY3QnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHt0YWdfb25seX0gPSBmb3JtO1xuXHRcdGlmICh0YWdfb25seSAmJiB0YWdfb25seS5jaGVja2VkKSB7XG5cdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVVzZXIoZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlcyA9IFR3aW5rbGUuc3BlZWR5LnJlc29sdmVDc2RWYWx1ZXMoZSk7XG5cdFx0aWYgKCF2YWx1ZXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgbm9ybWFsaXplZHMgPSB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuXHRcdFx0cmV0dXJuIFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2hbdmFsdWVdO1xuXHRcdH0pO1xuXHRcdC8vIGFuYWx5c2UgZWFjaCBjcml0ZXJpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gd2F0Y2ggdGhlIHBhZ2UsIHByb21wdCBmb3Igc3VtbWFyeSwgb3Igb3BlbiB1c2VyIHRhbGsgcGFnZVxuXHRcdGxldCB3YXRjaFBhZ2U7XG5cdFx0bGV0IHByb21wdEZvclN1bW1hcnk7XG5cdFx0Zm9yIChjb25zdCBub3JtIG9mIG5vcm1hbGl6ZWRzKSB7XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFNwZWVkeVBhZ2VzJykuaW5jbHVkZXMobm9ybSkpIHtcblx0XHRcdFx0d2F0Y2hQYWdlID0gVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFNwZWVkeUV4cGlyeScpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZigncHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5JykuaW5jbHVkZXMobm9ybSkpIHtcblx0XHRcdFx0cHJvbXB0Rm9yU3VtbWFyeSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdHZhbHVlcyxcblx0XHRcdG5vcm1hbGl6ZWRzLFxuXHRcdFx0d2F0Y2g6IHdhdGNoUGFnZSxcblx0XHRcdGRlbGV0ZVRhbGtQYWdlOiBmb3JtLnRhbGtwYWdlICYmIGZvcm0udGFsa3BhZ2UuY2hlY2tlZCxcblx0XHRcdGRlbGV0ZVJlZGlyZWN0czogZm9ybS5yZWRpcmVjdHMuY2hlY2tlZCxcblx0XHRcdG9wZW5Vc2VyVGFsazogZm9ybS5vcGVudXNlcnRhbGsuY2hlY2tlZCxcblx0XHRcdHByb21wdEZvclN1bW1hcnksXG5cdFx0XHR0ZW1wbGF0ZVBhcmFtczogVHdpbmtsZS5zcGVlZHkuZ2V0UGFyYW1ldGVycyhmb3JtLCB2YWx1ZXMpLFxuXHRcdH07XG5cdFx0aWYgKCFwYXJhbXMudGVtcGxhdGVQYXJhbXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AubWFpbihwYXJhbXMpO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVVzZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IGZvcm0gPSBlLnRhcmdldC5mb3JtID8/IGUudGFyZ2V0O1xuXHRcdGlmIChlLnRhcmdldC50eXBlID09PSAnY2hlY2tib3gnIHx8IGUudGFyZ2V0LnR5cGUgPT09ICd0ZXh0JyB8fCBlLnRhcmdldC50eXBlID09PSAnc2VsZWN0Jykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB2YWx1ZXMgPSBUd2lua2xlLnNwZWVkeS5yZXNvbHZlQ3NkVmFsdWVzKGUpO1xuXHRcdGlmICghdmFsdWVzKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8vIGNvbnN0IG11bHRpcGxlID0gZm9ybS5tdWx0aXBsZS5jaGVja2VkO1xuXHRcdGNvbnN0IG5vcm1hbGl6ZWRzID0gW107XG5cdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcblx0XHRcdGNvbnN0IG5vcm0gPSBUd2lua2xlLnNwZWVkeS5ub3JtYWxpemVIYXNoW3ZhbHVlXTtcblx0XHRcdG5vcm1hbGl6ZWRzW25vcm1hbGl6ZWRzLmxlbmd0aF0gPSBub3JtO1xuXHRcdH1cblx0XHQvLyBhbmFseXNlIGVhY2ggY3JpdGVyaW9uIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHdhdGNoIHRoZSBwYWdlL25vdGlmeSB0aGUgY3JlYXRvclxuXHRcdGxldCB3YXRjaFBhZ2UgPSBmYWxzZTtcblx0XHRmb3IgKGNvbnN0IG5vcm0gb2Ygbm9ybWFsaXplZHMpIHtcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5UGFnZXMnKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHR3YXRjaFBhZ2UgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5RXhwaXJ5Jyk7XG5cdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBub3RpZnl1c2VyID0gZmFsc2U7XG5cdFx0aWYgKGZvcm0ubm90aWZ5LmNoZWNrZWQpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdG5vdGlmeXVzZXIgPSB0cnVlO1xuXHRcdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGNzZGxvZyA9IGZhbHNlO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2xvZ1NwZWVkeU5vbWluYXRpb25zJykpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdGNzZGxvZyA9IHRydWU7XG5cdFx0XHRcdFx0Y29udGludWU7IC8vIGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR2YWx1ZXMsXG5cdFx0XHRub3JtYWxpemVkcyxcblx0XHRcdHdhdGNoOiB3YXRjaFBhZ2UsXG5cdFx0XHR1c2VydGFsazogbm90aWZ5dXNlcixcblx0XHRcdGxvZ25vbWluYXRpb246IGNzZGxvZyxcblx0XHRcdGJsYW5rOiBmb3JtLmJsYW5rLmNoZWNrZWQsXG5cdFx0XHRyZXF1ZXN0c2FsdDogZm9ybS5zYWx0aW5nLmNoZWNrZWQsXG5cdFx0XHR0ZW1wbGF0ZVBhcmFtczogVHdpbmtsZS5zcGVlZHkuZ2V0UGFyYW1ldGVycyhmb3JtLCB2YWx1ZXMpLFxuXHRcdH07XG5cdFx0aWYgKCFwYXJhbXMudGVtcGxhdGVQYXJhbXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfmoIforrDpobXpnaInLCAn5qiZ6KiY6aCB6Z2iJylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5tYWluKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5zcGVlZHksICdzcGVlZHknKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlY29weXZpby5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjb3B5dmlvKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWNvcHl2aW8uanM6IENvcHl2aW8gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjpcdFRhYiAoXCJDb3B5dmlvXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcsIG5vbi1zcGVjaWFsIHBhZ2VzLCBleGNlcHQgZm9yIGZpbGUgcGFnZXNcblx0ICogd2l0aCBubyBsb2NhbCBmaWxlIHdoaWNoIGFyZSBub3QgcmVkaXJlY3RzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiAgVHdpbmtsZUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS5jb3B5dmlvID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHQvLyAqIG5vbi1sb2NhbCBmaWxlcywgd2hldGhlciB0aGVyZSBpcyBhIGxvY2FsIHBhZ2Ugb3Igbm90ICh1bm5lZWRlZCBsb2NhbCBwYWdlcyBvZiBub24tbG9jYWwgZmlsZXMgYXJlIGVsaWdpYmxlIGZvciBDU0QgRjIpXG5cdFx0Ly8gKiBmaWxlIHBhZ2VzIHdpdGhvdXQgYWN0dWFsIGZpbGVzICh0aGVzZSBhcmUgZWxpZ2libGUgZm9yIENTRCBHOClcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHRcdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgfHxcblx0XHRcdFx0XHQoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpICYmICFNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+S+teadgycsICfkvrXmrIonKSxcblx0XHRcdCd0dy1jb3B5dmlvJyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpLFxuXHRcdFx0Jydcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDM1MCk7XG5cdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5L615p2D6K6+572uJywgJ+S+teasiuioreWumicpLCAnSDpUVy9QUkVGI2NvcHl2aW8nKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjY29weXZpbycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuY29weXZpby5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S+teadg+adpea6kO+8micsICfkvrXmrIrkvobmupDvvJonKSxcblx0XHRcdG5hbWU6ICdzb3VyY2UnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J0NTRCBHNDog5pu+57uP5qC55o2u5L615p2D5a6h5qC45Yig6Zmk5ZCO5Y+I6YeN5paw5Yib5bu655qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdCdDU0QgRzQ6IOabvue2k+agueaTmuS+teasiuWvqeaguOWIqumZpOW+jOWPiOmHjeaWsOW7uueri+eahOWFp+WuuSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZzQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnNCcsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflkIzml7bku6VHNOWHhuWImeaPkOaKpeW/q+mAn+WIoOmZpCcsICflkIzmmYLku6VHNOa6luWJh+aPkOWgseW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdnNF9wYWdlbmFtZScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJjeasoeWIoOmZpOeahOmhtemdouWQjeensCcsICfliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpgInloavvvIzoi6XliY3mrKHliKDpmaTnmoTpobXpnaLlkI3np7DkuI3lkIzvvIzor7fmj5DkvpsnLFxuXHRcdFx0XHRcdFx0XHRcdCfpgbjloavvvIzoi6XliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLHkuI3lkIzvvIzoq4vmj5DkvpsnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIUnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLliJvlu7rogIXorqjorrrpobXkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouW7uueri+iAheiojuirlumggeS4iuaUvue9ruS4gOmAmuefpeaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzID0ge1xuXHRcdHRyeVRhZ2dpbmc6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyDlhYjlsJ3or5XmoIforrDpobXpnaLvvIzoi6Xlj5HnjrDlt7Lnu4/moIforrDliJnlgZzmraLmj5DmiqVcblx0XHRcdGNvbnN0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRpZiAodGV4dC5pbmNsdWRlcygne3tDb3B5dmlvfCcpKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6aG16Z2i5bey57uP5qCH6K6w5L615p2D77yM6K+35Lq65bel56Gu6K6k5piv5ZCm5bey57uP5o+Q5oql44CCJyxcblx0XHRcdFx0XHRcdCfpoIHpnaLlt7LntpPmqJnoqJjkvrXmrIrvvIzoq4vkurrlt6Xnorroqo3mmK/lkKblt7LntpPmj5DloLHjgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy50YWdnaW5nQXJ0aWNsZShwYWdlb2JqKTtcblx0XHRcdFx0Ly8gQ29udHJpYnV0b3Igc3BlY2lmaWMgZWRpdHNcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCkpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9va3VwQ3JlYXRpb24oVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy5tYWluKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG1haW46IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyB0aGlzIGlzIGNvbWluZyBpbiBmcm9tIGxvb2t1cENyZWF0aW9uLi4uIVxuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cmliID0gcGFnZW9iai5nZXRDcmVhdG9yKCk7XG5cdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5L615p2D6K6w5b2V6aG5JywgJ+WKoOWFpeS+teasiuiomOmMhOmghScpXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvYWQoVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy5jb3B5dmlvTGlzdCk7XG5cdFx0XHQvLyBOb3RpZmljYXRpb24gdG8gZmlyc3QgY29udHJpYnV0b3Jcblx0XHRcdGlmIChwYXJhbXMubm90aWZ5KSB7XG5cdFx0XHRcdGNvbnN0IHVzZXJ0YWxrcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0YFVzZXIgdGFsazoke2luaXRpYWxDb250cmlifWAsXG5cdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBpbml0aWFsQ29udHJpYn3vvIlgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IG5vdGlmeXRleHQgPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYENvcHl2aW9Ob3RpY2V8JHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9fX1gKTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEFwcGVuZFRleHQobm90aWZ5dGV4dCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mAmuefpe+8mumhtemdoltbJywgJ+mAmuefpe+8mumggemdoltbJykgK1xuXHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnXV3nlpHkvLzkvrXniq/okZfkvZzmnYMnLCAnXV3nlpHkvLzkvrXniq/niYjmrIonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignY29weXZpb1dhdGNoVXNlcicpKTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLmFwcGVuZCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dGFnZ2luZ0FydGljbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgcmV2aXNpb25JZCA9XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmV2aXNpb25JZCcpIHx8IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykgfHwgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJyk7XG5cdFx0XHRsZXQgdGFnID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRgQ29weXZpby9hdXRvfHVybD0ke3BhcmFtcy5zb3VyY2Vcblx0XHRcdFx0XHQucmVwbGFjZSgvaHR0cC9nLCAnJiMxMDQ7dHRwJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXFxuKy9nLCAnXFxuJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXlxccyooW14qXSkvZ20sICcqICQxJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXlxcKiAkL20sICcnKX18T2xkUmV2aXNpb249JHtyZXZpc2lvbklkfX19YFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBvbGRjc2QgPSB0ZXh0Lm1hdGNoKC9cXHtcXHtcXHMqKGRiKC1cXHcqKT98ZHxkZWxldGUpXFxzKihcXHwoPzpcXHtcXHtbXnt9XSpcXH1cXH18W157fV0pKik/XFx9XFx9L2kpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvbGRjc2QgJiZcblx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB5L+d55WZ5ZCX77yfXFxuXFxu5b2T6aG16Z2i5ZCM5pe25L6154qv6JGX5L2c5p2D5Y+I56ym5ZCI5b+r6YCf5Yig6Zmk5qCH5YeG5pe277yM5bqU6K+l5LyY5YWI6LWw5b+r6YCf5Yig6Zmk56iL5bqP44CCXFxu5Y2V5Ye74oCc56Gu6K6k4oCd5Lul5L+d55WZ5b+r6YCf5Yig6Zmk5qih5p2/77yM6Iul5oKo6K6k5Li65b+r6YCf5Yig6Zmk55CG55Sx5LiN5ZCI77yM5Y2V5Ye74oCc5Y+W5raI4oCd5Lul56e76Zmk5b+r6YCf5Yig6Zmk5qih5p2/44CCJyxcblx0XHRcdFx0XHRcdCflnKjpoIHpnaLkuIrmib7liLDlv6vpgJ/liKrpmaTmqKHmnb/vvIzopoHkv53nlZnll47vvJ9cXG5cXG7nlbbpoIHpnaLlkIzmmYLkvrXniq/niYjmrIrlj4jnrKblkIjlv6vpgJ/liKrpmaTmqJnmupbmmYLvvIzmh4noqbLlhKrlhYjotbDlv6vpgJ/liKrpmaTnqIvluo/jgIJcXG7pu57mk4rjgIznorroqo3jgI3ku6Xkv53nlZnlv6vpgJ/liKrpmaTmqKHmnb/vvIzoi6Xmgqjoqo3ngrrlv6vpgJ/liKrpmaTnkIbnlLHkuI3lkIjvvIzpu57mk4rjgIzlj5bmtojjgI3ku6Xnp7vpmaTlv6vpgJ/liKrpmaTmqKHmnb/jgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGFnID0gYCR7b2xkY3NkWzBdfVxcbiR7dGFnfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLmc0KSB7XG5cdFx0XHRcdGxldCBzcGVlZHlUYWcgPSAne3tkZWxldGUnO1xuXHRcdFx0XHRzcGVlZHlUYWcgKz0gJ3xnNCc7XG5cdFx0XHRcdGlmIChwYXJhbXMuZzRfcGFnZW5hbWUpIHtcblx0XHRcdFx0XHRzcGVlZHlUYWcgKz0gYHwke3BhcmFtcy5nNF9wYWdlbmFtZX18YzE9W1tTcGVjaWFsOlVuZGVsZXRlLyR7cGFyYW1zLmc0X3BhZ2VuYW1lfV1dYDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzcGVlZHlUYWcgKz0gYHxjMT1bW1NwZWNpYWw6VW5kZWxldGUvJHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9XV1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNwZWVkeVRhZyArPSAnfX0nO1xuXHRcdFx0XHR0YWcgPSBgJHtzcGVlZHlUYWd9XFxuJHt0YWd9YDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGFnKTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkod2luZG93LndnVUxTKCfmraTpobXpnaLnlpHkvLzkvrXniq/okZfkvZzmnYMnLCAn5q2k6aCB6Z2i55aR5Ly85L6154qv54mI5qyKJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ2NvcHl2aW9XYXRjaFBhZ2UnKSk7XG5cdFx0XHQvLyBwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignbWFya0NvcHl2aW9QYWdlc0FzUGF0cm9sbGVkJykpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNvcHl2aW9MaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGxldCBvdXRwdXQgPSAnJztcblx0XHRcdGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0Y29uc3QgZGF0ZUhlYWRlclJlZ2V4ID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0YF49PStcXFxccyoke2RhdGUuZ2V0VVRDTW9udGgoKSArIDF95pyIJHtkYXRlLmdldFVUQ0RhdGUoKX3ml6VcXFxccyo9PStgLFxuXHRcdFx0XHQnbWcnXG5cdFx0XHQpO1xuXHRcdFx0aWYgKCFkYXRlSGVhZGVyUmVnZXguZXhlYyh0ZXh0KSkge1xuXHRcdFx0XHRvdXRwdXQgPSBgXFxuXFxuPT0ke2RhdGUuZ2V0VVRDTW9udGgoKSArIDF95pyIJHtkYXRlLmdldFVUQ0RhdGUoKX3ml6U9PWA7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQgKz0gJ1xcbnt7Jy5jb25jYXQoJ3N1YnN0OicsIGBDb3B5dmlvVkZEUmVjb3JkfCR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfX19YCk7XG5cdFx0XHRwYWdlb2JqLnNldEFwcGVuZFRleHQob3V0cHV0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9XV1gKTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLmFwcGVuZCgpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuY29weXZpby5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShlLnRhcmdldCk7XG5cdFx0aWYgKCFwYXJhbXMuc291cmNlLnRyaW0oKSkge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+35oyH5a6a5L615p2D5p2l5rqQJywgJ+iri+aMh+WumuS+teasiuS+hua6kCcpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWNvcHl2aW8nLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdHBhcmFtcy5sb2dwYWdlID0gJ0xJQl90YWxrOuS+teadg+aPkOaKpSc7XG5cdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0Ly8gVXBkYXRpbmcgZGF0YSBmb3IgdGhlIGFjdGlvbiBjb21wbGV0ZWQgZXZlbnRcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHQn5o+Q5oql5a6M5oiQ77yM5bCG5Zyo5Yeg56eS5YaF5Yi35paw6aG16Z2iJyxcblx0XHRcdCfmj5DloLHlrozmiJDvvIzlsIflnKjlub7np5Llhafph43mlrDmlbTnkIbpoIHpnaInXG5cdFx0KTtcblx0XHQvLyBUYWdnaW5nIGZpbGVcblx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXkvrXmnYPmqKHmnb/liLDpobXpnaInLCAn5Yqg5YWl5L615qyK5qih5p2/5Yiw6aCB6Z2iJylcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzLnRyeVRhZ2dpbmcpO1xuXHRcdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCgpO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmNvcHl2aW8sICdjb3B5dmlvJyk7XG59KSgpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXhmZC5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGV4ZmQoKSB7XG5cdC8qKlxuXHQgKiB0d2lua2xleGZkLmpzOiBYRkQgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIlhGRFwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nLCBub24tc3BlY2lhbCBwYWdlcyxcblx0ICogZXhjZXB0IGZvciBmaWxlIHBhZ2VzIHdpdGggbm8gbG9jYWwgZmlsZVxuXHQgKiB3aGljaCBhcmUgbm90IHJlZGlyZWN0c1xuXHQgKi9cblx0VHdpbmtsZS54ZmQgPSAoKSA9PiB7XG5cdFx0Ly8gRGlzYWJsZSBvbjpcblx0XHQvLyAqIHNwZWNpYWwgcGFnZXNcblx0XHQvLyAqIG5vbi1leGlzdGVudCBwYWdlc1xuXHRcdC8vICogbm9uLWxvY2FsIGZpbGVzLCB3aGV0aGVyIHRoZXJlIGlzIGEgbG9jYWwgcGFnZSBvciBub3QgKHVubmVlZGVkIGxvY2FsIHBhZ2VzIG9mIGZpbGVzIG9uIFNoYXJlIGFyZSBlbGlnaWJsZSBmb3IgQ1NEIEYyKVxuXHRcdC8vICogZmlsZSBwYWdlcyB3aXRob3V0IGFjdHVhbCBmaWxlc1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPCAwIHx8XG5cdFx0XHQhbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSB8fFxuXHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYgJiZcblx0XHRcdFx0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1zaGFyZWR1cGxvYWQnKSB8fFxuXHRcdFx0XHRcdCghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWltYWdlcGFnZS1zZWN0aW9uLWZpbGVoaXN0b3J5JykgJiYgIU1vcmViaXRzLmlzUGFnZVJlZGlyZWN0KCkpKSlcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfmj5DliKAnLCAn5o+Q5YiqJyksXG5cdFx0XHQndHcteGZkJyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5Lqk5Yig6Zmk6K6o6K66JywgJ+aPkOS6pOWIqumZpOiojuirlicpXG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IG51bGw7XG5cdC8vIGVycm9yIGNhbGxiYWNrIG9uIE1vcmViaXRzLnN0YXR1cy5vYmplY3Rcblx0VHdpbmtsZS54ZmQucHJpbnRSYXRpb25hbGUgPSAoKSA9PiB7XG5cdFx0aWYgKFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUpIHtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0KFxuXHRcdFx0XHRUd2lua2xlLnhmZC5jdXJyZW50UmF0aW9uYWxlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aCqOeahOeQhueUseW3suWcqOS4i+aWueaPkOS+m++8jOiLpeaCqOaDs+mHjeaWsOaPkOS6pO+8jOivt+WwhuWFtuWkjeWItuWIsOS4gOaWsOeql+WPo+S4re+8micsXG5cdFx0XHRcdFx0J+aCqOeahOeQhueUseW3suWcqOS4i+aWueaPkOS+m++8jOiLpeaCqOaDs+mHjeaWsOaPkOS6pO+8jOiri+Wwh+WFtuikh+ijveWIsOS4gOaWsOimlueql+S4re+8midcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHRcdC8vIG9ubHkgbmVlZCB0byBwcmludCB0aGUgcmF0aW9uYWxlIG9uY2Vcblx0XHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS54ZmQuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDM1MCk7XG5cdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5o+Q5Lqk5a2Y5bqf6K6o6K66JywgJ+aPkOS6pOWtmOW7ouiojuirlicpKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5o+Q5Yig6K6+572uJywgJ+aPkOWIquioreWumicpLCAnSDpUVy9QUkVGI3hmZCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyN4ZmQnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnhmZC5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgY2F0ZWdvcmllcyA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aPkOS6pOexu+Wei++8micsICfmj5DkuqTpoZ7liKXvvJonKSxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnhmZC5jYWxsYmFjay5jaGFuZ2VfY2F0ZWdvcnksXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLlrZjlup/orqjorronLCAn6aCB6Z2i5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRzZWxlY3RlZDogbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCxcblx0XHRcdHZhbHVlOiAnYWZkJyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7tuWtmOW6n+iuqOiuuicsICfmqpTmoYjlrZjlu6LoqI7oq5YnKSxcblx0XHRcdHNlbGVjdGVkOiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2LFxuXHRcdFx0dmFsdWU6ICdmZmQnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpoLlj6/og73vvIzpgJrnn6XpobXpnaLliJvlu7rogIUnLCAn5aaC5Y+v6IO977yM6YCa55+l6aCB6Z2i5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLliJvlu7rogIXorqjorrrpobXkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouW7uueri+iAheiojuirlumggeS4iuaUvue9ruS4gOmAmuefpeaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJ+W3peS9nOWMuicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBXZSBtdXN0IGluaXQgdGhlIGNvbnRyb2xzXG5cdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0ZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSk7XG5cdFx0cmVzdWx0LmNhdGVnb3J5LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0fTtcblx0VHdpbmtsZS54ZmQuY2FsbGJhY2suY2hhbmdlX2NhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCB7dmFsdWV9ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnd29ya19hcmVhJyk7XG5cdFx0bGV0IHdvcmtfYXJlYSA9IG51bGw7XG5cdFx0Y29uc3Qgb2xkcmVhc29udGV4dGJveCA9IGZvcm0ucXVlcnlTZWxlY3RvcigndGV4dGFyZWEnKTtcblx0XHRsZXQgb2xkcmVhc29uID0gb2xkcmVhc29udGV4dGJveCA/IG9sZHJlYXNvbnRleHRib3gudmFsdWUgOiAnJztcblx0XHRjb25zdCBhcHBlbmRSZWFzb25Cb3ggPSAoeGZkX2NhdCkgPT4ge1xuXHRcdFx0c3dpdGNoICh4ZmRfY2F0KSB7XG5cdFx0XHRcdGNhc2UgJ2Z3ZGNzZCc6XG5cdFx0XHRcdFx0b2xkcmVhc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkZWxldGUtcmVhc29uJykudGV4dENvbnRlbnQpLnJlcGxhY2UoXG5cdFx0XHRcdFx0XHQvXFwrL2csXG5cdFx0XHRcdFx0XHQnICdcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdmYW1lJzpcblx0XHRcdFx0XHRvbGRyZWFzb24gPSBUd2lua2xlLmdldFByZWYoJ2FmZEZhbWVEZWZhdWx0UmVhc29uJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3N1YnN0dWInOlxuXHRcdFx0XHRcdG9sZHJlYXNvbiA9IFR3aW5rbGUuZ2V0UHJlZignYWZkU3Vic3R1YkRlZmF1bHRSZWFzb24nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRuYW1lOiAneGZkcmVhc29uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5o+Q5Yig55CG55Sx77yaJywgJ+aPkOWIqueQhueUse+8micpLFxuXHRcdFx0XHR2YWx1ZTogb2xkcmVhc29uLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwhuiHquWKqOS4uuaCqOWKoOWFpeetvuWQjeOAguiLpeaCqOS9v+eUqOaJuemHj+aPkOWIoOWKn+iDve+8jOWtmOW6n+iuqOiuuumhteWPquS8muS9v+eUqOesrOS4gOasoeaPkOS6pOeahOeQhueUse+8jOS9huS5i+WQjuaCqOS7jemcgOaPkOS+m+S7peeUqOS6juWIoOmZpOmAmuWRiuaooeadv+eahOWPguaVsOOAgicsXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwh+iHquWLleeCuuaCqOWKoOWFpeewveWQjeOAguiLpeaCqOS9v+eUqOaJueasoeaPkOWIquWKn+iDve+8jOWtmOW7ouiojuirlumggeWPquacg+S9v+eUqOesrOS4gOasoeaPkOS6pOeahOeQhueUse+8jOS9huS5i+W+jOaCqOS7jemcgOaPkOS+m+S7peeUqOaWvOWIqumZpOmAmuWRiuaooeadv+eahOWPg+aVuOOAgidcblx0XHRcdFx0KSxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5q2k5YC85Lqm5pi+56S65LqO6aG16Z2i55qE5Yig6Zmk6YCa5ZGK5qih5p2/5YaF77yM5pWF5Yqh5b+F5o+Q5L6b5q2k5YC877yM6YG/5YWN5L2/55So4oCc5ZCM5LiK4oCd562J55So6K+t44CCJyxcblx0XHRcdFx0XHQn5q2k5YC85Lqm6aGv56S65pa86aCB6Z2i55qE5Yiq6Zmk6YCa5ZGK5qih5p2/5YWn77yM5pWF5YuZ5b+F5o+Q5L6b5q2k5YC877yM6YG/5YWN5L2/55So44CM5ZCM5LiK44CN562J55So6Kqe44CCJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0XHQvLyBUT0RPIHBvc3NpYmxlIGZ1dHVyZSBcInByZXZpZXdcIiBsaW5rIGhlcmVcblx0XHR9O1xuXG5cdFx0c3dpdGNoICh2YWx1ZSkge1xuXHRcdFx0Y2FzZSAnYWZkJzoge1xuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5a2Y5bqf6K6o6K66JywgJ+mggemdouWtmOW7ouiojuirlicpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L2/55SoJmx0O25vaW5jbHVkZSZndDvljIXoo7nmqKHmnb8nLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ25vaW5jbHVkZScsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2luY2x1ZGUnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOlxuXHRcdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDEwICYmXG5cdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgIT09ICdTY3JpYnVudG8nLFxuXHRcdFx0XHRcdFx0XHQvLyBUZW1wbGF0ZSBuYW1lc3BhY2Vcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfkvb/lhbbkuI3kvJrlnKjooqvljIXlkKvml7blh7rnjrDjgIInLCAn5L2/5YW25LiN5pyD5Zyo6KKr5YyF5ZCr5pmC5Ye654++44CCJyksXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSA9PT0gJ1NjcmlidW50bycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBhZmRfY2F0ZWdvcnkgPSB3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAneGZkY2F0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nmj5DliKDnsbvlnovvvJonLCAn6YG45pOH5o+Q5Yiq6aGe5Yil77yaJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUueGZkLmNhbGxiYWNrLmNoYW5nZV9hZmRfY2F0ZWdvcnksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRsZXQgYWZkX2NhdCA9ICdkZWxldGUnO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdhZmREZWZhdWx0Q2F0ZWdvcnknKSA9PT0gJ3NhbWUnKSB7XG5cdFx0XHRcdFx0aWYgKGxvY2FsU3RvcmFnZS5Ud2lua2xlX2FmZENhdGVnb3J5ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGxvY2FsU3RvcmFnZS5Ud2lua2xlX2FmZENhdGVnb3J5ID0gJ2RlbGV0ZSc7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFmZF9jYXQgPSBsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2RlbGV0ZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhZmRfY2F0ZWdvcnkuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflkIjlubYnLCAn5ZCI5L21JyksXG5cdFx0XHRcdFx0dmFsdWU6ICdtZXJnZScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdtZXJnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdGd2RDc2RUb1hmZCcpKSB7XG5cdFx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnZndkY3NkJyxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiBhZmRfY2F0ID09PSAnZndkY3NkJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhZmRfY2F0ZWdvcnkuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmibnph4/lhbPms6jluqbmj5DliKAnLCAn5om55qyh6Zec5rOo5bqm5o+Q5YiqJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdmYW1lJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2ZhbWUnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5om56YeP5bCP5bCP5L2c5ZOB5o+Q5YigJywgJ+aJueasoeWwj+Wwj+S9nOWTgeaPkOWIqicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnc3Vic3R1YicsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdzdWJzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJuemHj+WFtuS7luaPkOWIoCcsICfmibnmrKHlhbbku5bmj5DliKonKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2JhdGNoJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2JhdGNoJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ21lcmdlaW50bycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZCI5bm25Yiw77yaJywgJ+WQiOS9teWIsO+8micpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFwcGVuZFJlYXNvbkJveChhZmRfY2F0KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRuYW1lOiAnZndkY3NkcmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazkuqTnkIbnlLHvvJonLCAn6L2J5Lqk55CG55Sx77yaJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwhuiHquWKqOS4uuaCqOWKoOWFpeetvuWQjeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5L2/55Sod2lraXRleHTvvIxUd2lua2xl5bCH6Ieq5YuV54K65oKo5Yqg5YWl57C95ZCN44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhID0gd29ya19hcmVhLnJlbmRlcigpO1xuXHRcdFx0XHRvbGRfYXJlYS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3b3JrX2FyZWEsIG9sZF9hcmVhKTtcblx0XHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRmb3JtLnhmZGNhdC5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnZmZkJzpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7tuWtmOW6n+iuqOiuuicsICfmqpTmoYjlrZjlu6LoqI7oq5YnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFwcGVuZFJlYXNvbkJveCgnZmZkJyk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+acquWumuS5iScsICfmnKrlrprnvqknKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBSZXR1cm4gdG8gY2hlY2tlZCBzdGF0ZSB3aGVuIHN3aXRjaGluZ1xuXHRcdGZvcm0ubm90aWZ5LmNoZWNrZWQgPSB0cnVlO1xuXHRcdGZvcm0ubm90aWZ5LmRpc2FibGVkID0gZmFsc2U7XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmNoYW5nZV9hZmRfY2F0ZWdvcnkgPSAoZSkgPT4ge1xuXHRcdHN3aXRjaCAoZS50YXJnZXQudmFsdWUpIHtcblx0XHRcdGNhc2UgJ21lcmdlJzpcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucGFyZW50RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmlubmVySFRNTCA9IHdpbmRvdy53Z1VMUygn5ZCI5bm25Yiw77yaJywgJ+WQiOS9teWIsO+8micpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2Z3ZGNzZCc6XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubWVyZ2VpbnRvLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmlubmVySFRNTCA9ICfmj5DkuqTkurrvvJonO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnhmZHJlYXNvbi52YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChcblx0XHRcdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZGVsZXRlLXJlYXNvbicpLnRleHRDb250ZW50XG5cdFx0XHRcdCkucmVwbGFjZSgvXFwrL2csICcgJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubWVyZ2VpbnRvLnBhcmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uZndkY3NkcmVhc29uLnBhcmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ueGZkcmVhc29uLnZhbHVlID0gVHdpbmtsZS5nZXRQcmVmKCdhZmRGYW1lRGVmYXVsdFJlYXNvbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3N1YnN0dWInOlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnhmZHJlYXNvbi52YWx1ZSA9IFR3aW5rbGUuZ2V0UHJlZignYWZkU3Vic3R1YkRlZmF1bHRSZWFzb24nKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdH1cblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdhZmREZWZhdWx0Q2F0ZWdvcnknKSA9PT0gJ3NhbWUnKSB7XG5cdFx0XHRsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeSA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzID0ge1xuXHRcdGFmZDoge1xuXHRcdFx0bWFpbjogKHRhZ2dpbmdfcGFnZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSB0YWdnaW5nX3BhZ2UuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQudGFnZ2luZ0FydGljbGUodGFnZ2luZ19wYWdlKTtcblx0XHRcdFx0Ly8gQWRkaW5nIGRpc2N1c3Npb25cblx0XHRcdFx0Y29uc3QgZGlzY3Vzc2lvbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYXJhbXMubG9ncGFnZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeiuqOiuuuWIsOW9k+aXpeWIl+ihqCcsICfliqDlhaXoqI7oq5bliLDnlbbml6XliJfooagnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRkaXNjdXNzaW9uX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdGRpc2N1c3Npb25fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0ZGlzY3Vzc2lvbl9wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFmZC50b2RheXNMaXN0KTtcblx0XHRcdFx0Ly8gTm90aWZpY2F0aW9uIHRvIGZpcnN0IGNvbnRyaWJ1dG9yXG5cdFx0XHRcdGlmIChwYXJhbXMubm90aWZ5KSB7XG5cdFx0XHRcdFx0Ly8gRGlzYWxsb3cgd2FybmluZyB5b3Vyc2VsZlxuXHRcdFx0XHRcdGlmIChwYXJhbXMuY3JlYXRvciA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBwYXJhbXMuY3JlYXRvcn3vvIlgLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOWIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICfmgqjlu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHBhcmFtcy5jcmVhdG9yID0gbnVsbDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGFsa1BhZ2VOYW1lID0gYFVzZXIgdGFsazoke3BhcmFtcy5jcmVhdG9yfWA7XG5cdFx0XHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHR0YWxrUGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IG5vdGlmeXRleHQgPSAnXFxue3snXG5cdFx0XHRcdFx0XHRcdC5jb25jYXQoJ3N1YnN0OicpXG5cdFx0XHRcdFx0XHRcdC5jb25jYXQoYEFGRE5vdGV8JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX0tLX5+YCwgJ35+Jyk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShg6YCa55+l77ya6aG16Z2iW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXeWtmOW6n+iuqOiuuuaPkOWQjWApO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2csIGlmIHRoZSB1c2VyIGhhcyBlbmFibGVkIGl0XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5sb2dub21pbmF0aW9uKSB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWRkVG9Mb2cocGFyYW1zLCBwYXJhbXMuY3JlYXRvcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIG9yLCBpZiBub3Qgbm90aWZ5aW5nLCBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZyB3aXRob3V0IHRoZSBpbml0aWFsIGNvbnRyaWJ1dG9yJ3MgbmFtZVxuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5sb2dub21pbmF0aW9uKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFkZFRvTG9nKHBhcmFtcywgbnVsbCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR0YWdnaW5nQXJ0aWNsZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0bGV0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdGxldCB0YWcgPSBge3t2ZmR8JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0UmVhc29uVGV4dChwYXJhbXMueGZkcmVhc29uKX1gO1xuXHRcdFx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0XHRcdHRhZyArPSAnfHInO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRhZyArPSAnfGRhdGU9e3snLmNvbmNhdCgnc3Vic3Q6JywgJyN0aW1lOlkvbS9kfX19fScpO1xuXHRcdFx0XHRpZiAocGFyYW1zLm5vaW5jbHVkZSkge1xuXHRcdFx0XHRcdHRhZyA9IGA8bm9pbmNsdWRlPiR7dGFnfTwvbm9pbmNsdWRlPmA7XG5cdFx0XHRcdFx0Ly8g5Y+q5pyJ6KGo5qC86ZyA6KaB5Y2V54us5Yqg5Zue6L2m77yM5YW25LuW5oOF5Ya15Yqg5Zue6L2m5Lya56C05Z2P5qih5p2/44CCXG5cdFx0XHRcdFx0aWYgKHRleHQuaW5kZXhPZigne3wnKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0dGFnICs9ICdcXG4nO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YWcgKz0gJ1xcbic7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gVGhlbiwgdGVzdCBpZiB0aGVyZSBhcmUgc3BlZWR5IGRlbGV0aW9uLXJlbGF0ZWQgdGVtcGxhdGVzIG9uIHRoZSBhcnRpY2xlLlxuXHRcdFx0XHRjb25zdCB0ZXh0Tm9TZCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHQvXFx7XFx7XFxzKihkYigtXFx3Kik/fGR8ZGVsZXRlfCg/Omhhbmd8aG9sZClbLSBdP29uKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb1NkICYmXG5cdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeenu+mZpOWXju+8nycpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dE5vU2Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGV4dE5vTm90TWFuZGFyaW4gPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooTm90TWFuZGFyaW58Tm90Y2hpbmVzZXzpnZ7kuK3mlod86Z2e54++5Luj5ryi6KqefOmdnueOsOS7o+axieivrXzpnZ7nj77ku6PmqJnmupbmvKLoqp586Z2e546w5Luj5qCH5YeG5rGJ6K+tKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb05vdE1hbmRhcmluICYmXG5cdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+WcqOmhtemdouS4iuaJvuWIsOmdnueOsOS7o+agh+WHhuaxieivreaooeadv++8jOimgeenu+mZpOWQl++8nycsXG5cdFx0XHRcdFx0XHRcdCflnKjpoIHpnaLkuIrmib7liLDpnZ7nj77ku6PmqJnmupbmvKLoqp7mqKHmnb/vvIzopoHnp7vpmaTll47vvJ8nXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dE5vTm90TWFuZGFyaW47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGV4dE5vQWZjID0gdGV4dC5yZXBsYWNlKC97e1xccypBRkMgc3VibWlzc2lvblxccypcXHxcXHMqXFx8W159XSo/fX1cXHMqL2dpLCAnJyk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9BZmMgJiZcblx0XHRcdFx0XHRjb25maXJtKHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5YiwQUZD5o+Q5Lqk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsEFGQ+aPkOS6pOaooeadv++8jOimgeenu+mZpOWXju+8nycpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dE5vQWZjO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE1hcmsgdGhlIHBhZ2UgYXMgcGF0cm9sbGVkLCBpZiB3YW50ZWRcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignbWFya1hmZFBhZ2VzQXNQYXRyb2xsZWQnKSkge1xuXHRcdFx0XHRcdHBhZ2VvYmoucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UodGV4dCk7XG5cdFx0XHRcdHRleHQgPSB5c2FyY2hpdmVzX3BhZ2UuaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXModGFnLCBUd2lua2xlLmhhdG5vdGVSZWdleCkuZ2V0VGV4dCgpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6aG16Z2i5a2Y5bqf6K6o6K6677yaW1snLCAn6aCB6Z2i5a2Y5bui6KiO6KuW77yaW1snKSArIHBhcmFtcy5sb2dwYWdlfSMke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWBcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hQYWdlJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHRcdH0sXG5cdFx0XHR0b2RheXNMaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0bGV0IHR5cGUgPSAnJztcblx0XHRcdFx0bGV0IHRvID0gJyc7XG5cdFx0XHRcdHN3aXRjaCAocGFyYW1zLnhmZGNhdCkge1xuXHRcdFx0XHRcdGNhc2UgJ2Z3ZGNzZCc6XG5cdFx0XHRcdFx0Y2FzZSAnbWVyZ2UnOlxuXHRcdFx0XHRcdFx0dG8gPSBwYXJhbXMubWVyZ2VpbnRvO1xuXHRcdFx0XHRcdC8qIEZhbGwgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0eXBlID0gcGFyYW1zLnhmZGNhdDtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCBhcHBlbmQgPSB0cnVlO1xuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICdmYW1lJzpcblx0XHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHRjYXNlICdiYXRjaCc6IHtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbW1lbnRUZXh0ID0gYDwhLS0gVHdpbmtsZTogVXNlcjoke213LmNvbmZpZy5nZXQoXG5cdFx0XHRcdFx0XHRcdCd3Z1VzZXJOYW1lJ1xuXHRcdFx0XHRcdFx0KX0g55qEICR7dHlwZX0g5o+Q5Yig5o+S5YWl54K577yM6K+35Yu/5pu05pS55oiW56e76Zmk5q2k6KGM77yM6Zmk6Z2e5LiN5YaN5LqO5q2k6aG16Z2i5o+Q5YigIC0tPmA7XG5cdFx0XHRcdFx0XHRsZXQgbmV3VGV4dCA9IGA9PT1bWzoke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXT09PWA7XG5cdFx0XHRcdFx0XHRpZiAodHlwZSA9PT0gJ2ZhbWUnKSB7XG5cdFx0XHRcdFx0XHRcdG5ld1RleHQgKz0gYFxcbnt7RmluZHNvdXJjZXN8JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHRleHQuaW5jbHVkZXMoY29tbWVudFRleHQpKSB7XG5cdFx0XHRcdFx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoY29tbWVudFRleHQsIGAke25ld1RleHR9XFxuXFxuJHtjb21tZW50VGV4dH1gKTtcblx0XHRcdFx0XHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdFx0XHRcdFx0YXBwZW5kID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzYWZlc3Vic3QgPSAnc2FmZXN1YnN0Jztcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXBwZW5kVGV4dCA9IGBcXG57eyR7c2FmZXN1YnN0fSR7YDpTYWZlQWZkSGVhZH19XFxuJHtcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRmYW1lOiAnPT0gMzDlpKnlkI7ku43mjILmnIl7e3RsfG5vdGFiaWxpdHl9feaooeadv+eahOadoeebriA9PVxcbjxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbGVyO1wiPu+8iOW3suaMgltbVGVtcGxhdGU6bm90YWJpbGl0eXzkuI3nrKbmlLblvZXmoIflh4bmqKHmnb9dXTMw5aSp77yJPC9zcGFuPicsXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJzdHViOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPT0gMzDlpKnlkI7ku43mjILmnIl7e3RsfHN1YnN0dWJ9feaooeadv+eahOadoeebriA9PVxcbjxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbGVyO1wiPu+8iOW3suaMgltbVGVtcGxhdGU6c3Vic3R1YnzlsI/lsI/mnaHnm67mqKHmnb9dXTMw5aSp77yJPC9zcGFuPicsXG5cdFx0XHRcdFx0XHRcdFx0XHRiYXRjaDogJz09IOaJuemHj+aPkOWIoCA9PScsXG5cdFx0XHRcdFx0XHRcdFx0fVt0eXBlXVxuXHRcdFx0XHRcdFx0XHR9XFxuJHtuZXdUZXh0fVxcblxcbiR7Y29tbWVudFRleHR9XFxuLS0tLVxcbjrlu7rorq7vvJrliKDpmaTliY3ov7DpobXpnaLvvJvnkIbnlLHvvJoke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KFxuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy54ZmRyZWFzb25cblx0XHRcdFx0XHRcdFx0KX1cXG7mj5DmiqXku6XkuIoke1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGZhbWU6ICc8dT7kuI3nrKblkIjmlLblvZXmoIflh4Y8L3U+5p2h55uuJyxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YnN0dWI6ICc8dT7plb/luqbov4fnn608L3U+5p2h55uuJyxcblx0XHRcdFx0XHRcdFx0XHRcdGJhdGNoOiAn6aG16Z2iJyxcblx0XHRcdFx0XHRcdFx0XHR9W3R5cGVdXG5cdFx0XHRcdFx0XHRcdH3nmoTmsYLpl7vnvJbogIXlj4rml7bpl7TvvJo8YnIgaWQ9XCJuby1uZXctdGl0bGVcIj5+fmAuY29uY2F0KCd+ficpfWA7XG5cdFx0XHRcdFx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dChhcHBlbmRUZXh0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KFxuXHRcdFx0XHRcdFx0XHQnXFxue3snLmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdFx0XHRgRFJJdGVtfFR5cGU9JHt0eXBlfXxEUmFydGljbGVzPSR7XG5cdFx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm1cblx0XHRcdFx0XHRcdFx0XHR9fFJlYXNvbj0ke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KHBhcmFtcy54ZmRyZWFzb24pfSR7XG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMuZndkY3NkcmVhc29uLnRyaW0oKSA9PT0gJycgPyAnJyA6IGA8YnI+XFxu6L2s5Lqk55CG55Sx77yaJHtwYXJhbXMuZndkY3NkcmVhc29ufWBcblx0XHRcdFx0XHRcdFx0XHR9fFRvPSR7dG99fX1+fmAuY29uY2F0KCd+ficpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGDliqDlhaVbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoRGlzY3Vzc2lvbicpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdGlmIChhcHBlbmQpIHtcblx0XHRcdFx0XHRwYWdlb2JqLmFwcGVuZCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsO1xuXHRcdFx0fSxcblx0XHRcdGxvb2t1cENyZWF0aW9uOiAodGFyZ2V0X3BhZ2UpID0+IHtcblx0XHRcdFx0dGFyZ2V0X3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSB0YXJnZXRfcGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0cGFyYW1zLmNyZWF0b3IgPSB0YXJnZXRfcGFnZS5nZXRDcmVhdG9yKCk7XG5cdFx0XHRcdC8vIFRhZ2dpbmcgcGFnZVxuXHRcdFx0XHRjb25zdCB0YWdnaW5nX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeWtmOW6n+iuqOiuuuaooeadv+WIsOmhtemdoicsICfliqDlhaXlrZjlu6LoqI7oq5bmqKHmnb/liLDpoIHpnaInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0YWdnaW5nX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QoZmFsc2UpO1xuXHRcdFx0XHR0YWdnaW5nX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5sb2FkKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQudHJ5VGFnZ2luZyk7XG5cdFx0XHR9LFxuXHRcdFx0dHJ5VGFnZ2luZzogKHRhZ2dpbmdfcGFnZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzdGF0ZWxlbSA9IHRhZ2dpbmdfcGFnZS5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRcdC8vIGRlZmF1bHRzIHRvIC9kb2MgZm9yIGx1YSBtb2R1bGVzLCB3aGljaCBtYXkgbm90IGV4aXN0XG5cdFx0XHRcdGlmICghdGFnZ2luZ19wYWdlLmV4aXN0cygpKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKDpmaQnLCAn6aCB6Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yiq6ZmkJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCB0ZXh0ID0gdGFnZ2luZ19wYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdGNvbnN0IHhmZCA9IC8oPzpcXHtcXHsoW3JzYWlmdGNtdl1mZHxtZDF8cHJvcG9zZWQgZGVsZXRpb24pW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0eGZkICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOebuOWFs+aooeadv3t7JywgJ+WIqumZpOebuOmXnOaooeadv3t7JykgK1xuXHRcdFx0XHRcdFx0XHR4ZmRbMV0gK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J3195bey6KKr572u5LqO6aG16Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz57un57ut5o+Q5oql77yfJyxcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7mlrzpoIHpnaLkuK3vvIzmgqjmmK/lkKbku43mg7Pnubznuozmj5DloLHvvJ8nXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bqf6K6o6K6644CCJywgJ+mggemdouW3suiiq+aPkOS6pOiHs+WtmOW7ouiojuirluOAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgY29weXZpbyA9IC8oPzpcXHtcXHtcXHMqKGNvcHl2aW8pW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoY29weXZpbykge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5Lit5bey5pyJ6JGX5L2c5p2D6aqM6K+B5qih5p2/44CCJywgJ+mggemdouS4reW3suacieiRl+S9nOasiumpl+itieaooeadv+OAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFmZC5tYWluKHRhZ2dpbmdfcGFnZSk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0ZmZkOiB7XG5cdFx0XHRtYWluOiAodGFnZ2luZ19wYWdlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHRhZ2dpbmdfcGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC50YWdnaW5nSW1hZ2UodGFnZ2luZ19wYWdlKTtcblx0XHRcdFx0Ly8gQWRkaW5nIGRpc2N1c3Npb25cblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYXJhbXMubG9ncGFnZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeiuqOiuuuWIsOW9k+aXpeWIl+ihqCcsICfliqDlhaXoqI7oq5bliLDnlbbml6XliJfooagnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC50b2RheXNMaXN0KTtcblx0XHRcdFx0Ly8gTm90aWZpY2F0aW9uIHRvIGZpcnN0IGNvbnRyaWJ1dG9yXG5cdFx0XHRcdGlmIChwYXJhbXMubm90aWZ5KSB7XG5cdFx0XHRcdFx0Ly8gRGlzYWxsb3cgd2FybmluZyB5b3Vyc2VsZlxuXHRcdFx0XHRcdGlmIChwYXJhbXMuY3JlYXRvciA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBwYXJhbXMuY3JlYXRvcn3vvIlgLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOWIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICfmgqjlu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgdGFsa1BhZ2VOYW1lID0gYFVzZXIgdGFsazoke3BhcmFtcy5jcmVhdG9yfWA7XG5cdFx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KCdzdWJzdDonLCBgaWR3fEZpbGU6JHttdy5jb25maWcuZ2V0KCd3Z1RpdGxlJyl9fX1gLCAnLS1+ficsICd+ficpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KG5vdGlmeXRleHQpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShg6YCa55+l77ya5paH5Lu2W1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXeWtmOW6n+iuqOiuuuaPkOWQjWApO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0dXNlcnRhbGtwYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHRcdC8vIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nLCBpZiB0aGUgdXNlciBoYXMgZW5hYmxlZCBpdFxuXHRcdFx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFkZFRvTG9nKHBhcmFtcywgcGFyYW1zLmNyZWF0b3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBvciwgaWYgbm90IG5vdGlmeWluZywgYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2cgd2l0aG91dCB0aGUgaW5pdGlhbCBjb250cmlidXRvcidzIG5hbWVcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZGRUb0xvZyhwYXJhbXMsIG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0dGFnZ2luZ0ltYWdlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KFxuXHRcdFx0XHRcdGB7e2lmZHwke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KHBhcmFtcy54ZmRyZWFzb24pfXxkYXRlPXt7YC5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGAjdGltZTpjfX19fVxcbiR7dGV4dH1gXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn5paH5Lu25a2Y5bqf6K6o6K6677yaW1snLCAn5qqU5qGI5a2Y5bui6KiO6KuW77yaW1snKSArIHBhcmFtcy5sb2dwYWdlfSMke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWBcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hQYWdlJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTsgLy8gaXQgbWlnaHQgYmUgcG9zc2libGUgZm9yIGEgZmlsZSB0byBleGlzdCB3aXRob3V0IGEgZGVzY3JpcHRpb24gcGFnZVxuXHRcdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHRcdH0sXG5cdFx0XHR0b2RheXNMaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHQvLyBjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEFwcGVuZFRleHQoXG5cdFx0XHRcdFx0J1xcbnt7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGBJZmRJdGVtfEZpbGVuYW1lPSR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfXxVcGxvYWRlcj0ke1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMuY3JlYXRvclxuXHRcdFx0XHRcdFx0fXxSZWFzb249JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0UmVhc29uVGV4dChwYXJhbXMueGZkcmVhc29uKX19fS0tfn5gLmNvbmNhdCgnfn4nKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShg5Yqg5YWlW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWApO1xuXHRcdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd4ZmRXYXRjaERpc2N1c3Npb24nKSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRwYWdlb2JqLmFwcGVuZCgoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IG51bGw7IC8vIGFueSBlcnJvcnMgZnJvbSBub3cgb24gZG8gbm90IG5lZWQgdG8gcHJpbnQgdGhlIHJhdGlvbmFsZSwgYXMgaXQgaXMgc2FmZWx5IHNhdmVkIG9uLXdpa2lcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHRsb29rdXBDcmVhdGlvbjogKHRhcmdldF9wYWdlKSA9PiB7XG5cdFx0XHRcdHRhcmdldF9wYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gdGFyZ2V0X3BhZ2UuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRcdHBhcmFtcy5jcmVhdG9yID0gdGFyZ2V0X3BhZ2UuZ2V0Q3JlYXRvcigpO1xuXHRcdFx0XHQvLyBUYWdnaW5nIGZpbGVcblx0XHRcdFx0Y29uc3QgdGFnZ2luZ19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXlrZjlup/orqjorrrmqKHmnb/liLDmlofku7bmj4/ov7DpobUnLCAn5Yqg5YWl5a2Y5bui6KiO6KuW5qih5p2/5Yiw5qqU5qGI5o+P6L+w6aCBJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KGZhbHNlKTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHR0YWdnaW5nX3BhZ2UubG9hZChUd2lua2xlLnhmZC5jYWxsYmFja3MuZmZkLnRyeVRhZ2dpbmcpO1xuXHRcdFx0fSxcblx0XHRcdHRyeVRhZ2dpbmc6ICh0YWdnaW5nX3BhZ2UpID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSB0YWdnaW5nX3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0XHRpZiAoIXRhZ2dpbmdfcGFnZS5leGlzdHMoKSkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yig6ZmkJywgJ+mggemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIqumZpCcpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGV4dCA9IHRhZ2dpbmdfcGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCB4ZmQgPSAvKD86XFx7XFx7KFtyc2FpZnRjbXZdZmR8bWQxfHByb3Bvc2VkIGRlbGV0aW9uKVtee31dKj9cXH1cXH0pL2kuZXhlYyh0ZXh0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHhmZCAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfliKDpmaTnm7jlhbPmqKHmnb97eycsICfliKrpmaTnm7jpl5zmqKHmnb97eycpICtcblx0XHRcdFx0XHRcdFx0eGZkWzFdICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruS6jumhtemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+e7p+e7reaPkOaKpe+8nycsXG5cdFx0XHRcdFx0XHRcdFx0J3195bey6KKr572u5pa86aCB6Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz57m857qM5o+Q5aCx77yfJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+mhtemdouW3suiiq+aPkOS6pOiHs+WtmOW6n+iuqOiuuuOAgicsICfpoIHpnaLlt7Looqvmj5DkuqToh7PlrZjlu6LoqI7oq5bjgIInKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5mZmQubWFpbih0YWdnaW5nX3BhZ2UpO1xuXHRcdFx0fSxcblx0XHR9LFxuXHRcdGFkZFRvTG9nOiAocGFyYW1zLCBpbml0aWFsQ29udHJpYikgPT4ge1xuXHRcdFx0Y29uc3QgZWRpdHN1bW1hcnkgPVxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iusOW9leWvuVtbJywgJ+iomOmMhOWwjVtbJykgK1xuXHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ11d55qE5a2Y5bqf6K6o6K665o+Q5ZCNJywgJ11d55qE5a2Y5bui6KiO6KuW5o+Q5ZCNJyk7XG5cdFx0XHRjb25zdCB1c2wgPSBuZXcgTW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyKFR3aW5rbGUuZ2V0UHJlZigneGZkTG9nUGFnZU5hbWUnKSk7XG5cdFx0XHR1c2wuaW5pdGlhbFRleHQgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdGDov5nmmK/or6XnlKjmiLfkvb/nlKhbW0g6VFd8VHdpbmtsZV1d55qE5o+Q5Yig5qih5Z2X5YGa5Ye655qEW1tMSUI6WEZEfOWtmOW6n+iuqOiuul1d5o+Q5ZCN5YiX6KGo44CCXFxuXFxu6Iul5oKo5LiN5YaN5oOz5L+d55WZ5q2k5pel5b+X77yM6K+35ZyoW1ske1R3aW5rbGUuZ2V0UHJlZihcblx0XHRcdFx0XHQnY29uZmlnUGFnZSdcblx0XHRcdFx0KX185Y+C5pWw6K6+572uXV3kuK3lhbPmjonvvIzlubbkvb/nlKhbW0xJQjpDU0QjTzF8Q1NEIE8xXV3mj5DkuqTlv6vpgJ/liKDpmaTjgIJgLFxuXHRcdFx0XHRg6YCZ5piv6Kmy5L2/55So6ICF5L2/55SoW1tIOlRXfFR3aW5rbGVdXeeahOaPkOWIquaooeWhiuWBmuWHuueahFtbTElCOlhGRHzlrZjlu6LoqI7oq5ZdXeaPkOWQjeWIl+ihqOOAglxcblxcbuiLpeaCqOS4jeWGjeaDs+S/neeVmeatpOaXpeiqjO+8jOiri+WcqFtbJHtUd2lua2xlLmdldFByZWYoXG5cdFx0XHRcdFx0J2NvbmZpZ1BhZ2UnXG5cdFx0XHRcdCl9fOWBj+WlveioreWuml1d5Lit6Zec5o6J77yM5Lim5L2/55SoW1tMSUI6Q1NEI08xfENTRCBPMV1d5o+Q5Lqk5b+r6YCf5Yiq6Zmk44CCYFxuXHRcdFx0KTtcblx0XHRcdGxldCB4ZmRDYXROYW1lO1xuXHRcdFx0c3dpdGNoIChwYXJhbXMueGZkY2F0KSB7XG5cdFx0XHRcdGNhc2UgJ2RlbGV0ZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5ZCI5bm25YiwJywgJ+WQiOS9teWIsCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRcdHhmZENhdE5hbWUgPSB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lsI/lsI/kvZzlk4Hmj5DliKAnLCAn5om55qyh5bCP5bCP5L2c5ZOB5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2JhdGNoJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5paH5Lu25a2Y5bqf6K6o6K66JywgJ+aqlOahiOWtmOW7ouiojuirlicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgYSBsb2dnZWQgZmlsZSBpcyBkZWxldGVkIGJ1dCBleGlzdHMgb24gcmVtb3RlIHJlcG8sIHRoZSB3aWtpbGluayB3aWxsIGJlIGJsdWUsIHNvIHByb3ZpZGUgYSBsaW5rIHRvIHRoZSBsb2dcblx0XHRcdGxldCBhcHBlbmRUZXh0ID0gYCMgW1s6JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBg77yIW3t7ZnVsbHVybDpTcGVjaWFsOkxvZ3xwYWdlPSR7bXcudXRpbC53aWtpVXJsZW5jb2RlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKVxuXHRcdFx0XHQpfX19ICR7d2luZG93LndnVUxTKCfml6Xlv5cnLCAn5pel6KqMJyl9Xe+8iWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9IGDvvJoke3hmZENhdE5hbWV9YDtcblx0XHRcdGlmIChwYXJhbXMueGZkY2F0ID09PSAnbWVyZ2UnKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYFtbOiR7cGFyYW1zLm1lcmdlaW50b31dXWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9ICfjgIInO1xuXHRcdFx0aWYgKHBhcmFtcy54ZmRyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn5Y6f5Yig6Zmk55CG5o2uJywgJ+WOn+WIqumZpOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMueGZkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5md2Rjc2RyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn6L2s5Lqk55CG5o2uJywgJ+i9ieS6pOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMuZndkY3NkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGluaXRpYWxDb250cmliKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYO+8m+mAmuefpXt7dXNlcnwke2luaXRpYWxDb250cmlifX19YDtcblx0XHRcdH1cblx0XHRcdGFwcGVuZFRleHQgKz0gJyB+ficuY29uY2F0KCd+ficsICd+XFxuJyk7XG5cdFx0XHR1c2wuY2hhbmdlVGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdHVzbC5sb2coYXBwZW5kVGV4dCwgZWRpdHN1bW1hcnkpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAocGFyYW1zLnhmZGNhdCA9PT0gJ21lcmdlJyAmJiBwYXJhbXMubWVyZ2VpbnRvLnRyaW0oKSA9PT0gJycpIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aPkOS+m+WQiOW5tuebruagh++8gScsICfoq4vmj5DkvpvlkIjkvbXnm67mqJnvvIEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGV4ZmQnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBwYXJhbXMueGZkcmVhc29uO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5vbkVycm9yKFR3aW5rbGUueGZkLnByaW50UmF0aW9uYWxlKTtcblx0XHRpZiAoIXBhcmFtcy5jYXRlZ29yeSkge1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKCfplJnor68nLCAn5pyq5a6a5LmJ55qE5Yqo5L2cJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCB0YXJnZXRfcGFnZTtcblx0XHRjb25zdCBkYXRlID0gbmV3IE1vcmViaXRzLmRhdGUoKTsgLy8gWFhYOiBhdm9pZCB1c2Ugb2YgY2xpZW50IGNsb2NrLCBzdGlsbCB1c2VkIGJ5IFRmRCwgRmZEIGFuZCBDZkRcblx0XHRzd2l0Y2ggKHBhcmFtcy5jYXRlZ29yeSkge1xuXHRcdFx0Y2FzZSAnYWZkJzpcblx0XHRcdFx0Ly8gQUZEXG5cdFx0XHRcdHBhcmFtcy5sb2dwYWdlID0gYExJQl90YWxrOuWtmOW6n+iuqOiuui/orrDlvZUvJHtkYXRlLmZvcm1hdCgnWVlZWS9NTS9ERCcsICd1dGMnKX1gO1xuXHRcdFx0XHRwYXJhbXMubG9nbm9taW5hdGlvbiA9XG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdsb2dYZmROb21pbmF0aW9ucycpICYmXG5cdFx0XHRcdFx0IVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblhmZE5vbWluYXRpb24nKS5pbmNsdWRlcyhwYXJhbXMueGZkY2F0KTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0XHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcGFyYW1zLmxvZ3BhZ2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5a6a5ZCR5Yiw6K6o6K666aG1Jyxcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5paw5bCO5ZCR5Yiw6KiO6KuW6aCBJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHQvLyBMb29rdXAgY3JlYXRpb25cblx0XHRcdFx0dGFyZ2V0X3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPlumhtemdouWIm+W7uuS/oeaBrycsICflj5blvpfpoIHpnaLlu7rnq4vos4foqIonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0YXJnZXRfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpID09PSAnd2lraXRleHQnKSB7XG5cdFx0XHRcdFx0dGFyZ2V0X3BhZ2Uuc2V0TG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yKHRydWUpOyAvLyBMb29rIGZvciBhdXRob3Igb2YgZmlyc3Qgbm9uLXJlZGlyZWN0IHJldmlzaW9uXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0YXJnZXRfcGFnZS5sb29rdXBDcmVhdGlvbihUd2lua2xlLnhmZC5jYWxsYmFja3MuYWZkLmxvb2t1cENyZWF0aW9uKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5yZW1vdmVDaGVja3BvaW50KCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmZkJzoge1xuXHRcdFx0XHQvLyBGRkRcblx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UgPSBgTElCX3RhbGs65a2Y5bqf6K6o6K66L+iusOW9lS8ke2RhdGUuZm9ybWF0KCdZWVlZL01NL0REJywgJ3V0YycpfWA7XG5cdFx0XHRcdHBhcmFtcy5sb2dub21pbmF0aW9uID1cblx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ2xvZ1hmZE5vbWluYXRpb25zJykgJiYgIVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblhmZE5vbWluYXRpb24nKS5pbmNsdWRlcygnZmZkJyk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdFx0XHQvLyBVcGRhdGluZyBkYXRhIGZvciB0aGUgYWN0aW9uIGNvbXBsZXRlZCBldmVudFxuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHBhcmFtcy5sb2dwYWdlO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aPkOWQjeWujOaIkO+8jOmHjeWumuWQkeWIsOiuqOiuuumhtScsXG5cdFx0XHRcdFx0J+aPkOWQjeWujOaIkO+8jOmHjeaWsOWwjuWQkeWIsOiojuirlumggSdcblx0XHRcdFx0KTtcblx0XHRcdFx0Ly8gTG9va3VwIGNyZWF0aW9uXG5cdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6aG16Z2i5Yib5bu65L+h5oGvJywgJ+WPluW+l+mggemdouW7uueri+izh+ioiicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldExvb2t1cE5vblJlZGlyZWN0Q3JlYXRvcih0cnVlKTsgLy8gTG9vayBmb3IgYXV0aG9yIG9mIGZpcnN0IG5vbi1yZWRpcmVjdCByZXZpc2lvblxuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9va3VwQ3JlYXRpb24oVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC5sb29rdXBDcmVhdGlvbik7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdG13Lm5vdGlmeSgndHdpbmtsZXhmZO+8muacquWumuS5ieeahOexu+WIqycsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXhmZCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUueGZkLCAneGZkJyk7XG59KSgpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWltYWdlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWltYWdlKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWltYWdlLmpzOiBJbWFnZSBDU0QgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkRJXCIpXG5cdCAqIEFjdGl2ZSBvbjogTG9jYWwgbm9ucmVkaXJlY3QgZmlsZSBwYWdlcyAobm90IG9uIFNoYXJlKVxuXHQgKi9cblx0VHdpbmtsZS5pbWFnZSA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LXNoYXJlZHVwbG9hZCcpICYmXG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctaW1hZ2VwYWdlLXNlY3Rpb24tZmlsZWhpc3RvcnknKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCflm77mnYMnLCAn5ZyW5qyKJyksXG5cdFx0XHRcdCd0dy1kaScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5Lqk5paH5Lu25b+r6YCf5Yig6ZmkJywgJ+aPkOS6pOaqlOahiOW/q+mAn+WIqumZpCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzMwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmlofku7blv6vpgJ/liKDpmaTlgJnpgIknLCAn5qqU5qGI5b+r6YCf5Yiq6Zmk5YCZ6YG4JykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmnaHkvosnLCAn5b+r6YCf5Yiq6Zmk5qKd5L6LJyksICdMSUI6Q1NEJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflm77mnYPorr7nva4nLCAn5ZyW5qyK6Kit5a6aJyksICdIOlRXL1BSRUYjaW1hZ2UnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjaW1hZ2UnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmltYWdlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCa55+l5LiK5Lyg6ICFJywgJ+mAmuefpeS4iuWCs+iAhScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5oKo5Zyo5qCH6K6w5ZCM5LiA55So5oi355qE5b6I5aSa5paH5Lu277yM6K+35Y+W5raI5q2k5aSN6YCJ5qGG5Lul6YG/5YWN5Y+R6YCB6L+H5aSa5raI5oGv44CCQ1NEIEY15rC46L+c5LiN5Lya6YCa55+l44CCJyxcblx0XHRcdFx0XHRcdCfoi6XmgqjlnKjmqJnoqJjlkIzkuIDkvb/nlKjogIXnmoTlvojlpJrmqpTmoYjvvIzoq4vlj5bmtojmraTmoLjlj5bmlrnloYrku6Xpgb/lhY3nmbzpgIHpgY7lpJroqIrmga/jgIJDU0QgRjXmsLjpgaDkuI3mnIPpgJrnn6XjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmdldFByZWYoJ25vdGlmeVVzZXJPbkRlbGknKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Y29uc3QgZmllbGQgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6ZyA6KaB55qE5Yqo5L2cJywgJ+mcgOimgeeahOWLleS9nCcpLFxuXHRcdH0pO1xuXHRcdGZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAncmFkaW8nLFxuXHRcdFx0bmFtZTogJ3R5cGUnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5piO5pi+5L615p2D5LmL5paH5Lu277yIQ1NEIEYx77yJJywgJ+aYjumhr+S+teasiuS5i+aqlOahiO+8iENTRCBGMe+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm8gcGVybWlzc2lvbicsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S4iuS8oOiAheWuo+ensOaLpeacie+8jOiAjOWcqOWFtuS7luadpea6kOaJvuWIsOeahOaWh+S7tu+8jOaIluS7juS+teadg+eahOadpea6kOiOt+WPlueahOaWh+S7tuOAgicsXG5cdFx0XHRcdFx0XHQn5LiK5YKz6ICF5a6j56ix5pOB5pyJ77yM6ICM5Zyo5YW25LuW5L6G5rqQ5om+5Yiw55qE5qqU5qGI77yM5oiW5b6e5L615qyK55qE5L6G5rqQ5Y+W5b6X55qE5qqU5qGI44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0XHRcdG5hbWU6ICdmMV9zb3VyY2UnLFxuXHRcdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S+teadg+adpea6kO+8micsICfkvrXmrIrkvobmupDvvJonKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2l5rqQ5LiN5piO77yIQ1NEIEYz77yJJywgJ+S+hua6kOS4jeaYju+8iENTRCBGM++8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm8gc291cmNlJyxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5pys5paH5Lu25bm25pyq5rOo5piO5Y6f5aeL5Ye65aSEJywgJ+acrOaqlOahiOS4puacquiou+aYjuWOn+Wni+WHuuiZlScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq55+l6JGX5L2c5p2D5L+h5oGv77yIQ1NEIEYz77yJJywgJ+acquefpeiRl+S9nOasiuizh+ioiu+8iENTRCBGM++8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm8gbGljZW5zZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmnKzmlofku7bnvLrlsJHokZfkvZzmnYPkv6Hmga8nLCAn5pys5qqU5qGI57y65bCR6JGX5L2c5qyK6LOH6KiKJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfokZfkvZzmnYPml6Dms5Xooqvmn6Xor4HvvIhDU0QgRjPvvIknLCAn6JGX5L2c5qyK54Sh5rOV6KKr5p+l6K2J77yIQ1NEIEYz77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBsaWNlbnNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+acrOaWh+S7tuWjsOensOeahOiRl+S9nOadg+S/oeaBr+aXoOazleiiq+afpeivgScsICfmnKzmqpTmoYjogbLnqLHnmoTokZfkvZzmrIros4foqIrnhKHms5Xooqvmn6XorYknKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WPr+iiq+abv+S7o+eahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tu+8iENTRCBGNO+8iScsICflj6/ooqvmm7/ku6PnmoTpnZ7oh6rnlLHokZfkvZzmrIrmqpTmoYjvvIhDU0QgRjTvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3JlcGxhY2VhYmxlIGZhaXIgdXNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5paH5Lu25LuF55So5LqO5o+P6L+w44CB6K+G5Yir5oiW6K+E6K665paH5Lu25Lit5bGV56S655qE5LqL54mp77yM5oiW5LuF55So5L2c5o+S5Zu+77yM5LiU5ruh6Laz5Lul5LiL5Zub5Liq5p2h5Lu25LmL5LiA44CC6Iul57uZ5Ye65LqG5YW25LuW5ZCI55CG5L2/55So5L6d5o2u77yM5LiN6YCC55So5pys5p2h44CC5aaC5a+55paH5Lu255qE5Y+v5pu/5Luj5oCn5a2Y5Zyo5LqJ6K6u77yM5bqU5Lqk5paH5Lu25a2Y5bqf6K6o6K665aSE55CG44CC5pys5p2h5Lmf5LiN6YCC55So5LqO5q2j5Zyo5oiW5pu+57uP55Sx5paH5Lu25a2Y5bqf6K6o6K665aSE55CG6L+H55qE5paH5Lu244CCJyxcblx0XHRcdFx0XHRcdCfmqpTmoYjlg4XnlKjmlrzmj4/ov7DjgIHovqjorZjmiJboqZXoq5bmqpTmoYjkuK3lsZXnpLrnmoTkuovnianvvIzmiJblg4XnlKjkvZzmj5LlnJbvvIzkuJTmu7/otrPku6XkuIvlm5vlgIvmop3ku7bkuYvkuIDjgILoi6Xntablh7rkuoblhbbku5blkIjnkIbkvb/nlKjkvp3mk5rvvIzkuI3pgannlKjmnKzmop3jgILlpoLlsI3mqpTmoYjnmoTlj6/mm7/ku6PmgKflrZjlnKjniK3orbDvvIzmh4nkuqTmqpTmoYjlrZjlu6LoqI7oq5bomZXnkIbjgILmnKzmop3kuZ/kuI3pgannlKjmlrzmraPlnKjmiJbmm77ntpPnlLHmqpTmoYjlrZjlu6LoqI7oq5bomZXnkIbpgY7nmoTmqpTmoYjjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRcdFx0bmFtZTogJ2Y0X3R5cGUnLFxuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgILnlKjnsbvlnovvvJonLCAn6YGp55So6aGe5Yil77yaJyksXG5cdFx0XHRcdFx0XHRzdHlsZTogJ3dpZHRoOiA4NSU7Jyxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+acieWFtuS7luiHqueUseiRl+S9nOadg+aWh+S7tuWxleekuuebuOWQjOeahOS6i+eJqScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn5pyJ5YW25LuW6Ieq55Sx6JGX5L2c5qyK5qqU5qGI5bGV56S655u45ZCM55qE5LqL54mpJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn5paH5Lu25o+P6L+w55qE5piv5Zyo5LiW5oiW5YGH5a6a5Zyo5LiW5Lq654mp44CB5LuN54S25a2Y5Zyo55qE5bu6562R44CB5a6k5aSW6ZuV5aGR5oiW5LuN54S25Zyo5ZSu55qE5ZWG5ZOB77yM5LiU6aKE6K6h6Ieq6KGM5ouN5pGE55qE54Wn54mH5LiN5Y+X5LuW5Lq66JGX5L2c5p2D5L+d5oqkJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfmqpTmoYjmj4/ov7DnmoTmmK/lnKjkuJbmiJblgYflrprlnKjkuJbkurrnianjgIHku43nhLblrZjlnKjnmoTlu7rnr4njgIHlrqTlpJbpm5XloZHmiJbku43nhLblnKjllK7nmoTllYblk4HvvIzkuJTpoJDoqIjoh6rooYzmi43mlJ3nmoTnm7jniYfkuI3lj5fku5bkurrokZfkvZzmrIrkv53orbcnXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJzInLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5paH5Lu25Li65Y+v6Ieq6KGM57uY5Yi255qE5Zyw5Zu+5oiW5Zu+6KGoJywgJ+aqlOahiOeCuuWPr+iHquihjOe5quijveeahOWcsOWcluaIluWcluihqCcpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnMycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+aWh+S7tuadpeiHquWVhuS4muWbvueJh+acuuaehO+8iOWmgkdldHR577yJJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfmqpTmoYjkvoboh6rllYbmpa3lnJbniYfmqZ/mp4vvvIjlpoJHZXR0ee+8iSdcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnNCcsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tu+8iENTRCBGNe+8iScsXG5cdFx0XHRcdFx0XHQn5rKS5pyJ6KKr5qKd55uu5L2/55So55qE6Z2e6Ieq55Sx6JGX5L2c5qyK5qqU5qGI77yIQ1NEIEY177yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6ICdvcnBoYW5lZCBmYWlyIHVzZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+acrOaWh+S7tuS4uumdnuiHqueUseiRl+S9nOadg+S4lOayoeacieiiq+adoeebruS9v+eUqCcsXG5cdFx0XHRcdFx0XHQn5pys5qqU5qGI54K66Z2e6Ieq55Sx6JGX5L2c5qyK5LiU5rKS5pyJ6KKr5qKd55uu5L2/55SoJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tu+8iENTRCBGNe+8iScsXG5cdFx0XHRcdFx0XHQn5rKS5pyJ5aGr5a+r5Lu75L2V5ZCI55CG5L2/55So5L6d5pOa55qE6Z2e6Ieq55Sx6JGX5L2c5qyK5qqU5qGI77yIQ1NEIEY177yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBmYWlyIHVzZSByYXRpb25hbGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkuI3pgILnlKjkuo7mnInkuonorq7kvYblrozmlbTnmoTlkIjnkIbkvb/nlKjkvp3mja7jgILoi6XpnZ7oh6rnlLHokZfkvZzmnYPmlofku7blj6rmnInpg6jliIbmnaHnm67nmoTkvb/nlKjkvp3mja7vvIzkvYblkIzml7booqvkvb/nlKjkuo7mnKrmj5DkvpvlkIjnkIbkvb/nlKjkvp3mja7nmoTmnaHnm67vvIzliJnmnKzmlrnpkojkuZ/kuI3pgILnlKjjgIInLFxuXHRcdFx0XHRcdFx0J+S4jemBqeeUqOaWvOacieeIreitsOS9huWujOaVtOeahOWQiOeQhuS9v+eUqOS+neaTmuOAguiLpemdnuiHqueUseiRl+S9nOasiuaqlOahiOWPquaciemDqOWIhuaineebrueahOS9v+eUqOS+neaTmu+8jOS9huWQjOaZguiiq+S9v+eUqOaWvOacquaPkOS+m+WQiOeQhuS9v+eUqOS+neaTmueahOaineebru+8jOWJh+acrOaWuemHneS5n+S4jemBqeeUqOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBXZSBtdXN0IGluaXQgdGhlIHBhcmFtZXRlcnNcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQudHlwZVswXS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRsZXQgdHlwZTtcblx0XHRsZXQgbm90aWZ5ID0gZXZlbnQudGFyZ2V0Lm5vdGlmeS5jaGVja2VkO1xuXHRcdGNvbnN0IHR5cGVzID0gZXZlbnQudGFyZ2V0LnR5cGU7XG5cdFx0Zm9yIChjb25zdCB0eXBlXyBvZiB0eXBlcykge1xuXHRcdFx0aWYgKHR5cGVfLmNoZWNrZWQpIHtcblx0XHRcdFx0dHlwZSA9IHR5cGVfLnZhbHVlcztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCBjc2Rjcml0O1xuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSAnbm8gc291cmNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmMyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbm8gbGljZW5zZSc6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjMnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29ycGhhbmVkIGZhaXIgdXNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmNSc7XG5cdFx0XHRcdG5vdGlmeSA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ25vIHBlcm1pc3Npb24nOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2YxJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdubyBmYWlyIHVzZSByYXRpb25hbGUnOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2Y1Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdyZXBsYWNlYWJsZSBmYWlyIHVzZSc6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjQnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignVHdpbmtsZS5pbWFnZS5jYWxsYmFjay5ldmFsdWF0Ze+8muacquefpeadoeasvicpO1xuXHRcdH1cblx0XHRjb25zdCBsb2dub21pbmF0aW9uID1cblx0XHRcdFR3aW5rbGUuZ2V0UHJlZignbG9nU3BlZWR5Tm9taW5hdGlvbnMnKSAmJlxuXHRcdFx0IVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nKS5pbmNsdWRlcyhjc2Rjcml0LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGNvbnN0IHRlbXBsYXRlbmFtZSA9IHR5cGU7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0dHlwZSxcblx0XHRcdHRlbXBsYXRlbmFtZSxcblx0XHRcdG5vcm1hbGl6ZWQ6IGNzZGNyaXQsXG5cdFx0XHRsb2dub21pbmF0aW9uLFxuXHRcdH07XG5cdFx0aWYgKGNzZGNyaXQgPT09ICdmMScpIHtcblx0XHRcdHBhcmFtcy5mMV9zb3VyY2UgPSBldmVudC50YXJnZXRbJ3R5cGUuZjFfc291cmNlJ10udmFsdWU7XG5cdFx0fVxuXHRcdGlmIChjc2Rjcml0ID09PSAnZjQnKSB7XG5cdFx0XHRjb25zdCBmNF90eXBlID0gZXZlbnQudGFyZ2V0Wyd0eXBlLmY0X3R5cGUnXS52YWx1ZTtcblx0XHRcdGlmICghZjRfdHlwZSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ0NTRCBGNO+8muivt+mAieaLqemAgueUqOexu+Wei+OAgicsICdDU0QgRjTvvJroq4vpgbjmk4fpgannlKjpoZ7liKXjgIInKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlaW1hZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cGFyYW1zLmY0X3R5cGUgPSBmNF90eXBlO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGV2ZW50LnRhcmdldCk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfmoIforrDlrozmiJAnLCAn5qiZ6KiY5a6M5oiQJyk7XG5cdFx0Ly8gVGFnZ2luZyBpbWFnZVxuXHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeWIoOmZpOagh+iusCcsICfliqDlhaXliKrpmaTmqJnoqJgnKVxuXHRcdCk7XG5cdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLnRhZ2dpbmdJbWFnZSk7XG5cdFx0Ly8gTm90aWZ5aW5nIHVwbG9hZGVyXG5cdFx0aWYgKG5vdGlmeSkge1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvb2t1cENyZWF0aW9uKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLnVzZXJOb3RpZmljYXRpb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBhZGQgdG8gQ1NEIGxvZyBpZiBkZXNpcmVkXG5cdFx0XHRpZiAobG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRwYXJhbXMuZnJvbURJID0gdHJ1ZTtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBudWxsKTtcblx0XHRcdH1cblx0XHRcdC8vIE5vIGF1dG8tbm90aWZpY2F0aW9uLCBkaXNwbGF5IHdoYXQgd2FzIGdvaW5nIHRvIGJlIGFkZGVkLlxuXHRcdFx0aWYgKHR5cGUgIT09ICdvcnBoYW5lZCBmYWlyIHVzZScpIHtcblx0XHRcdFx0Y29uc3Qgbm90ZURhdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTtcblx0XHRcdFx0bm90ZURhdGEuYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXG5cdFx0XHRcdFx0XHQne3snLmNvbmNhdCgnc3Vic3Q6JywgYFVwbG9hZHZpb25vdGljZXwke01vcmViaXRzLnBhZ2VOYW1lTm9ybX19fS0tfn5gLCAnfn4nKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0J+aPkOekuicsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0Wyfov5nkupvlhoXlrrnlupTotLTov5vkuIrkvKDogIXlr7nor53pobXvvJonLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpLCBub3RlRGF0YV0sXG5cdFx0XHRcdFx0XHRbJ+mAmeS6m+WFp+WuueaHieiyvOmAsuS4iuWCs+iAheiojuirlumgge+8micsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyksIG5vdGVEYXRhXVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzID0ge1xuXHRcdHRhZ2dpbmdJbWFnZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdC8vIHJlbW92ZSB0YWcgLSBkZWxldGlvbi10YWdnZWQgZmlsZXMgY2Fubm90IGJlIG1vdmVkXG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHQvXFx7XFx7KG10Y3woY29weSB8bW92ZSApP3RvID8oc2hhcmV8Y29tbW9ucyl8bW92ZSB0byAocWl1d2VuIHNoYXJlfHdpa2ltZWRpYSBjb21tb25zKXxjb3B5IHRvIChxaXV3ZW4gc2hhcmV8d2lraW1lZGlhIGNvbW1vbnMpKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHQnJ1xuXHRcdFx0KTtcblx0XHRcdC8vIEFkZGluZyBkaXNjdXNzaW9uXG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgIT09ICdvcnBoYW5lZCBmYWlyIHVzZScpIHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnTElCX3RhbGs65a2Y5bqf6K6o6K66L+aWh+S7tuW/q+mAn+WIoOmZpOaPkOaKpScsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXlv6vpgJ/liKDpmaTorrDlvZXpobknLCAn5Yqg5YWl5b+r6YCf5Yiq6Zmk6KiY6YyE6aCFJylcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLmltYWdlTGlzdCk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgdGFnID0gJyc7XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ29ycGhhbmVkIGZhaXIgdXNlJzpcblx0XHRcdFx0XHR0YWcgPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgJ29ycGhhbmVkIGZhaXIgdXNlfX1cXG4nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbm8gcGVybWlzc2lvbic6XG5cdFx0XHRcdFx0dGFnID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGAke3BhcmFtcy50ZW1wbGF0ZW5hbWV9L2F1dG98MT0ke3BhcmFtcy5mMV9zb3VyY2Vcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL2h0dHAvZywgJyYjMTA0O3R0cCcpXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICdcXG4nKVxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgvXlxccyooW14qXSkvZ20sICcqICQxJylcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL15cXCogJC9tLCAnJyl9fX1cXG5gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmVwbGFjZWFibGUgZmFpciB1c2UnOlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfDE9JHtwYXJhbXMuZjRfdHlwZX19fVxcbmApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfX1cXG5gKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNvbnN0IHRleHROb1NkID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHQvXFx7XFx7XFxzKihkYigtXFx3Kik/fGR8ZGVsZXRlfCg/Omhhbmd8aG9sZClbLSBdP29uKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdCcnXG5cdFx0XHQpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9TZCAmJlxuXHRcdFx0XHRjb25maXJtKHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeenu+mZpOWXju+8nycpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRleHQgPSB0ZXh0Tm9TZDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGFnICsgdGV4dCk7XG5cdFx0XHRsZXQgZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpO+8iCcsICfoq4vmsYLlv6vpgJ/liKrpmaTvvIgnKTtcblx0XHRcdGVkaXRTdW1tYXJ5ICs9IGBbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9fENTRCAke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9XV1gO1xuXHRcdFx0ZWRpdFN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGVkaXRTdW1tYXJ5KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hQYWdlJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHRcdHVzZXJOb3RpZmljYXRpb246IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgaW5pdGlhbENvbnRyaWIgPSBwYWdlb2JqLmdldENyZWF0b3IoKTtcblx0XHRcdC8vIGRpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdGlmIChpbml0aWFsQ29udHJpYiA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdHBhZ2VvYmpcblx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0Lndhcm4oYOaCqO+8iCR7aW5pdGlhbENvbnRyaWJ977yJJHt3aW5kb3cud2dVTFMoJ+WIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICflu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKX1gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtpbml0aWFsQ29udHJpYn1gO1xuXHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpeS4iuS8oOiAhScsICfpgJrnn6XkuIrlgrPogIUnKX3vvIgke2luaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRcdGBEaS0ke3BhcmFtcy50ZW1wbGF0ZW5hbWV9LW5vdGljZXwxPSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19LS1+fmAsXG5cdFx0XHRcdFx0J35+J1xuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6YCa55+l77ya5paH5Lu2W1snLCAn6YCa55+l77ya5qqU5qGIW1snKSArXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeW/q+mAn+WIoOmZpOaPkOWQjScsICddXeW/q+mAn+WIqumZpOaPkOWQjScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRwYXJhbXMuZnJvbURJID0gdHJ1ZTtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBpbml0aWFsQ29udHJpYik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbWFnZUxpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gY29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQoYCR7dGV4dH1cXG4qIFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dLS1+fmAuY29uY2F0KCd+ficpKTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmltYWdlLCAnaW1hZ2UnKTtcbn0pKCk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHtpbml0TXdBcGl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXByb3RlY3QuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlcHJvdGVjdCgkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZXByb3RlY3QuanM6IFByb3RlY3QvUlBQIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJQUFwiL1wiUlBQXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwsIG5vbi1NZWRpYVdpa2kgcGFnZXNcblx0ICovXG5cdC8vIE5vdGU6IGEgbG90IG9mIGNvZGUgaW4gdGhpcyBtb2R1bGUgaXMgcmUtdXNlZC9jYWxsZWQgYnkgYmF0Y2hwcm90ZWN0LlxuXHRUd2lua2xlLnByb3RlY3QgPSAoKSA9PiB7XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPCAwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDgpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjayxcblx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5oqkJywgJ+S/neittycpLFxuXHRcdFx0J3R3LXJwcCcsXG5cdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcCA/IHdpbmRvdy53Z1VMUygn5L+d5oqk6aG16Z2iJywgJ+S/neitt+mggemdoicpIDogd2luZG93LndnVUxTKCfor7fmsYLkv53miqTpobXpnaInLCAn6KuL5rGC5L+d6K236aCB6Z2iJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MjAsIDUzMCk7XG5cdFx0V2luZG93LnNldFRpdGxlKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3Bcblx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aWveihjOaIluivt+axguS/neaKpOmhtemdoicsICfmlr3ooYzmiJboq4vmsYLkv53orbfpoIHpnaInKVxuXHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2iJywgJ+iri+axguS/neitt+mggemdoicpXG5cdFx0KTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5L+d5oqk5p2h5L6LJywgJ+S/neitt+aineS+iycpLCAnTElCOlBST1QnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+S/neaKpOiuvue9ricsICfkv53orbfoqK3lrponKSwgJ0g6VFcvUFJFRiNwcm90ZWN0Jyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3Byb3RlY3QnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGNvbnN0IGFjdGlvbmZpZWxkID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aTjeS9nOexu+WeiycsICfmk43kvZzpoZ7liKUnKSxcblx0XHR9KTtcblx0XHRpZiAoTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdyYWRpbycsXG5cdFx0XHRcdG5hbWU6ICdhY3Rpb250eXBlJyxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VBY3Rpb24sXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTpobXpnaInLCAn5L+d6K236aCB6Z2iJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3Byb3RlY3QnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAncmFkaW8nLFxuXHRcdFx0bmFtZTogJ2FjdGlvbnR5cGUnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VBY3Rpb24sXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLkv53miqTpobXpnaInLCAn6KuL5rGC5L+d6K236aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdyZXF1ZXN0Jyxcblx0XHRcdFx0XHR0b29sdGlwOlxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfoi6Xmgqjmg7PlnKhMSUI6UkZQUOivt+axguS/neaKpOatpOmhtScsICfoi6Xmgqjmg7PlnKhMSUI6UkZQUOiri+axguS/neitt+atpOmggScpICtcblx0XHRcdFx0XHRcdChNb3JlYml0cy51c2VySXNTeXNvcCA/ICfogIzkuI3mmK/oh6rooYzlrozmiJDjgIInIDogJ+OAgicpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOS/neaKpOaooeadv+agh+iusOatpOmhtScsICfnlKjkv53orbfmqKHmnb/mqJnoqJjmraTpoIEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3RhZycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflj6/ku6XnlKjmraTkuLrpobXpnaLliqDkuIrlkIjpgILnmoTkv53miqTmqKHmnb/jgIInLCAn5Y+v5Lul55So5q2k54K66aCB6Z2i5Yqg5LiK5ZCI6YGp55qE5L+d6K235qih5p2/44CCJyksXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgPT09IDAgfHwgbXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICdTY3JpYnVudG8nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiAnMScsXG5cdFx0XHRuYW1lOiAnZmllbGQxJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICcyJyxcblx0XHRcdG5hbWU6ICdmaWVsZDInLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgY29udHJvbHNcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQuYWN0aW9udHlwZVswXS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0Ly8gZ2V0IGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCBhc3luY2hyb25vdXNseVxuXHRcdFR3aW5rbGUucHJvdGVjdC5mZXRjaFByb3RlY3Rpb25MZXZlbCgpO1xuXHR9O1xuXHQvLyBDdXN0b21pemFibGUgbmFtZXNwYWNlIGFuZCBGbGFnZ2VkUmV2cyBzZXR0aW5nc1xuXHQvLyBJbiB0aGVvcnkgaXQnZCBiZSBuaWNlIHRvIGhhdmUgcmVzdHJpY3Rpb25sZXZlbHMgZGVmaW5lZCBoZXJlLFxuXHQvLyBidXQgdGhvc2UgYXJlIG9ubHkgYXZhaWxhYmxlIHZpYSBhIHNpdGVpbmZvIHF1ZXJ5XG5cdC8vIExpbWl0IHRlbXBsYXRlIGVkaXRvcjsgYSBUd2lua2xlIHJlc3RyaWN0aW9uLCBub3QgYSBzaXRlIHNldHRpbmdcblx0Y29uc3QgaXNUZW1wbGF0ZSA9IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDEwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDgyODtcblx0Ly8gQ29udGFpbnMgdGhlIGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCBpbiBhbiBvYmplY3Rcblx0Ly8gT25jZSBmaWxsZWQsIGl0IHdpbGwgbG9vayBzb21ldGhpbmcgbGlrZTpcblx0Ly8geyBlZGl0OiB7IGxldmVsOiBcInN5c29wXCIsIGV4cGlyeTogPHNvbWUgZGF0ZT4sIGNhc2NhZGU6IHRydWUgfSwgLi4uIH1cblx0VHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzID0ge307XG5cdFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMgPSB7fTtcblx0VHdpbmtsZS5wcm90ZWN0LmZldGNoUHJvdGVjdGlvbkxldmVsID0gYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IGFwaSA9IGluaXRNd0FwaSgnbW9yZWJpdHMuanM7IFR3aW5rbGUvMS4xJyk7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdGluZGV4cGFnZWlkczogdHJ1ZSxcblx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRsaXN0OiAnbG9nZXZlbnRzJyxcblx0XHRcdFx0bGV0eXBlOiAncHJvdGVjdCcsXG5cdFx0XHRcdGxldGl0bGU6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0XHRpbnByb3A6ICdwcm90ZWN0aW9ufHdhdGNoZWQnLFxuXHRcdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdH07XG5cdFx0XHRjb25zdCBwcm90ZWN0RGF0YSA9IGF3YWl0IGFwaS5nZXQocGFyYW1zKTtcblx0XHRcdGNvbnN0IFtwYWdlaWRdID0gcHJvdGVjdERhdGEucXVlcnkucGFnZWlkcztcblx0XHRcdGNvbnN0IHBhZ2UgPSBwcm90ZWN0RGF0YS5xdWVyeS5wYWdlc1twYWdlaWRdO1xuXHRcdFx0Y29uc3QgY3VycmVudCA9IHt9O1xuXHRcdFx0Y29uc3QgcHJldmlvdXMgPSB7fTtcblx0XHRcdC8vIFNhdmUgcmVxdWVzdGVkIHBhZ2UncyB3YXRjaGVkIHN0YXR1cyBmb3IgbGF0ZXIgaW4gY2FzZSBuZWVkZWQgd2hlbiBmaWxpbmcgcmVxdWVzdFxuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQgPT09ICcnO1xuXHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIHBhZ2UucHJvdGVjdGlvbikge1xuXHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdGN1cnJlbnRbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdGxldmVsOiBwcm90ZWN0aW9uLmxldmVsLFxuXHRcdFx0XHRcdFx0ZXhwaXJ5OiBwcm90ZWN0aW9uLmV4cGlyeSxcblx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gT25seSB1c2UgdGhlIGxvZyBleGNlcHQgdW5wcm90ZWN0XG5cdFx0XHRpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAxICYmIHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5hY3Rpb24gIT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFtUd2lua2xlLnByb3RlY3QucHJldmlvdXNQcm90ZWN0aW9uTG9nXSA9IHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50cztcblx0XHRcdH0gZWxzZSBpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAyKSB7XG5cdFx0XHRcdFssIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2ddID0gcHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cucGFyYW1zLmRldGFpbHMpIHtcblx0XHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdFx0cHJldmlvdXNbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdFx0bGV2ZWw6IHByb3RlY3Rpb24ubGV2ZWwsXG5cdFx0XHRcdFx0XHRcdGV4cGlyeTogcHJvdGVjdGlvbi5leHBpcnksXG5cdFx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gc2hvdyB0aGUgcHJvdGVjdGlvbiBsZXZlbCBhbmQgbG9nIGluZm9cblx0XHRcdFR3aW5rbGUucHJvdGVjdC5oYXNQcm90ZWN0TG9nID0gISFwcm90ZWN0RGF0YS5xdWVyeS5sb2dldmVudHMubGVuZ3RoO1xuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzID0gY3VycmVudDtcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMgPSBwcmV2aW91cztcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5zaG93TG9nQW5kQ3VycmVudFByb3RlY3RJbmZvKCk7XG5cdFx0fSBjYXRjaCB7fVxuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suc2hvd0xvZ0FuZEN1cnJlbnRQcm90ZWN0SW5mbyA9ICgpID0+IHtcblx0XHRjb25zdCBjdXJyZW50bHlQcm90ZWN0ZWQgPSBPYmplY3Qua2V5cyhUd2lua2xlLnByb3RlY3QuY3VycmVudFByb3RlY3Rpb25MZXZlbHMpLmxlbmd0aCAhPT0gMDtcblx0XHRpZiAoVHdpbmtsZS5wcm90ZWN0Lmhhc1Byb3RlY3RMb2cgfHwgVHdpbmtsZS5wcm90ZWN0Lmhhc1N0YWJsZUxvZykge1xuXHRcdFx0Y29uc3QgJGxpbmtNYXJrdXAgPSAkKCc8c3Bhbj4nKTtcblx0XHRcdGlmIChUd2lua2xlLnByb3RlY3QuaGFzUHJvdGVjdExvZykge1xuXHRcdFx0XHQkbGlua01hcmt1cC5hcHBlbmQoXG5cdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAndmlldycsXG5cdFx0XHRcdFx0XHRcdHBhZ2U6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3Byb3RlY3QnLFxuXHRcdFx0XHRcdFx0fSl9XCI+JHt3aW5kb3cud2dVTFMoJ+S/neaKpOaXpeW/lycsICfkv53orbfml6XoqownKX08L2E+YFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0Lmhhc1N0YWJsZUxvZyA/ICQoJzxzcGFuPicpLmh0bWwoJyAmYnVsbDsgJykgOiBudWxsXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdCgkYm9keS5maW5kKCdkaXZbbmFtZT1cImhhc3Byb3RlY3Rsb2dcIl0gc3BhbicpWzBdKTtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRjdXJyZW50bHlQcm90ZWN0ZWRcblx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5YWI5YmN5L+d5oqkJywgJ+WFiOWJjeS/neittycpXG5cdFx0XHRcdFx0OiBbXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2k6aG16Z2i5pu+5ZyoJywgJ+atpOmggemdouabvuWcqCcpLFxuXHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdGA8Yj4ke25ldyBNb3JlYml0cy5kYXRlKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cudGltZXN0YW1wKS5jYWxlbmRhcihcblx0XHRcdFx0XHRcdFx0XHRcdCd1dGMnXG5cdFx0XHRcdFx0XHRcdFx0KX08L2I+YFxuXHRcdFx0XHRcdFx0XHQpWzBdLFxuXHRcdFx0XHRcdFx0XHRg6KKrJHtUd2lua2xlLnByb3RlY3QucHJldmlvdXNQcm90ZWN0aW9uTG9nLnVzZXJ9JHt3aW5kb3cud2dVTFMoJ+S/neaKpCcsICfkv53orbcnKX3vvJpgLFxuXHRcdFx0XHRcdFx0XHQuLi5Ud2lua2xlLnByb3RlY3QuZm9ybWF0UHJvdGVjdGlvbkRlc2NyaXB0aW9uKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMpLFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0JGxpbmtNYXJrdXBbMF1cblx0XHRcdCk7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiY3VycmVudHByb3RcIl0gc3BhbicpWzBdKTtcblx0XHRsZXQgcHJvdGVjdGlvbk5vZGUgPSBbXTtcblx0XHRsZXQgc3RhdHVzTGV2ZWwgPSAnaW5mbyc7XG5cdFx0cHJvdGVjdGlvbk5vZGUgPSBUd2lua2xlLnByb3RlY3QuZm9ybWF0UHJvdGVjdGlvbkRlc2NyaXB0aW9uKFR3aW5rbGUucHJvdGVjdC5jdXJyZW50UHJvdGVjdGlvbkxldmVscyk7XG5cdFx0aWYgKGN1cnJlbnRseVByb3RlY3RlZCkge1xuXHRcdFx0c3RhdHVzTGV2ZWwgPSAnd2Fybic7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnN0YXR1c1tzdGF0dXNMZXZlbF0od2luZG93LndnVUxTKCflvZPliY3kv53miqTnrYnnuqcnLCAn55uu5YmN5L+d6K23562J57SaJyksIHByb3RlY3Rpb25Ob2RlKTtcblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZUFjdGlvbiA9IChlKSA9PiB7XG5cdFx0bGV0IGZpZWxkX3ByZXNldDtcblx0XHRsZXQgZmllbGQxO1xuXHRcdGxldCBmaWVsZDI7XG5cdFx0c3dpdGNoIChlLnRhcmdldC52YWx1ZXMpIHtcblx0XHRcdGNhc2UgJ3Byb3RlY3QnOlxuXHRcdFx0XHRmaWVsZF9wcmVzZXQgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZF9wcmVzZXQnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGRfcHJlc2V0LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6npu5jorqTvvJonLCAn6YG45pOH6aCQ6Kit77yaJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXQsXG5cdFx0XHRcdFx0bGlzdDogbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKVxuXHRcdFx0XHRcdFx0PyBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQWRtaW5cblx0XHRcdFx0XHRcdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0NyZWF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMiA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTpgInpobknLCAn5L+d6K236YG46aCFJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkMicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnY3VycmVudHByb3QnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pOyAvLyBob2xkcyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsLCBhcyBmaWxsZWQgb3V0IGJ5IHRoZSBhc3luYyBjYWxsYmFja1xuXHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnaGFzcHJvdGVjdGxvZycsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vIGZvciBleGlzdGluZyBwYWdlc1xuXHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bW9kaWZ5LFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+u5pS557yW6L6R5p2D6ZmQJywgJ+S/ruaUuee3qOi8r+asiumZkCcpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdlZGl0bW9kaWZ5Jyxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul5q2k6aG55YWz6Zet77yM57yW6L6R5p2D6ZmQ5bCG5LiN5Lya5L+u5pS544CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6XmraTpoIXpl5zplonvvIznt6jovK/mrIrpmZDlsIfkuI3mnIPkv67mlLnjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ2VkaXRsZXZlbCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnvJbovpHmnYPpmZDvvJonLCAn57eo6Lyv5qyK6ZmQ77yaJyksXG5cdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuZWRpdGxldmVsLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHQvLyBGaWx0ZXIgVEUgb3V0c2lkZSBvZiB0ZW1wbGF0ZXMgYW5kIG1vZHVsZXNcblx0XHRcdFx0XHRcdFx0KGxldmVsKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGlzVGVtcGxhdGUgfHwgbGV2ZWwudmFsdWUgIT09ICd0ZW1wbGF0ZWVkaXRvcic7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdlZGl0ZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7iOatouaXtumXtO+8micsICfntYLmraLmmYLplpPvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQkKCdpbnB1dFtuYW1lPXNtYWxsXScsICQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCdmb3JtJykpWzBdLmNoZWNrZWQgPVxuXHRcdFx0XHRcdFx0XHRcdGV2ZW50LnRhcmdldC5zZWxlY3RlZEluZGV4ID49IDQ7IC8vIDEgbW9udGhcblx0XHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHRcdC8vIGRlZmF1bHQgZXhwaXJ5IHNlbGVjdGlvbiAoMiBkYXlzKSBpcyBjb25kaXRpb25hbGx5IHNldCBpbiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0XG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVtb2RpZnksXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv67mlLnnp7vliqjmnYPpmZAnLCAn5L+u5pS556e75YuV5qyK6ZmQJyksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ21vdmVtb2RpZnknLFxuXHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6XmraTpobnooqvlhbPpl63vvIznp7vliqjmnYPpmZDlsIbkuI3ooqvkv67mlLnjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+iLpeatpOmgheiiq+mXnOmWie+8jOenu+WLleasiumZkOWwh+S4jeiiq+S/ruaUueOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnbW92ZWxldmVsJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+WKqOadg+mZkO+8micsICfnp7vli5XmrIrpmZDvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbGV2ZWwsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdC8vIEF1dG9jb25maXJtZWQgaXMgcmVxdWlyZWQgZm9yIGEgbW92ZSwgcmVkdW5kYW50XG5cdFx0XHRcdFx0XHRcdChsZXZlbCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXZlbC52YWx1ZSAhPT0gJ2F1dG9jb25maXJtZWQnICYmIChpc1RlbXBsYXRlIHx8IGxldmVsLnZhbHVlICE9PSAndGVtcGxhdGVlZGl0b3InKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdtb3ZlZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7iOatouaXtumXtO+8micsICfntYLmraLmmYLplpPvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdC8vIGRlZmF1bHQgZXhwaXJ5IHNlbGVjdGlvbiAoMiBkYXlzKSBpcyBjb25kaXRpb25hbGx5IHNldCBpbiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0XG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gZm9yIG5vbi1leGlzdGluZyBwYWdlc1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnY3JlYXRlbGV2ZWwnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu65p2D6ZmQ77yaJywgJ+W7uueri+asiumZkO+8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmNyZWF0ZWxldmVsLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHQvLyBGaWx0ZXIgVEUgYWx3YXlzLCBhbmQgYXV0b2NvbmZpcm1lZCBpbiBtYWluc3BhY2Vcblx0XHRcdFx0XHRcdFx0KGxldmVsKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGxldmVsLnZhbHVlICE9PSAndGVtcGxhdGVlZGl0b3InO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnY3JlYXRlZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7iOatouaXtumXtO+8micsICfntYLmraLmmYLplpPvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdC8vIGRlZmF1bHQgZXhwaXJ5IHNlbGVjdGlvbiAoaW5kZWZpbml0ZSkgaXMgY29uZGl0aW9uYWxseSBzZXQgaW4gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZW5ndGhzLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnY2xvc2UnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDor7fmsYLkv53miqTpobXpnaLkuK3nmoTor7fmsYInLCAn5qiZ6KiY6KuL5rGC5L+d6K236aCB6Z2i5Lit55qE6KuL5rGCJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdwcm90ZWN0UmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnkIbnlLHvvIjkv53miqTml6Xlv5fvvInvvJonLCAn55CG55Sx77yI5L+d6K235pel6KqM77yJ77yaJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHwgbXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICdTY3JpYnVudG8nKSB7XG5cdFx0XHRcdFx0Ly8gdGFnZ2luZyBpc24ndCByZWxldmFudCBmb3Igbm9uLWV4aXN0aW5nIG9yIG1vZHVsZSBwYWdlc1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICd0YWcnOlxuXHRcdFx0XHRmaWVsZDEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w6YCJ6aG5JywgJ+aomeiomOmBuOmghScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZDEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2N1cnJlbnRwcm90Jyxcblx0XHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0XHR9KTsgLy8gaG9sZHMgdGhlIGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCwgYXMgZmlsbGVkIG91dCBieSB0aGUgYXN5bmMgY2FsbGJhY2tcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2hhc3Byb3RlY3Rsb2cnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAndGFndHlwZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup5L+d5oqk5qih5p2/77yaJywgJ+mBuOaTh+S/neitt+aooeadv++8micpLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVGFncyxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMudGFndHlwZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnc21hbGwnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvb/nlKjlm77moIfvvIhzbWFsbD15ZXPvvIknLCAn5L2/55So5ZyW56S677yIc21hbGw9eWVz77yJJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5bCG57uZ5qih5p2/5Yqg5LiKfHNtYWxsPXllc+WPguaVsO+8jOaYvuekuuaIkOWPs+S4iuinkueahOS4gOaKiuaMgumUgeOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+Wwh+e1puaooeadv+WKoOS4inxzbWFsbD15ZXPlj4PmlbjvvIzpoa/npLrmiJDlj7PkuIrop5LnmoTkuIDmiormjpvpjpbjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbm9pbmNsdWRlJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55SoJmx0O25vaW5jbHVkZSZndDvljIXoo7nkv53miqTmqKHmnb8nLCAn55SoJmx0O25vaW5jbHVkZSZndDvljIXoo7nkv53orbfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflsIbkv53miqTmqKHmnb/ljIXoo7nlnKgmbHQ7bm9pbmNsdWRlJmd0O+S4rScsXG5cdFx0XHRcdFx0XHRcdFx0J+Wwh+S/neitt+aooeadv+WMheijueWcqCZsdDtub2luY2x1ZGUmZ3Q75LitJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdzaG93ZXhwaXJ5Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5qih5p2/5pi+56S65Yiw5pyf5pe26Ze0JywgJ+WcqOaooeadv+mhr+ekuuWIsOacn+aZgumWkycpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+Wwhue7meaooeadv+WKoOS4inxleHBpcnnlj4LmlbAnLCAn5bCH57Wm5qih5p2/5Yqg5LiKfGV4cGlyeeWPg+aVuCcpLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRoaWRkZW46IGUudGFyZ2V0LnZhbHVlcyA9PT0gJ3RhZycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlcXVlc3QnOlxuXHRcdFx0XHRmaWVsZF9wcmVzZXQgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+d5oqk57G75Z6LJywgJ+S/neitt+mhnuWIpScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZF9wcmVzZXQnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGRfcHJlc2V0LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnsbvlnovlkoznkIbnlLHvvJonLCAn6aGe5Yil5ZKM55CG55Sx77yaJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXQsXG5cdFx0XHRcdFx0bGlzdDogbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKVxuXHRcdFx0XHRcdFx0PyBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzXG5cdFx0XHRcdFx0XHQ6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ6aG5JywgJ+mBuOmghScpLFxuXHRcdFx0XHRcdG5hbWU6ICdmaWVsZDEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2N1cnJlbnRwcm90Jyxcblx0XHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0XHR9KTsgLy8gaG9sZHMgdGhlIGN1cnJlbnQgcHJvdGVjdGlvbiBsZXZlbCwgYXMgZmlsbGVkIG91dCBieSB0aGUgYXN5bmMgY2FsbGJhY2tcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bmFtZTogJ2hhc3Byb3RlY3Rsb2cnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnZXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml7bplb/vvJonLCAn5pmC6ZW377yaJyksXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogJycsXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuLTml7YnLCAn6Ieo5pmCJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndGVtcG9yYXJ5Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5rC45LmFJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn55CG55Sx77yaJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6L+Z546p5oSP5YS/6KKr5rW36LGa5ZCD5o6J5LqG77yBJywgJ+mAmeeOqeaEj+WFkuiiq+a1t+ixmuWQg+aOieS6hu+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRsZXQgb2xkZmllbGQ7XG5cdFx0aWYgKGZpZWxkX3ByZXNldCkge1xuXHRcdFx0W29sZGZpZWxkXSA9ICQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfcHJlc2V0LnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpLmNzcygnZGlzcGxheScsICdub25lJyk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZDEpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZDFcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkMS5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZDFcIl0nKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXHRcdH1cblx0XHRpZiAoZmllbGQyKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQyXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZDIucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQyXCJdJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcblx0XHR9XG5cdFx0aWYgKGUudGFyZ2V0LnZhbHVlcyA9PT0gJ3Byb3RlY3QnKSB7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBwcmVzZXQgZHJvcGRvd25cblx0XHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdFx0ZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSk7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmNhdGVnb3J5LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdC8vIHJlZHVjZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgZGlhbG9nXG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZDJcIl0gc2VsZWN0JykucGFyZW50KCkuY3NzKHtcblx0XHRcdFx0ZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG5cdFx0XHRcdG1hcmdpblJpZ2h0OiAnMC41ZW0nLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIHJlLWFkZCBwcm90ZWN0aW9uIGxldmVsIGFuZCBsb2cgaW5mbywgaWYgaXQncyBhdmFpbGFibGVcblx0XHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suc2hvd0xvZ0FuZEN1cnJlbnRQcm90ZWN0SW5mbygpO1xuXHR9O1xuXHQvLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYmF0Y2hwcm90ZWN0IGFzIHdlbGxcblx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMgPSB7XG5cdFx0ZWRpdG1vZGlmeTogKGUpID0+IHtcblx0XHRcdGUudGFyZ2V0LmZvcm0uZWRpdGxldmVsLmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRleHBpcnkuZGlzYWJsZWQgPSAhZS50YXJnZXQuY2hlY2tlZCB8fCBlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC52YWx1ZSA9PT0gJ2FsbCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5zdHlsZS5jb2xvciA9IGUudGFyZ2V0LmNoZWNrZWQgPyAnJyA6ICd0cmFuc3BhcmVudCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRleHBpcnkuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdH0sXG5cdFx0ZWRpdGxldmVsOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdhbGwnO1xuXHRcdH0sXG5cdFx0bW92ZW1vZGlmeTogKGUpID0+IHtcblx0XHRcdC8vIHN5bmMgbW92ZSBzZXR0aW5ncyB3aXRoIGVkaXQgc2V0dGluZ3MgaWYgYXBwbGljYWJsZVxuXHRcdFx0aWYgKGUudGFyZ2V0LmZvcm0ubW92ZWxldmVsLmRpc2FibGVkICYmICFlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5kaXNhYmxlZCkge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC52YWx1ZSA9IGUudGFyZ2V0LmZvcm0uZWRpdGxldmVsLnZhbHVlO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVleHBpcnkudmFsdWUgPSBlLnRhcmdldC5mb3JtLmVkaXRleHBpcnkudmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKGUudGFyZ2V0LmZvcm0uZWRpdGxldmVsLmRpc2FibGVkKSB7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWxldmVsLnZhbHVlID0gJ3N5c29wJztcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LnZhbHVlID0gJ2luZmluaXR5Jztcblx0XHRcdH1cblx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWxldmVsLmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVleHBpcnkuZGlzYWJsZWQgPSAhZS50YXJnZXQuY2hlY2tlZCB8fCBlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC52YWx1ZSA9PT0gJ2FsbCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC5zdHlsZS5jb2xvciA9IGUudGFyZ2V0LmNoZWNrZWQgPyAnJyA6ICd0cmFuc3BhcmVudCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVleHBpcnkuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdH0sXG5cdFx0bW92ZWxldmVsOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdhbGwnO1xuXHRcdH0sXG5cdFx0Y3JlYXRlbGV2ZWw6IChlKSA9PiB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmNyZWF0ZWV4cGlyeS5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnYWxsJztcblx0XHR9LFxuXHRcdHRhZ3R5cGU6IChlKSA9PiB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnNtYWxsLmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdub25lJyB8fCBlLnRhcmdldC52YWx1ZSA9PT0gJ25vb3AnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5ub2luY2x1ZGUuZGlzYWJsZWQgPSBlLnRhcmdldC52YWx1ZSA9PT0gJ25vbmUnIHx8IGUudGFyZ2V0LnZhbHVlID09PSAnbm9vcCc7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnNob3dleHBpcnkuZGlzYWJsZWQgPSBlLnRhcmdldC52YWx1ZSA9PT0gJ25vbmUnIHx8IGUudGFyZ2V0LnZhbHVlID09PSAnbm9vcCc7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmRvQ3VzdG9tRXhwaXJ5ID0gKHRhcmdldCkgPT4ge1xuXHRcdGNvbnN0IGN1c3RvbSA9IHByb21wdChcblx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+i+k+WFpeiHquWumuS5iee7iOatouaXtumXtOOAglxcbuaCqOWPr+S7peS9v+eUqOebuOWvueaXtumXtO+8jOWmguKAnDEgbWludXRl4oCd5oiW4oCcMTkgZGF5c+KAne+8jOaIlue7neWvueaXtumXtOKAnHl5eXltbWRkaGhtbeKAne+8iOWmguKAnDIwMDYwMjAxMTQwNeKAneaYrzIwMDblubQwMuaciDAx5pelMTTvvJowNe+8iFVUQ++8ie+8iScsXG5cdFx0XHRcdCfovLjlhaXoh6roqILntYLmraLmmYLplpPjgIJcXG7mgqjlj6/ku6Xkvb/nlKjnm7jlsI3mmYLplpPvvIzlpoLjgIwxIG1pbnV0ZeOAjeaIluOAjDE5IGRheXPjgI3vvIzmiJbntZXlsI3mmYLplpPjgIx5eXl5bW1kZGhobW3jgI3vvIjlpoLjgIwyMDA2MDIwMTE0MDXjgI3mmK8yMDA25bm0MDLmnIgwMeaXpTE077yaMDXvvIhVVEPvvInvvIknXG5cdFx0XHQpLFxuXHRcdFx0Jydcblx0XHQpO1xuXHRcdGlmIChjdXN0b20pIHtcblx0XHRcdGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBjdXN0b20pO1xuXHRcdFx0b3B0aW9uLnRleHRDb250ZW50ID0gY3VzdG9tO1xuXHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKG9wdGlvbik7XG5cdFx0XHR0YXJnZXQudmFsdWUgPSBjdXN0b207XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhcmdldC5zZWxlY3RlZEluZGV4ID0gMDtcblx0XHR9XG5cdH07XG5cdC8vIE5PVEU6IFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGJhdGNocHJvdGVjdCBhcyB3ZWxsXG5cdFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAn5YWo6YOoJyxcblx0XHRcdHZhbHVlOiAnYWxsJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heWFgeiuuOiHquWKqOehruiupOeUqOaItycsICflg4XlhYHoqLHoh6rli5Xnorroqo3kvb/nlKjogIUnKSxcblx0XHRcdHZhbHVlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XmqKHmnb/nvJbovpHlkZjlkoznrqHnkIblkZgnLCAn5YOF5qih5p2/57eo6Lyv5ZOh5ZKM566h55CG5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ3RlbXBsYXRlZWRpdG9yJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heeuoeeQhuWRmCcsICflg4XnrqHnkIblk6EnKSxcblx0XHRcdHZhbHVlOiAnc3lzb3AnLFxuXHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XlhYHorrjmoaPmoYjnkIbkuovlkZgnLCAn5YOF5YWB6Kix5qqU5qGI55CG5LqL5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ29mZmljaWFscHJvdGVjdGVkJyxcblx0XHR9LFxuXHRdO1xuXHQvLyBkZWZhdWx0IGV4cGlyeSBzZWxlY3Rpb24gaXMgY29uZGl0aW9uYWxseSBzZXQgaW4gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldFxuXHQvLyBOT1RFOiBUaGlzIGxpc3QgaXMgdXNlZCBieSBiYXRjaHByb3RlY3QgYXMgd2VsbFxuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcx5aSpJyxcblx0XHRcdHZhbHVlOiAnMSBkYXknLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcz5aSpJyxcblx0XHRcdHZhbHVlOiAnMyBkYXlzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHlkagnLCAnMemAsScpLFxuXHRcdFx0dmFsdWU6ICcxIHdlZWsnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMuWRqCcsICcy6YCxJyksXG5cdFx0XHR2YWx1ZTogJzIgd2Vla3MnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMeS4quaciCcsICcx5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzEgbW9udGgnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+S4quaciCcsICcz5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzMgbW9udGhzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzbkuKrmnIgnLCAnNuWAi+aciCcpLFxuXHRcdFx0dmFsdWU6ICc2IG1vbnRocycsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJzHlubQnLFxuXHRcdFx0dmFsdWU6ICcxIHllYXInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpLFxuXHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnigKbigKYnLCAn6Ieq6KiC4oCm4oCmJyksXG5cdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ino+mZpOS/neaKpCcsICfop6PpmaTkv53orbcnKSxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhO+8iOWFqO+8iScsICfluLjopo/vvIjlhajvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnvJbovpHmiJjvvIjlhajvvIknLCAn54it6K2w44CB57eo6Lyv5oiw77yI5YWo77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmqKHmnb/kv53miqQnLCAn5qih5p2/5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpq5jpo47pmanmqKHmnb/vvIjmqKHmnb/vvIknLCAn6auY6aKo6Zqq5qih5p2/77yI5qih5p2/77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC10ZW1wbGF0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2K5L+d5oqkJywgJ+WNiuS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI5Y2K77yJJywgJ+W4uOimj++8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1wcm90ZWN0ZWQnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oyB57ut56C05Z2P77yI5Y2K77yJJywgJ+aMgee6jOegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N55Sf6ICF5Lyg6K6w5p2h5L6L77yI5Y2K77yJJywgJ+mBleWPjeeUn+iAheWCs+iomOaineS+i++8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1ibHAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YKA5YSh56C05Z2P77yI5Y2K77yJJywgJ+WCgOWEoeegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1zb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadv++8iOWNiu+8iScsICfpq5jpoqjpmqrmqKHmnb/vvIjljYrvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktdGVtcGxhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6KKr5bCB56aB55So5oi35rul55So6K6o6K666aG177yI5Y2K77yJJywgJ+iiq+WwgeemgeS9v+eUqOiAhea/q+eUqOiojuirlumgge+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS11c2VydGFsaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqkJywgJ+enu+WLleS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI56e75Yqo77yJJywgJ+W4uOimj++8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnp7vliqjmiJjvvIjnp7vliqjvvIknLCAn54it6K2w44CB56e75YuV5oiw77yI56e75YuV77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWRpc3B1dGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo56C05Z2P77yI56e75Yqo77yJJywgJ+enu+WLleegtOWjnu+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp6aG16Z2i77yI56e75Yqo77yJJywgJ+mrmOmiqOmaqumggemdou+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS1pbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF0uZmlsdGVyKFxuXHRcdChcblx0XHRcdC8vIEZpbHRlciBmb3IgdGVtcGxhdGVzXG5cdFx0XHR7bGFiZWx9XG5cdFx0KSA9PiB7XG5cdFx0XHRyZXR1cm4gaXNUZW1wbGF0ZSB8fCAobGFiZWwgIT09ICfmqKHmnb/kv53miqQnICYmIGxhYmVsICE9PSAn5qih5p2/5L+d6K23Jyk7XG5cdFx0fVxuXHQpO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlT25seSA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnmb3nurjkv53miqQnLCAn55m957SZ5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfluLjop4TvvIjnmb3nurjvvIknLCAn5bi46KaP77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu677yI55m957q477yJJywgJ+WkmuasoemHjeikh+W7uueri++8iOeZvee0me+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtY3JlYXRlLXJlcGVhdCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63noLTlnY/vvIjnmb3nurjvvIknLCAn5oyB57qM56C05aOe77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUtdmFuZGFsaXNtJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWwgeemgeeUqOaIt+eahOeUqOaIt+mhte+8iOeZvee6uO+8iScsICflt7LlsIHnpoHkvb/nlKjogIXnmoTkvb/nlKjogIXpoIHvvIjnmb3ntJnvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLWNyZWF0ZS11c2VycGFnZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXMgPSBbXG5cdFx0Li4uVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluLFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAn6Kej6Zmk5L+d5oqkJyxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHQvLyBOT1RJQ0U6IGtlZXAgdGhpcyBzeW5jaGVkIHdpdGggW1tNZWRpYVdpa2k6UHJvdGVjdC1kcm9wZG93bl1dXG5cdC8vIGV4cGlyeSB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0c1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblByZXNldHNJbmZvID0ge1xuXHRcdCdwcC1wcm90ZWN0ZWQnOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHR9LFxuXHRcdCdwcC1kaXNwdXRlJzoge1xuXHRcdFx0ZWRpdDogJ3N5c29wJyxcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn57yW6L6R5oiYJywgJ+e3qOi8r+aIsCcpLFxuXHRcdH0sXG5cdFx0J3BwLXRlbXBsYXRlJzoge1xuXHRcdFx0ZWRpdDogJ3RlbXBsYXRlZWRpdG9yJyxcblx0XHRcdG1vdmU6ICd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygnW1tMSUI6SFJUfOmrmOmjjumZqeaooeadv11dJywgJ1tbTElCOkhSVHzpq5jpoqjpmqrmqKHmnb9dXScpLFxuXHRcdFx0dGVtcGxhdGU6ICdub29wJyxcblx0XHR9LFxuXHRcdCdwcC12YW5kYWxpc20nOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvoh6rliqjnoa7orqTnlKjmiLfnoLTlnY8nLCAn6KKr6Ieq5YuV56K66KqN5L2/55So6ICF56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtc29jayc6IHtcblx0XHRcdGVkaXQ6ICdzeXNvcCcsXG5cdFx0XHRtb3ZlOiAnc3lzb3AnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aMgee7reeahOWCgOWEoeegtOWdjycsICfmjIHnuoznmoTlgoDlhKHnoLTlo54nKSxcblx0XHR9LFxuXHRcdCdwcC1zZW1pLXZhbmRhbGlzbSc6IHtcblx0XHRcdGVkaXQ6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvmlrDnlKjmiLfnoLTlnY8nLCAn6KKr5paw5L2/55So6ICF56C05aOeJyksXG5cdFx0XHR0ZW1wbGF0ZTogJ3BwLXZhbmRhbGlzbScsXG5cdFx0fSxcblx0XHQncHAtc2VtaS1ibHAnOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5paw55So5oi36L+d5Y+N55Sf6ICF5Lyg6K6w5p2h5L6LJywgJ+aWsOS9v+eUqOiAhemBleWPjeeUn+iAheWCs+iomOaineS+iycpLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktdXNlcnRhbGsnOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr5bCB56aB55So5oi35rul55So5YW26K6o6K666aG1JywgJ+iiq+WwgeemgeS9v+eUqOiAhea/q+eUqOWFtuiojuirlumggScpLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktdGVtcGxhdGUnOiB7XG5cdFx0XHQvLyByZW1vdmVkIGZvciBub3dcblx0XHRcdGVkaXQ6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW0xJQjpIUlR86auY6aOO6Zmp5qih5p2/XV0nLCAnW1tMSUI6SFJUfOmrmOmiqOmaquaooeadv11dJyksXG5cdFx0XHR0ZW1wbGF0ZTogJ25vb3AnLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktc29jayc6IHtcblx0XHRcdGVkaXQ6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63nmoTlgoDlhKHnoLTlnY8nLCAn5oyB57qM55qE5YKA5YSh56C05aOeJyksXG5cdFx0XHR0ZW1wbGF0ZTogJ3BwLXNvY2snLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktcHJvdGVjdGVkJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiBudWxsLFxuXHRcdFx0dGVtcGxhdGU6ICdwcC1wcm90ZWN0ZWQnLFxuXHRcdH0sXG5cdFx0J3BwLW1vdmUnOiB7XG5cdFx0XHRtb3ZlOiAnc3lzb3AnLFxuXHRcdFx0cmVhc29uOiBudWxsLFxuXHRcdH0sXG5cdFx0J3BwLW1vdmUtZGlzcHV0ZSc6IHtcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6aG16Z2i56e75Yqo5oiYJywgJ+mggemdouenu+WLleaIsCcpLFxuXHRcdH0sXG5cdFx0J3BwLW1vdmUtdmFuZGFsaXNtJzoge1xuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfnp7vliqjnoLTlnY8nLCAn56e75YuV56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtbW92ZS1pbmRlZic6IHtcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp6aG16Z2iJywgJ+mrmOmiqOmaqumggemdoicpLFxuXHRcdH0sXG5cdFx0dW5wcm90ZWN0OiB7XG5cdFx0XHRlZGl0OiAnYWxsJyxcblx0XHRcdG1vdmU6ICdhbGwnLFxuXHRcdFx0Y3JlYXRlOiAnYWxsJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHRcdHRlbXBsYXRlOiAnbm9uZScsXG5cdFx0fSxcblx0XHQncHAtY3JlYXRlJzoge1xuXHRcdFx0Y3JlYXRlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IG51bGwsXG5cdFx0fSxcblx0XHQncHAtY3JlYXRlLXJlcGVhdCc6IHtcblx0XHRcdGNyZWF0ZTogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+WkmuasoemHjeWkjeWIm+W7uicsICflpJrmrKHph43opIflu7rnq4snKSxcblx0XHR9LFxuXHRcdCdwcC1jcmVhdGUtdmFuZGFsaXNtJzoge1xuXHRcdFx0Y3JlYXRlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr5paw55So5oi356C05Z2PJywgJ+iiq+aWsOS9v+eUqOiAheegtOWjnicpLFxuXHRcdH0sXG5cdFx0J3BwLWNyZWF0ZS11c2VycGFnZSc6IHtcblx0XHRcdGNyZWF0ZTogJ3N5c29wJyxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn6KKr5rC45LmF5bCB56aB55qE5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UYWdzID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoO+8iOenu+mZpOeOsOacieaooeadv++8iScsICfnhKHvvIjnp7vpmaTnj77mnInmqKHmnb/vvIknKSxcblx0XHRcdHZhbHVlOiAnbm9uZScsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DvvIjkuI3np7vpmaTnjrDmnInmqKHmnb/vvIknLCAn54Sh77yI5LiN56e76Zmk54++5pyJ5qih5p2/77yJJyksXG5cdFx0XHR2YWx1ZTogJ25vb3AnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICfpgJrnlKjmqKHmnb8nLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLWRpc3B1dGV9fTogJHt3aW5kb3cud2dVTFMoJ+S6ieiuricsICfniK3orbAnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtZGlzcHV0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtdmFuZGFsaXNtfX06ICR7d2luZG93LndnVUxTKCfnoLTlnY8nLCAn56C05aOeJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXZhbmRhbGlzbScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ3t7cHAtc29ja319OiDlgoDlhKEnLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc29jaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtdGVtcGxhdGV9fTogJHt3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadvycsICfpq5jpoqjpmqrmqKHmnb8nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtdGVtcGxhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXByb3RlY3RlZH19OiAke3dpbmRvdy53Z1VMUygn5bi46KeEJywgJ+W4uOimjycpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1wcm90ZWN0ZWQnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WNiuS/neaKpOaooeadvycsICfljYrkv53orbfmqKHmnb8nKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1zZW1pLXVzZXJ0YWxrfX06ICR7d2luZG93LndnVUxTKCflsIHnpoHnmoTnlKjmiLcnLCAn5bCB56aB55qE5L2/55So6ICFJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktdXNlcnRhbGsnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXNlbWktYmxwfX06ICR7d2luZG93LndnVUxTKCfnlJ/ogIXkvKDorrAnLCAn55Sf6ICF5YKz6KiYJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktYmxwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1zZW1pLWluZGVmfX06ICR7d2luZG93LndnVUxTKCfplb/mnJ8nLCAn6ZW35pyfJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktaW5kZWYnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+WKqOS/neaKpOaooeadvycsICfnp7vli5Xkv53orbfmqKHmnb8nKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlLWRpc3B1dGV9fTogJHt3aW5kb3cud2dVTFMoJ+S6ieiuricsICfniK3orbAnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlLXZhbmRhbGlzbX19OiAke3dpbmRvdy53Z1VMUygn56C05Z2PJywgJ+egtOWjnicpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLXZhbmRhbGlzbScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtbW92ZS1pbmRlZn19OiAke3dpbmRvdy53Z1VMUygn6ZW/5pyfJywgJ+mVt+acnycpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWluZGVmJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlfX06ICR7d2luZG93LndnVUxTKCfluLjop4QnLCAn5bi46KaPJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLW1vdmUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0ID0gKGUpID0+IHtcblx0XHRjb25zdCB7Zm9ybX0gPSBlLnRhcmdldDtcblx0XHRjb25zdCBhY3Rpb250eXBlcyA9IGZvcm0uYWN0aW9udHlwZTtcblx0XHRsZXQgYWN0aW9udHlwZTtcblx0XHRmb3IgKGNvbnN0IGFjdGlvbl90eXBlX3ZhbHVlIG9mIGFjdGlvbnR5cGVzKSB7XG5cdFx0XHRpZiAoIWFjdGlvbl90eXBlX3ZhbHVlLmNoZWNrZWQpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRhY3Rpb250eXBlID0gYWN0aW9uX3R5cGVfdmFsdWUudmFsdWVzO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmIChhY3Rpb250eXBlID09PSAncHJvdGVjdCcpIHtcblx0XHRcdC8vIGFjdHVhbGx5IHByb3RlY3RpbmcgdGhlIHBhZ2Vcblx0XHRcdGNvbnN0IGl0ZW0gPSBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblByZXNldHNJbmZvW2Zvcm0uY2F0ZWdvcnkudmFsdWVdO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdFx0aWYgKGl0ZW0uZWRpdCkge1xuXHRcdFx0XHRcdGZvcm0uZWRpdG1vZGlmeS5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bW9kaWZ5KHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5lZGl0bW9kaWZ5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZvcm0uZWRpdGxldmVsLnZhbHVlID0gaXRlbS5lZGl0O1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRsZXZlbCh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0uZWRpdGxldmVsLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvcm0uZWRpdG1vZGlmeS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuZWRpdG1vZGlmeSh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0uZWRpdG1vZGlmeSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaXRlbS5tb3ZlKSB7XG5cdFx0XHRcdFx0Zm9ybS5tb3ZlbW9kaWZ5LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVtb2RpZnkoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLm1vdmVtb2RpZnksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5tb3ZlbGV2ZWwudmFsdWUgPSBpdGVtLm1vdmU7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZWxldmVsKHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5tb3ZlbGV2ZWwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybS5tb3ZlbW9kaWZ5LmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbW9kaWZ5KHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5tb3ZlbW9kaWZ5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0uZWRpdGV4cGlyeS52YWx1ZSA9IGl0ZW0uZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0XHRmb3JtLm1vdmVleHBpcnkudmFsdWUgPSBpdGVtLmV4cGlyeSB8fCAnMSB3ZWVrJztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChpdGVtLmNyZWF0ZSkge1xuXHRcdFx0XHRcdGZvcm0uY3JlYXRlbGV2ZWwudmFsdWUgPSBpdGVtLmNyZWF0ZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5jcmVhdGVsZXZlbCh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0uY3JlYXRlbGV2ZWwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5jcmVhdGVleHBpcnkudmFsdWUgPSBpdGVtLmNyZWF0ZWV4cGlyeSB8fCAnMSB3ZWVrJztcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmNyZWF0ZWV4cGlyeS52YWx1ZSA9IGl0ZW0uZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmVhc29uRmllbGQgPSBhY3Rpb250eXBlID09PSAncHJvdGVjdCcgPyBmb3JtLnByb3RlY3RSZWFzb24gOiBmb3JtLnJlYXNvbjtcblx0XHRcdGlmIChpdGVtLnJlYXNvbikge1xuXHRcdFx0XHRyZWFzb25GaWVsZC52YWx1ZSA9IGl0ZW0ucmVhc29uO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVhc29uRmllbGQudmFsdWUgPSAnJztcblx0XHRcdH1cblx0XHRcdC8vIHNvcnQgb3V0IHRhZ2dpbmcgb3B0aW9ucywgZGlzYWJsZWQgaWYgbm9uZXhpc3RlbnQgb3IgbHVhXG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSAmJiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSAhPT0gJ1NjcmlidW50bycpIHtcblx0XHRcdFx0aWYgKGZvcm0uY2F0ZWdvcnkudmFsdWUgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFx0Zm9ybS50YWd0eXBlLnZhbHVlID0gJ25vbmUnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvcm0udGFndHlwZS52YWx1ZSA9IGl0ZW0udGVtcGxhdGUgPz8gZm9ybS5jYXRlZ29yeS52YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy50YWd0eXBlKHtcblx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0udGFndHlwZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmICgvdGVtcGxhdGUvLnRlc3QoZm9ybS5jYXRlZ29yeS52YWx1ZSkpIHtcblx0XHRcdFx0XHRmb3JtLm5vaW5jbHVkZS5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSAxMCkge1xuXHRcdFx0XHRcdGZvcm0ubm9pbmNsdWRlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZm9ybS5jYXRlZ29yeS52YWx1ZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdC8vIFJQUCByZXF1ZXN0XG5cdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9ICcnO1xuXHRcdFx0Zm9ybS5leHBpcnkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9ICcnO1xuXHRcdFx0Zm9ybS5leHBpcnkuZGlzYWJsZWQgPSBmYWxzZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRsZXQgdGFncGFyYW1zO1xuXHRcdGlmIChcblx0XHRcdGlucHV0LmFjdGlvbnR5cGUgPT09ICd0YWcnIHx8XG5cdFx0XHQoaW5wdXQuYWN0aW9udHlwZSA9PT0gJ3Byb3RlY3QnICYmXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgIT09ICdTY3JpYnVudG8nKVxuXHRcdCkge1xuXHRcdFx0dGFncGFyYW1zID0ge1xuXHRcdFx0XHR0YWc6IGlucHV0LnRhZ3R5cGUsXG5cdFx0XHRcdHJlYXNvbjpcblx0XHRcdFx0XHQoaW5wdXQudGFndHlwZSA9PT0gJ3BwLXByb3RlY3RlZCcgfHxcblx0XHRcdFx0XHRcdGlucHV0LnRhZ3R5cGUgPT09ICdwcC1zZW1pLXByb3RlY3RlZCcgfHxcblx0XHRcdFx0XHRcdGlucHV0LnRhZ3R5cGUgPT09ICdwcC1tb3ZlJykgJiZcblx0XHRcdFx0XHRpbnB1dC5wcm90ZWN0UmVhc29uXG5cdFx0XHRcdFx0XHQ/IGlucHV0LnByb3RlY3RSZWFzb25cblx0XHRcdFx0XHRcdDogbnVsbCxcblx0XHRcdFx0c2hvd2V4cGlyeTogaW5wdXQuYWN0aW9udHlwZSA9PT0gJ3Byb3RlY3QnID8gaW5wdXQuc2hvd2V4cGlyeSA6IG51bGwsXG5cdFx0XHRcdHNtYWxsOiBpbnB1dC5zbWFsbCxcblx0XHRcdFx0bm9pbmNsdWRlOiBpbnB1dC5ub2luY2x1ZGUsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGlucHV0LmFjdGlvbnR5cGUgPT09ICdwcm90ZWN0Jykge1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSkge1xuXHRcdFx0XHRcdHRhZ3BhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYgKGlucHV0Lm1vdmVtb2RpZnkpIHtcblx0XHRcdFx0XHR0YWdwYXJhbXMuZXhwaXJ5ID0gaW5wdXQubW92ZWV4cGlyeTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBjbG9zZXBhcmFtcyA9IHt9O1xuXHRcdGlmIChpbnB1dC5jbG9zZSkge1xuXHRcdFx0aWYgKGlucHV0LmNhdGVnb3J5ID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ3VucHJvdGVjdCc7XG5cdFx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdFx0aWYgKGlucHV0LmVkaXRtb2RpZnkpIHtcblx0XHRcdFx0XHRzd2l0Y2ggKGlucHV0LmVkaXRsZXZlbCkge1xuXHRcdFx0XHRcdFx0Y2FzZSAnb2ZmaWNpYWxwcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ29mZmljaWFscHJvdGVjdGVkJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdyZXZpc2lvbnByb3RlY3RlZCc6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAncmV2aXNpb25wcm90ZWN0ZWQnO1xuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3N5c29wJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdmdWxsJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICd0ZW1wbGF0ZWVkaXRvcic6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAndGVtcCc7XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnYXV0b2NvbmZpcm1lZCc6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAnc2VtaSc7XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gTm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRpbnB1dC5tb3ZlbW9kaWZ5ICYmXG5cdFx0XHRcdFx0WydvZmZpY2lhbHByb3RlY3RlZCcsICdyZXZpc2lvbnByb3RlY3RlZCcsICdzeXNvcCcsICd0ZW1wbGF0ZWVkaXRvciddLmluY2x1ZGVzKGlucHV0Lm1vdmVsZXZlbClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdtb3ZlJztcblx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5tb3ZlZXhwaXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGlucHV0LmNyZWF0ZWxldmVsICE9PSAnYWxsJykge1xuXHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ3NhbHQnO1xuXHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5jcmVhdGVleHBpcnk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHN3aXRjaCAoaW5wdXQuYWN0aW9udHlwZSkge1xuXHRcdFx0Y2FzZSAncHJvdGVjdCc6IHtcblx0XHRcdFx0Ly8gcHJvdGVjdCB0aGUgcGFnZVxuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfkv53miqTlrozmiJAnLCAn5L+d6K235a6M5oiQJyk7XG5cdFx0XHRcdGxldCBzdGF0dXNJbml0ZWQgPSBmYWxzZTtcblx0XHRcdFx0bGV0IHRoaXNwYWdlO1xuXHRcdFx0XHRjb25zdCBhbGxEb25lID0gKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzcGFnZSkge1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGFncGFyYW1zKSB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLnRhZ2dpbmdQYWdlSW5pdGlhbCh0YWdwYXJhbXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoY2xvc2VwYXJhbXMgJiYgY2xvc2VwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcnBwUGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRcdCdMSUJfdGFsazrpobXpnaLkv53miqTor7fmsYInLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFs+mXreivt+axgicsICfpl5zplonoq4vmsYInKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJwcFBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdFx0XHRycHBQYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhjbG9zZXBhcmFtcyk7XG5cdFx0XHRcdFx0XHRycHBQYWdlLmxvYWQoVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy5jbG9zZVJlcXVlc3QpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgcHJvdGVjdEl0ID0gKG5leHQpID0+IHtcblx0XHRcdFx0XHR0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/neaKpOmhtemdoicsICfkv53orbfpoIHpnaInKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdFx0XHRcdGlmIChpbnB1dC5lZGl0bW9kaWZ5KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldEVkaXRQcm90ZWN0aW9uKGlucHV0LmVkaXRsZXZlbCwgaW5wdXQuZWRpdGV4cGlyeSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoaW5wdXQubW92ZW1vZGlmeSkge1xuXHRcdFx0XHRcdFx0XHQvLyBFbnN1cmUgYSBsZXZlbCBoYXMgYWN0dWFsbHkgYmVlbiBjaG9zZW5cblx0XHRcdFx0XHRcdFx0aWYgKGlucHV0Lm1vdmVsZXZlbCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldE1vdmVQcm90ZWN0aW9uKGlucHV0Lm1vdmVsZXZlbCwgaW5wdXQubW92ZWV4cGlyeSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo6ZyA6KaB6YCJ5oup5L+d5oqk5bGC57qn77yBJywgJ+aCqOmcgOimgemBuOaTh+S/neitt+WxpOe0mu+8gScpLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFByb3RlY3RlZFBhZ2VzJykpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5zZXRDcmVhdGVQcm90ZWN0aW9uKGlucHV0LmNyZWF0ZWxldmVsLCBpbnB1dC5jcmVhdGVleHBpcnkpO1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0V2F0Y2hsaXN0KGZhbHNlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGlucHV0LnByb3RlY3RSZWFzb24pIHtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldEVkaXRTdW1tYXJ5KGlucHV0LnByb3RlY3RSZWFzb24pO1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aG76L6T5YWl5L+d5oqk55CG55Sx77yM6L+Z5bCG6KKr6K6w5b2V5Zyo5L+d5oqk5pel5b+X5Lit44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aCI6Ly45YWl5L+d6K2355CG55Sx77yM6YCZ5bCH6KKr6KiY6YyE5Zyo5L+d6K235pel6KqM5Lit44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFzdGF0dXNJbml0ZWQpIHtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0XHRcdHN0YXR1c0luaXRlZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5wcm90ZWN0KG5leHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSB8fCBpbnB1dC5tb3ZlbW9kaWZ5IHx8ICFtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpKSB7XG5cdFx0XHRcdFx0cHJvdGVjdEl0KGFsbERvbmUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG13Lm5vdGlmeShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+ivt+WRiuiviVR3aW5rbGXopoHlgZrku4DkuYjvvIFcXG7oi6Xmgqjlj6rmmK/mg7PmoIforrDor6XpobXvvIzor7fpgInmi6nkuIrpnaLnmoTigJznlKjkv53miqTmqKHmnb/moIforrDmraTpobXigJ3pgInpobnjgIInLFxuXHRcdFx0XHRcdFx0XHQn6KuL5ZGK6Ki0VHdpbmtsZeimgeWBmuS7gOm6vO+8gVxcbuiLpeaCqOWPquaYr+aDs+aomeiomOipsumgge+8jOiri+mBuOaTh+S4iumdoueahOOAjOeUqOS/neitt+aooeadv+aomeiomOatpOmggeOAjemBuOmgheOAgidcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXByb3RlY3QnLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlICd0YWcnOlxuXHRcdFx0XHQvLyBhcHBseSBhIHByb3RlY3Rpb24gdGVtcGxhdGVcblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5mb2xsb3dSZWRpcmVjdCA9IGZhbHNlO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy50YWdnaW5nUGFnZUluaXRpYWwodGFncGFyYW1zKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdyZXF1ZXN0Jzoge1xuXHRcdFx0XHQvLyBmaWxlIHJlcXVlc3QgYXQgUkZQUFxuXHRcdFx0XHRsZXQgdHlwZW5hbWU7XG5cdFx0XHRcdGxldCB0eXBlcmVhc29uO1xuXHRcdFx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHRcdFx0Y2FzZSAncHAtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtcHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCflhajkv53miqQnLCAn5YWo5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC10ZW1wbGF0ZSc6XG5cdFx0XHRcdFx0XHR0eXBlbmFtZSA9IHdpbmRvdy53Z1VMUygn5qih5p2/5L+d5oqkJywgJ+aooeadv+S/neittycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLWRpc3J1cHRpdmUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdW5zb3VyY2VkJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS11c2VydGFsayc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS10ZW1wbGF0ZSc6IC8vIHJlbW92ZWQgZm9yIG5vd1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktc29jayc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1ibHAnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktcHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfljYrkv53miqQnLCAn5Y2K5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlJzpcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLWRpc3B1dGUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtaW5kZWYnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfnp7vliqjkv53miqQnLCAn56e75YuV5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1vZmZlbnNpdmUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1ibHAnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1zYWx0Jzpcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUtdXNlcnBhZ2UnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1yZXBlYXQnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS12YW5kYWxpc20nOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+eZvee6uOS/neaKpCcsICfnmb3ntJnkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8qIGNhc2UgJ3VucHJvdGVjdCc6ICovXG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0eXBlbmFtZSA9IHdpbmRvdy53Z1VMUygn6Kej6Zmk5L+d5oqkJywgJ+ino+mZpOS/neittycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWRpc3B1dGUnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5LqJ6K6u44CB57yW6L6R5oiYJywgJ+eIreitsOOAgee3qOi8r+aIsCcpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfmjIHnu63noLTlnY8nLCAn5oyB57qM56C05aOeJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC10ZW1wbGF0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS10ZW1wbGF0ZSc6XG5cdFx0XHRcdFx0XHQvLyByZW1vdmVkIGZvciBub3dcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadvycsICfpq5jpoqjpmqrmqKHmnb8nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS11c2VycGFnZSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfooqvmsLjkuYXlsIHnpoHnmoTnlKjmiLfpobUnLCAn6KKr5rC45LmF5bCB6Y6W55qE5L2/55So6ICF6aCB6Z2iJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXVzZXJ0YWxrJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+W3suWwgeemgeeUqOaIt+eahOiuqOiuuumhtScsICflt7LlsIHpjpbkvb/nlKjogIXnmoToqI7oq5bpoIEnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktc29jayc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCflgoDlhKHnoLTlnY8nLCAn5YKA5YSh56C05aOeJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLWJscCc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfov53lj43nlJ/ogIXkvKDorrDmnaHkvosnLCAn6YGV5Y+N55Sf6ICF5YKz6KiY5qKd5L6LJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLWRpc3B1dGUnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5LqJ6K6u44CB56e75Yqo5oiYJywgJ+eIreitsOOAgeenu+WLleaIsCcpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS12YW5kYWxpc20nOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn56e75Yqo56C05Z2PJywgJ+enu+WLleegtOWjnicpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS1pbmRlZic6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfpq5jpo47pmanpobXpnaInLCAn6auY6aKo6Zqq6aCB6Z2iJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUtcmVwZWF0Jzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+WkmuasoemHjeWkjeWIm+W7uicsICflpJrmrKHph43opIflu7rnq4snKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gJyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgcmVhc29uID0gdHlwZXJlYXNvbjtcblx0XHRcdFx0aWYgKGlucHV0LnJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRpZiAodHlwZXJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdHJlYXNvbiArPSAn77yaJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVhc29uICs9IGlucHV0LnJlYXNvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdHJlYXNvbiA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihyZWFzb24pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJwcHBhcmFtcyA9IHtcblx0XHRcdFx0XHRyZWFzb24sXG5cdFx0XHRcdFx0dHlwZW5hbWUsXG5cdFx0XHRcdFx0Y2F0ZWdvcnk6IGlucHV0LmNhdGVnb3J5LFxuXHRcdFx0XHRcdGV4cGlyeTogaW5wdXQuZXhwaXJ5LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0Y29uc3QgcnBwTmFtZSA9ICdMSUJfdGFsazrpobXpnaLkv53miqTor7fmsYInO1xuXHRcdFx0XHQvLyBVcGRhdGluZyBkYXRhIGZvciB0aGUgYWN0aW9uIGNvbXBsZXRlZCBldmVudFxuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHJwcE5hbWU7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5a6a5ZCR5Yiw6K6o6K666aG1Jyxcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5paw5bCO5ZCR5Yiw6KiO6KuW6aCBJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBycHBQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShycHBOYW1lLCB3aW5kb3cud2dVTFMoJ+ivt+axguS/neaKpOmhtemdoicsICfoq4vmsYLkv53orbfpoIHpnaInKSk7XG5cdFx0XHRcdHJwcFBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHJwcFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHJwcHBhcmFtcyk7XG5cdFx0XHRcdHJwcFBhZ2UubG9hZChUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLmZpbGVSZXF1ZXN0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkoJ3R3aW5rbGVwcm90ZWN0OiDmnKrnn6Xmk43kvZznsbvlnosnLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcyA9IHtcblx0XHR0YWdnaW5nUGFnZUluaXRpYWw6ICh0YWdwYXJhbXMpID0+IHtcblx0XHRcdGlmICh0YWdwYXJhbXMudGFnID09PSAnbm9vcCcpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflupTnlKjkv53miqTmqKHmnb8nLCAn5oeJ55So5L+d6K235qih5p2/JyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmsqHku4DkuYjopoHlgZrnmoQnLCAn5rKS5LuA6bq86KaB5YGa55qEJylcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZU5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRjb25zdCBwcm90ZWN0ZWRQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShwYWdlTmFtZSwgd2luZG93LndnVUxTKCfmoIforrDpobXpnaInLCAn5qiZ6KiY6aCB6Z2iJykpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnModGFncGFyYW1zKTtcblx0XHRcdHByb3RlY3RlZFBhZ2UubG9hZChUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLnRhZ2dpbmdQYWdlKTtcblx0XHR9LFxuXHRcdGdldFRhZ2dlZFBhZ2U6IChwYXJhbXMsIHRleHQpID0+IHtcblx0XHRcdGxldCB0YWc7XG5cdFx0XHRsZXQgc3VtbWFyeTtcblx0XHRcdGNvbnN0IG9sZHRhZ19yZSA9XG5cdFx0XHRcdC8oPzo8bm9pbmNsdWRlPik/WyBcXHRdKlxce1xce1xccyoocHAtW157fV0qP3xwcm90ZWN0ZWR8KD86dHx2fHN8cC18dXNlcnRhbGstdnx1c2VydGFsay1zfHNifG1vdmUpcHJvdGVjdGVkKD86Mik/fHByb3RlY3RlZCB0ZW1wbGF0ZXxwcml2YWN5IHByb3RlY3Rpb24pXFxzKj9cXH1cXH1cXHMqKD86PFxcL25vaW5jbHVkZT4pP1xccyovZ2k7XG5cdFx0XHRjb25zdCByZV9yZXN1bHQgPSBvbGR0YWdfcmUuZXhlYyh0ZXh0KTtcblx0XHRcdGlmIChcblx0XHRcdFx0cmVfcmVzdWx0ICYmXG5cdFx0XHRcdChwYXJhbXMudGFnID09PSAnbm9uZScgfHxcblx0XHRcdFx0XHRjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflnKjpobXpnaLkuIrmib7liLB7eycsICflnKjpoIHpnaLkuIrmib7liLB7eycpICtcblx0XHRcdFx0XHRcdFx0cmVfcmVzdWx0WzFdICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCd9fVxcbuWNleWHu+ehruWumuS7peenu+mZpO+8jOaIluWNleWHu+WPlua2iOS7peWPlua2iOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J319XFxu6bue5pOK56K65a6a5Lul56e76Zmk77yM5oiW6bue5pOK5Y+W5raI5Lul5Y+W5raI5pON5L2c44CCJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSlcblx0XHRcdCkge1xuXHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKG9sZHRhZ19yZSwgJycpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWcgPT09ICdub25lJykge1xuXHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfnp7vpmaTkv53miqTmqKHmnb8nLCAn56e76Zmk5L+d6K235qih5p2/Jyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQoe3RhZ30gPSBwYXJhbXMpO1xuXHRcdFx0XHRpZiAocGFyYW1zLnJlYXNvbikge1xuXHRcdFx0XHRcdHRhZyArPSBgfHJlYXNvbj0ke3BhcmFtcy5yZWFzb259YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGFyYW1zLnNob3dleHBpcnkgJiYgcGFyYW1zLmV4cGlyeSAmJiAhTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkocGFyYW1zLmV4cGlyeSkpIHtcblx0XHRcdFx0XHR0YWcgKz0gJ3xleHBpcnk9e3snLmNvbmNhdCgnc3Vic3Q6JywgYCN0aW1lOmN8JHtwYXJhbXMuZXhwaXJ5fX19YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5zbWFsbCkge1xuXHRcdFx0XHRcdHRhZyArPSAnfHNtYWxsPXllcyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKC9eXFxzKiMoPzpyZWRpcmVjdHzph43lrprlkJF86YeN5paw5bCO5ZCRKS9pLnRlc3QodGV4dCkpIHtcblx0XHRcdFx0XHQvLyByZWRpcmVjdCBwYWdlXG5cdFx0XHRcdFx0Ly8gT25seSB0YWcgaWYgbm8ge3tyY2F0IHNoZWxsfX0gaXMgZm91bmRcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHR0ZXh0Lm1hdGNoKFxuXHRcdFx0XHRcdFx0XHQve3soPzpSZWRpcmVjdFsgX11jYXRlZ29yeSBzaGVsbHxSY2F0WyBfXXNoZWxsfFRoaXNbIF9daXMgYSByZWRpcmVjdHzlpJrnp43nsbvlnovph43lrprlkJF85aSa56iu6aGe5Z6L6YeN5a6a5ZCRfOWkmueorumhnuWei+mHjeaWsOWwjuWQkXzlpJrnp43nsbvlnovph43mlrDlr7zlkJF8UjB85YW25LuW6YeN5a6a5ZCRfFJDU3xSZWRpcmVjdFsgX11zaGVsbCkvaVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHRcdCflt7LlrZjlnKhSZWRpcmVjdCBjYXRlZ29yeSBzaGVsbCcsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5rKh5LuA5LmI5Y+v5YGa55qEJywgJ+aykuS7gOm6vOWPr+WBmueahCcpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0LyMoPzpyZWRpcmVjdHzph43lrprlkJF86YeN5paw5bCO5ZCRKSA/KFxcW1xcWy4qP1xcXVxcXSkoLiopL2ksXG5cdFx0XHRcdFx0XHRgI1JFRElSRUNUICQxJDJcXG5cXG57eyR7dGFnfX19YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5ub2luY2x1ZGUpIHtcblx0XHRcdFx0XHRcdHRhZyA9IGA8bm9pbmNsdWRlPnt7JHt0YWd9fX08L25vaW5jbHVkZT5gO1xuXHRcdFx0XHRcdFx0Ly8g5Y+q5pyJ6KGo5qC86ZyA6KaB5Y2V54us5Yqg5Zue6L2m77yM5YW25LuW5oOF5Ya15Yqg5Zue6L2m5Lya56C05Z2P5qih5p2/44CCXG5cdFx0XHRcdFx0XHRpZiAodGV4dC5pbmRleE9mKCd7fCcpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdHRhZyArPSAnXFxuJztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGFnID0gYHt7JHt0YWd9fX1cXG5gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlc1xuXHRcdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0XHRcdHRleHQgPSB5c2FyY2hpdmVzX3BhZ2UuaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXModGFnLCBUd2lua2xlLmhhdG5vdGVSZWdleCkuZ2V0VGV4dCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnkgPSBg5Yqg5YWle3ske3BhcmFtcy50YWd9fX1gO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGV4dCxcblx0XHRcdFx0c3VtbWFyeSxcblx0XHRcdH07XG5cdFx0fSxcblx0XHR0YWdnaW5nUGFnZTogKHByb3RlY3RlZFBhZ2UpID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHByb3RlY3RlZFBhZ2UuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcHJvdGVjdGVkUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3QgbmV3VmVyc2lvbiA9IFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MuZ2V0VGFnZ2VkUGFnZShwYXJhbXMsIHRleHQpO1xuXHRcdFx0aWYgKG5ld1ZlcnNpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRwcm90ZWN0ZWRQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRFZGl0U3VtbWFyeShuZXdWZXJzaW9uLnN1bW1hcnkpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoUFBUYWdnZWRQYWdlcycpKTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0UGFnZVRleHQobmV3VmVyc2lvbi50ZXh0KTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nKCk7IC8vIG5vIG5lZWQgdG8gbGV0IGFkbWlucyBrbm93IHRoZXkgYXJlIGVkaXRpbmcgdGhyb3VnaCBwcm90ZWN0aW9uXG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNhdmUoKTtcblx0XHR9LFxuXHRcdGZpbGVSZXF1ZXN0OiAocnBwUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcnBwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0ZXh0ID0gcnBwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzRWxlbWVudCA9IHJwcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0Y29uc3QgcnBwUmUgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgPT09XFxcXHMqKFxcXFxbXFxcXFspP1xcXFxzKjo/XFxcXHMqJHtNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKE1vcmViaXRzLnBhZ2VOYW1lTm9ybSl9XFxcXHMqKFxcXFxdXFxcXF0pP1xcXFxzKj09PWAsXG5cdFx0XHRcdCdtJ1xuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHRhZyA9IHJwcFJlLmV4ZWModGV4dCk7XG5cdFx0XHRjb25zdCBycHBMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0cnBwTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChycHBQYWdlLmdldFBhZ2VOYW1lKCkpKTtcblx0XHRcdHJwcExpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocnBwUGFnZS5nZXRQYWdlTmFtZSgpKSk7XG5cdFx0XHRpZiAodGFnKSB7XG5cdFx0XHRcdHN0YXR1c0VsZW1lbnQuZXJyb3IoW1xuXHRcdFx0XHRcdHJwcExpbmssXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCflt7LmnInlr7nmraTpobXpnaLnmoTkv53miqTmj5DlkI3vvIzlj5bmtojmk43kvZzjgIInLCAn5bey5pyJ5bCN5q2k6aCB6Z2i55qE5L+d6K235o+Q5ZCN77yM5Y+W5raI5pON5L2c44CCJyksXG5cdFx0XHRcdF0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsZXQgbmV3dGFnID0gYD09PSBbWzoke01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXSA9PT1cXG5gO1xuXHRcdFx0aWYgKG5ldyBSZWdFeHAoYF4ke213LnV0aWwuZXNjYXBlUmVnRXhwKG5ld3RhZykucmVwbGFjZSgvXFxzKy9nLCBTdHJpbmcucmF3YFxccypgKX1gLCAnbScpLnRlc3QodGV4dCkpIHtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC5lcnJvcihbXG5cdFx0XHRcdFx0cnBwTGluayxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suacieWvueatpOmhtemdoueahOS/neaKpOaPkOWQje+8jOWPlua2iOaTjeS9nOOAgicsICflt7LmnInlsI3mraTpoIHpnaLnmoTkv53orbfmj5DlkI3vvIzlj5bmtojmk43kvZzjgIInKSxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCB3b3Jkcztcblx0XHRcdHN3aXRjaCAocGFyYW1zLmV4cGlyeSkge1xuXHRcdFx0XHRjYXNlICd0ZW1wb3JhcnknOlxuXHRcdFx0XHRcdHdvcmRzID0gd2luZG93LndnVUxTKCfkuLTml7YnLCAn6Ieo5pmCJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2luZmluaXR5Jzpcblx0XHRcdFx0XHR3b3JkcyA9ICfmsLjkuYUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHdvcmRzID0gJyc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR3b3JkcyArPSBwYXJhbXMudHlwZW5hbWU7XG5cdFx0XHRuZXd0YWcgKz0gYCogPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDkwJVwiPiR7d2luZG93LndnVUxTKCflvZPliY3kv53miqTnirbmgIEnLCAn55uu5YmN5L+d6K2354uA5oWLJyl977yae3twcm90ZWN0aW9uIHN0YXR1c3wke1xuXHRcdFx0XHQvWz1dLy50ZXN0KE1vcmViaXRzLnBhZ2VOYW1lTm9ybSkgPyAnMT0nIDogJydcblx0XHRcdH0ke01vcmViaXRzLnBhZ2VOYW1lTm9ybX19fTwvc3Bhbj5cXG5gO1xuXHRcdFx0bmV3dGFnICs9IGAke1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axgicsICfoq4vmsYInKSArXG5cdFx0XHRcdE1vcmViaXRzLnN0cmluZy50b1VwcGVyQ2FzZUZpcnN0Q2hhcih3b3JkcykgK1xuXHRcdFx0XHQocGFyYW1zLnJlYXNvbiA9PT0gJycgPyAn44CCJyA6IGDvvJoke01vcmViaXRzLnN0cmluZy5mb3JtYXRSZWFzb25UZXh0KHBhcmFtcy5yZWFzb24pfWApXG5cdFx0XHR9LS1+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0bGV0IHJlZztcblx0XHRcdGlmIChwYXJhbXMuY2F0ZWdvcnkgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdHJlZyA9IC8oPT1cXHMq6K+35rGC6Kej6Zmk5L+d5oqkXFxzKj09KS87XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZWcgPSAvKHt7XFxzKlxcL2hlYWRlclxccyp9fSkvO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3JpZ2luYWxUZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKHJlZywgYCQxXFxuJHtuZXd0YWd9XFxuYCk7XG5cdFx0XHRpZiAodGV4dC5sZW5ndGggPT09IG9yaWdpbmFsVGV4dExlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBsaW5rbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGlua25vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgbXcudXRpbC5nZXRVcmwoJ0hlbHA6VHdpbmtsZS/kv67lpI1SRlBQJykpO1xuXHRcdFx0XHRsaW5rbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ+WmguS9leS/ruWkjVJGUFAnLCAn5aaC5L2V5L+u5b6pUkZQUCcpKSk7XG5cdFx0XHRcdHN0YXR1c0VsZW1lbnQuZXJyb3IoW1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfml6Dms5XlnKhMSUI6UkZQUOS4iuaJvuWIsOebuOWFs+WumuS9jeeCueagh+iusO+8jOimgeS/ruWkjeatpOmXrumimO+8jOivt+WPguingScsXG5cdFx0XHRcdFx0XHQn54Sh5rOV5ZyoTElCOlJGUFDkuIrmib7liLDnm7jpl5zlrprkvY3pu57mqJnoqJjvvIzopoHkv67lvqnmraTllY/poYzvvIzoq4vlj4PoposnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRsaW5rbm9kZSxcblx0XHRcdFx0XHQn44CCJyxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHN0YXR1c0VsZW1lbnQuc3RhdHVzKCfliqDlhaXmlrDmj5DlkI3igKYnKTtcblx0XHRcdHJwcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdGAvKiAke01vcmViaXRzLnBhZ2VOYW1lTm9ybX0gKi8gJHt3aW5kb3cud2dVTFMoJ+ivt+axguWvuScsICfoq4vmsYLlsI0nKX1bWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dJHtcblx0XHRcdFx0XHRwYXJhbXMudHlwZW5hbWVcblx0XHRcdFx0fWBcblx0XHRcdCk7XG5cdFx0XHRycHBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHJwcFBhZ2Uuc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRycHBQYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHJwcFBhZ2Uuc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdC8vIFdhdGNoIHRoZSBwYWdlIGJlaW5nIHJlcXVlc3RlZFxuXHRcdFx0XHRjb25zdCB3YXRjaFByZWYgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoUmVxdWVzdGVkUGFnZXMnKTtcblx0XHRcdFx0Ly8gYWN0aW9uPXdhdGNoIGhhcyBubyB3YXkgdG8gcmVseSBvbiB1c2VyIHByZWZlcmVuY2VzIChUMjYyOTEyKSwgc28gd2UgZG8gaXQgbWFudWFsbHkuXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGRlZmF1bHQgcHJlZiBhcHBlYXJzIHRvIHJlbGlhYmx5IHJldHVybiAnMScgKHN0cmluZyksXG5cdFx0XHRcdC8vIGJ1dCB0aGF0J3Mgbm90IGNvbnNpc3RlbnQgYW1vbmcgcHJlZnMgc28gbWlnaHQgYXMgd2VsbCBiZSBcImNvcnJlY3RcIlxuXHRcdFx0XHRjb25zdCB3YXRjaCA9XG5cdFx0XHRcdFx0d2F0Y2hQcmVmICE9PSAnbm8nICYmXG5cdFx0XHRcdFx0KHdhdGNoUHJlZiAhPT0gJ2RlZmF1bHQnIHx8ICEhTnVtYmVyLnBhcnNlSW50KG13LnVzZXIub3B0aW9ucy5nZXQoJ3dhdGNoZGVmYXVsdCcpLCAxMCkpO1xuXHRcdFx0XHRpZiAod2F0Y2gpIHtcblx0XHRcdFx0XHRjb25zdCB3YXRjaF9xdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3dhdGNoJyxcblx0XHRcdFx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0dG9rZW46IG13LnVzZXIudG9rZW5zLmdldCgnd2F0Y2hUb2tlbicpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Ly8gT25seSBhZGQgdGhlIGV4cGlyeSBpZiBwYWdlIGlzIHVud2F0Y2hlZCBvciBhbHJlYWR5IHRlbXBvcmFyaWx5IHdhdGNoZWRcblx0XHRcdFx0XHRpZiAoVHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgIT09IHRydWUgJiYgd2F0Y2hQcmVmICE9PSAnZGVmYXVsdCcgJiYgd2F0Y2hQcmVmICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0d2F0Y2hfcXVlcnkuZXhwaXJ5ID0gd2F0Y2hQcmVmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+Wwhuivt+axguS/neaKpOeahOmhtemdouWKoOWFpeWIsOebkeinhuWIl+ihqCcsICflsIfoq4vmsYLkv53orbfnmoTpoIHpnaLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRcdHdhdGNoX3F1ZXJ5XG5cdFx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xvc2VSZXF1ZXN0OiAocnBwUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcnBwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0ZXh0ID0gcnBwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzRWxlbWVudCA9IHJwcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0Y29uc3Qgc2VjdGlvbnMgPSB0ZXh0LnNwbGl0KC8oPz1cXG49PVxccyror7fmsYLop6PpmaTkv53miqRcXHMqPT0pLyk7XG5cdFx0XHRpZiAoc2VjdGlvbnMubGVuZ3RoICE9PSAyKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmtub2RlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGlua25vZGUyLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKCdIZWxwOlR3aW5rbGUv5L+u5aSNUkZQUCcpKTtcblx0XHRcdFx0bGlua25vZGUyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCflpoLkvZXkv67lpI1SRlBQJykpO1xuXHRcdFx0XHRzdGF0dXNFbGVtZW50LmVycm9yKFtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5peg5rOV5ZyoTElCOlJGUFDkuIrmib7liLDnm7jlhbPlrprkvY3ngrnmoIforrDvvIzopoHkv67lpI3mraTpl67popjvvIzor7flj4Lop4EnLFxuXHRcdFx0XHRcdFx0J+eEoeazleWcqExJQjpSRlBQ5LiK5om+5Yiw55u46Zec5a6a5L2N6bue5qiZ6KiY77yM6KaB5L+u5b6p5q2k5ZWP6aGM77yM6KuL5Y+D6KaLJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0bGlua25vZGUyLFxuXHRcdFx0XHRcdCfjgIInLFxuXHRcdFx0XHRdKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHNlY3Rpb25UZXh0O1xuXHRcdFx0bGV0IGV4cGlyeVRleHQgPSAnJztcblx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0Wywgc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRbc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHRcdGV4cGlyeVRleHQgPSBNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlcXVlc3RMaXN0ID0gc2VjdGlvblRleHQuc3BsaXQoLyg/PVxcbj09PS4rPT09XFxzKlxcbikvKTtcblx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0Y29uc3QgcnBwUmUgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgPT09XFxcXHMqKFxcXFxbXFxcXFspP1xcXFxzKjo/XFxcXHMqJHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KE1vcmViaXRzLnBhZ2VOYW1lTm9ybSl9XFxcXHMqKFxcXFxdXFxcXF0pP1xcXFxzKj09PWAsXG5cdFx0XHRcdCdtJ1xuXHRcdFx0KTtcblx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgcmVxdWVzdExpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHJwcFJlLmV4ZWMocmVxdWVzdExpc3RbaV0pKSB7XG5cdFx0XHRcdFx0cmVxdWVzdExpc3RbaV0gPSByZXF1ZXN0TGlzdFtpXS50cmltRW5kKCk7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy50eXBlID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0XHRcdFx0cmVxdWVzdExpc3RbaV0gKz0gJ1xcbjoge3tSRlBQfGlzdW59feOAgi0tfn4nLmNvbmNhdCgnfn5cXG4nKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVxdWVzdExpc3RbaV0gKz0gYFxcbjoge3tSRlBQfCR7cGFyYW1zLnR5cGV9fCR7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpID8gJ2luZmluaXR5JyA6IGV4cGlyeVRleHRcblx0XHRcdFx0XHRcdH19feOAgi0tfn5gLmNvbmNhdCgnfn5cXG4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWZvdW5kKSB7XG5cdFx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+ayoeacieaJvuWIsOebuOWFs+eahOivt+axgicsICfmspLmnInmib7liLDnm7jpl5znmoToq4vmsYInKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0dGV4dCA9IHNlY3Rpb25zWzBdICsgcmVxdWVzdExpc3Quam9pbignJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0ZXh0ID0gcmVxdWVzdExpc3Quam9pbignJykgKyBzZWN0aW9uc1sxXTtcblx0XHRcdH1cblx0XHRcdGxldCBzdW1tYXJ5ID0gJyc7XG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFssIHNlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0W3NlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoIChwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRjYXNlICdzZW1pJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfljYrkv53miqQnLCAn5Y2K5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3RlbXAnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+aooeadv+S/neaKpCcsICfmqKHmnb/kv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZWNwJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCflu7bkvLjnoa7orqTkv53miqQnLCAn5bu25Ly456K66KqN5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2Z1bGwnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmV2aXNpb25wcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+eJiOacrOS/neaKpCcsICfniYjmnKzkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnb2ZmaWNpYWxwcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ijgeWnlOS8muS/neaKpCcsICfoo4Hlp5TmnIPkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbW92ZSc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqkJywgJ+enu+WLleS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzYWx0Jzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfnmb3nurjkv53miqQnLCAn55m957SZ5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3VucHJvdGVjdCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn6Kej6Zmk5L+d5oqkJywgJ+ino+mZpOS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+acquefpeS/neaKpOexu+WeiycsICfmnKrnn6Xkv53orbfpoZ7liKUnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdHN1bW1hcnkgPSBleHBpcnlUZXh0ICsgc3VtbWFyeTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN1bW1hcnkgKz0gZXhwaXJ5VGV4dDtcblx0XHRcdH1cblx0XHRcdHJwcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoYC8qICR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfSAqLyAke3N1bW1hcnl9YCk7XG5cdFx0XHRycHBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHJwcFBhZ2Uuc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRycHBQYWdlLnNhdmUoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuZm9ybWF0UHJvdGVjdGlvbkRlc2NyaXB0aW9uID0gKHByb3RlY3Rpb25MZXZlbHMpID0+IHtcblx0XHRjb25zdCBwcm90ZWN0aW9uTm9kZSA9IFtdO1xuXHRcdGlmIChPYmplY3Qua2V5cyhwcm90ZWN0aW9uTGV2ZWxzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdHByb3RlY3Rpb25Ob2RlLnB1c2goJChgPGI+JHt3aW5kb3cud2dVTFMoJ+aXoOS/neaKpCcsICfnhKHkv53orbcnKX08L2I+YClbMF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGNvbnN0IFt0eXBlLCBzZXR0aW5nc10gb2YgT2JqZWN0LmVudHJpZXMocHJvdGVjdGlvbkxldmVscykpIHtcblx0XHRcdFx0bGV0IGxhYmVsO1xuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICdlZGl0Jzpcblx0XHRcdFx0XHRcdGxhYmVsID0gd2luZG93LndnVUxTKCfnvJbovpEnLCAn57eo6LyvJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdtb3ZlJzpcblx0XHRcdFx0XHRcdGxhYmVsID0gd2luZG93LndnVUxTKCfnp7vliqgnLCAn56e75YuVJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdjcmVhdGUnOlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB3aW5kb3cud2dVTFMoJ+WIm+W7uicsICflu7rnq4snKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VwbG9hZCc6XG5cdFx0XHRcdFx0XHRsYWJlbCA9IHdpbmRvdy53Z1VMUygn5LiK5LygJywgJ+S4iuWCsycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGxhYmVsID0gdHlwZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCBsZXZlbDtcblx0XHRcdFx0c3dpdGNoIChzZXR0aW5ncy5sZXZlbCkge1xuXHRcdFx0XHRcdGNhc2UgJ29mZmljaWFscHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjmoaPmoYjnkIbkuovlkZgnLCAn5YOF5YWB6Kix5qqU5qGI55CG5LqL5ZOhJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvY29uZmlybWVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjoh6rliqjnoa7orqTnlKjmiLcnLCAn5YOF5YWB6Kix6Ieq5YuV56K66KqN5L2/55So6ICFJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICd0ZW1wbGF0ZWVkaXRvcic6XG5cdFx0XHRcdFx0XHRsZXZlbCA9IHdpbmRvdy53Z1VMUygn5LuF5qih5p2/57yW6L6R5ZGY5ZKM566h55CG5ZGYJywgJ+WDheaooeadv+e3qOi8r+WToeWSjOeuoeeQhuWToScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3lzb3AnOlxuXHRcdFx0XHRcdFx0bGV2ZWwgPSB3aW5kb3cud2dVTFMoJ+S7heeuoeeQhuWRmCcsICflg4XnrqHnkIblk6EnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHQoe2xldmVsfSA9IHNldHRpbmdzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3RlY3Rpb25Ob2RlLnB1c2goJChgPGI+JHtsYWJlbH3vvJoke2xldmVsfTwvYj5gKVswXSk7XG5cdFx0XHRcdGlmIChNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShzZXR0aW5ncy5leHBpcnkpKSB7XG5cdFx0XHRcdFx0cHJvdGVjdGlvbk5vZGUucHVzaCh3aW5kb3cud2dVTFMoJ++8iOaXoOmZkOacn++8iScsICfvvIjnhKHpmZDmnJ/vvIknKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cHJvdGVjdGlvbk5vZGUucHVzaChcblx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn77yI6L+H5pyf77yaJywgJ++8iOmBjuacn++8micpICsgbmV3IE1vcmViaXRzLmRhdGUoc2V0dGluZ3MuZXhwaXJ5KS5jYWxlbmRhcigndXRjJyl977yJYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNldHRpbmdzLmNhc2NhZGUpIHtcblx0XHRcdFx0XHRwcm90ZWN0aW9uTm9kZS5wdXNoKHdpbmRvdy53Z1VMUygn77yI6L+e6ZSB77yJJywgJ++8iOmAo+mOlu+8iScpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcHJvdGVjdGlvbk5vZGU7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUucHJvdGVjdCwgJ3Byb3RlY3QnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSBmcmllbmRseXRhZy5qcyAqL1xuKGZ1bmN0aW9uIGZyaWVuZGx5dGFnKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiBmcmllbmRseXRhZy5qczogVGFnIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJUYWdcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBhcnRpY2xlcyBhbmQgZHJhZnRzOyBmaWxlIHBhZ2VzIHdpdGggYSBjb3JyZXNwb25kaW5nIGZpbGVcblx0ICogd2hpY2ggaXMgbG9jYWwgKG5vdCBvbiBTaGFyZSk7IGFsbCByZWRpcmVjdHNcblx0ICovXG5cdFR3aW5rbGUudGFnID0gKCkgPT4ge1xuXHRcdC8vIHJlZGlyZWN0IHRhZ2dpbmdcblx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZSA9IHdpbmRvdy53Z1VMUygn6YeN5a6a5ZCRJywgJ+mHjeaWsOWwjuWQkScpO1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZUVuID0gJ3JlZGlyZWN0Jztcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUudGFnLmNhbGxiYWNrLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKSxcblx0XHRcdFx0J2ZyaWVuZGx5LXRhZycsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6w6YeN5a6a5ZCRJywgJ+aomeiomOmHjeaWsOWwjuWQkScpXG5cdFx0XHQpO1xuXHRcdFx0Ly8gZmlsZSB0YWdnaW5nXG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYgJiZcblx0XHRcdCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgJiZcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpXG5cdFx0KSB7XG5cdFx0XHRUd2lua2xlLnRhZy5tb2RlID0gd2luZG93LndnVUxTKCfmlofku7YnLCAn5qqU5qGIJyk7XG5cdFx0XHRUd2lua2xlLnRhZy5tb2RlRW4gPSAnZmlsZSc7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHRUd2lua2xlLnRhZy5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrAnLCAn5qiZ6KiYJyksXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOaWh+S7ticsICfmqJnoqJjmqpTmoYgnKVxuXHRcdFx0KTtcblx0XHRcdC8vIGFydGljbGUvZHJhZnQgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQoWzAsIDMwMl0uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSkgJiYgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZSA9IHdpbmRvdy53Z1VMUygn5p2h55uuJywgJ+aineebricpO1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZUVuID0gJ2FydGljbGUnO1xuXHRcdFx0Ly8gQ2FuJ3QgcmVtb3ZlIHRhZ3Mgd2hlbiBub3Qgdmlld2luZyBjdXJyZW50IHZlcnNpb25cblx0XHRcdFR3aW5rbGUudGFnLmNhblJlbW92ZSA9XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpID09PSBtdy5jb25maWcuZ2V0KCd3Z1JldmlzaW9uSWQnKSAmJlxuXHRcdFx0XHQvLyBEaXNhYmxlZCBvbiBsYXRlc3QgZGlmZiBiZWNhdXNlIHRoZSBkaWZmIHNsaWRlciBjb3VsZCBiZSB1c2VkIHRvIHNsaWRlXG5cdFx0XHRcdC8vIGF3YXkgZnJvbSB0aGUgbGF0ZXN0IGRpZmYgd2l0aG91dCBjYXVzaW5nIHRoZSBzY3JpcHQgdG8gcmVsb2FkXG5cdFx0XHRcdCFtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS50YWcuY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0XHQnZnJpZW5kbHktdGFnJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDmnaHnm64nLCAn5qiZ6KiY5qKd55uuJylcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLnRhZy5jaGVja2VkVGFncyA9IFtdO1xuXHRUd2lua2xlLnRhZy5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYzMCwgVHdpbmtsZS50YWcubW9kZUVuID09PSAnYXJ0aWNsZScgPyA1MDAgOiA0MDApO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfmoIforrDorr7nva4nLCAn5qiZ6KiY6Kit5a6aJyksICdIOlRXL1BSRUYjdGFnJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3RhZycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUudGFnLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn562b6YCJ5qCH6K6w5YiX6KGo77yaJywgJ+evqemBuOaomeiomOWIl+ihqO+8micpLFxuXHRcdFx0bmFtZTogJ3F1aWNrZmlsdGVyJyxcblx0XHRcdHNpemU6ICczMCcsXG5cdFx0XHRldmVudDogZnVuY3Rpb24gZXZlbnQoKSB7XG5cdFx0XHRcdC8vIGZsdXNoIHRoZSBET00gb2YgYWxsIGV4aXN0aW5nIHVuZGVybGluZSBzcGFuc1xuXHRcdFx0XHQkYWxsQ2hlY2tib3hEaXZzLmZpbmQoJy5zZWFyY2gtaGl0JykuZWFjaCgoX2ksIGUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBsYWJlbF9lbGVtZW50ID0gZS5wYXJlbnRFbGVtZW50O1xuXHRcdFx0XHRcdC8vIFRoaXMgd291bGQgY29udmVydCA8bGFiZWw+SGVsbG8gPHNwYW4gY2xhc3M9c2VhcmNoLWhpdD53bzwvc3Bhbj5ybGQ8L2xhYmVsPlxuXHRcdFx0XHRcdC8vIHRvIDxsYWJlbD5IZWxsbyB3b3JsZDwvbGFiZWw+XG5cdFx0XHRcdFx0bGFiZWxfZWxlbWVudC5pbm5lckhUTUwgPSBsYWJlbF9lbGVtZW50LnRleHRDb250ZW50O1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKHRoaXMudmFsdWUpIHtcblx0XHRcdFx0XHQkYWxsQ2hlY2tib3hEaXZzLmhpZGUoKTtcblx0XHRcdFx0XHQkYWxsSGVhZGVycy5oaWRlKCk7XG5cdFx0XHRcdFx0Y29uc3Qgc2VhcmNoU3RyaW5nID0gdGhpcy52YWx1ZTtcblx0XHRcdFx0XHRjb25zdCBzZWFyY2hSZWdleCA9IG5ldyBSZWdFeHAobXcudXRpbC5lc2NhcGVSZWdFeHAoc2VhcmNoU3RyaW5nKSwgJ2knKTtcblx0XHRcdFx0XHQkYWxsQ2hlY2tib3hEaXZzLmZpbmQoJ2xhYmVsJykuZWFjaCgoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBsYWJlbF90ZXh0ID0gZWxlbWVudC50ZXh0Q29udGVudDtcblx0XHRcdFx0XHRcdGNvbnN0IHNlYXJjaEhpdCA9IHNlYXJjaFJlZ2V4LmV4ZWMobGFiZWxfdGV4dCk7XG5cdFx0XHRcdFx0XHRpZiAoc2VhcmNoSGl0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgW3RleHRub2RlXSA9IGVsZW1lbnQuY2hpbGROb2Rlcztcblx0XHRcdFx0XHRcdFx0cmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRleHRub2RlKTtcblx0XHRcdFx0XHRcdFx0cmFuZ2Uuc2V0U3RhcnQodGV4dG5vZGUsIHNlYXJjaEhpdC5pbmRleCk7XG5cdFx0XHRcdFx0XHRcdHJhbmdlLnNldEVuZCh0ZXh0bm9kZSwgc2VhcmNoSGl0LmluZGV4ICsgc2VhcmNoU3RyaW5nLmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IFt1bmRlcmxpbmVfc3Bhbl0gPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnc2VhcmNoLWhpdCcpXG5cdFx0XHRcdFx0XHRcdFx0LmNzcygndGV4dC1kZWNvcmF0aW9uJywgJ3VuZGVybGluZScpO1xuXHRcdFx0XHRcdFx0XHRyYW5nZS5zdXJyb3VuZENvbnRlbnRzKHVuZGVybGluZV9zcGFuKTtcblx0XHRcdFx0XHRcdFx0ZWxlbWVudC5wYXJlbnRFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyAvLyBzaG93XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5zaG93KCk7XG5cdFx0XHRcdFx0JGFsbEhlYWRlcnMuc2hvdygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHRcdHN3aXRjaCAoVHdpbmtsZS50YWcubW9kZUVuKSB7XG5cdFx0XHRjYXNlICdhcnRpY2xlJzpcblx0XHRcdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5p2h55uu57u05oqk5qCH6K6wJywgJ+aineebrue2reitt+aomeiomCcpKTtcblx0XHRcdFx0Ly8gQnVpbGQgc29ydGluZyBhbmQgbG9va3VwIG9iamVjdCBmbGF0T2JqZWN0LCB3aGljaCBpcyBhbHdheXNcblx0XHRcdFx0Ly8gbmVlZGVkIGJ1dCBhbHNvIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFscGhhYmV0aWNhbCBsaXN0XG5cdFx0XHRcdC8vIFdvdWxkIGJlIGluZmluaXRlbHkgYmV0dGVyIHdpdGggT2JqZWN0LnZhbHVlc1xuXHRcdFx0XHRUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3QgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBncm91cCBvZiBUd2lua2xlLnRhZy5hcnRpY2xlLnRhZ0xpc3QpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHN1Ymdyb3VwIG9mIGdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRpZiAoc3ViZ3JvdXAudmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHN1Ymdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W2l0ZW0udGFnXSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiAhIWl0ZW0uZXhjbHVkZU1JLFxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFtzdWJncm91cC50YWddID0ge1xuXHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBzdWJncm91cC5kZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6ICEhc3ViZ3JvdXAuZXhjbHVkZU1JLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvcnRvcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p+l55yL5YiX6KGo77yaJywgJ+aqouimluWIl+ihqO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5Y+C5pWw6K6+572u77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5YGP5aW96Kit5a6a77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUudGFnLnVwZGF0ZVNvcnRPcmRlcixcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2NhdCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aMieexu+WeiycsICfmjInpoZ7liKUnKSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IFR3aW5rbGUuZ2V0UHJlZigndGFnQXJ0aWNsZVNvcnRPcmRlcicpID09PSAnY2F0Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2FscGhhJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCd0YWdBcnRpY2xlU29ydE9yZGVyJykgPT09ICdhbHBoYScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUudGFnLmNhblJlbW92ZSkge1xuXHRcdFx0XHRcdGNvbnN0IGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0XHRkaXZFbGVtZW50LmlubmVySFRNTCA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfopoHnp7vpmaTnjrDmnInnu7TmiqTmoIforrDvvIzor7fku47lvZPliY3mnaHnm67niYjmnKzkuK3miZPlvIDigJzmoIforrDigJ3oj5zljZUnLFxuXHRcdFx0XHRcdFx0J+imgeenu+mZpOePvuaciee2reitt+aomeiomO+8jOiri+W+nuebruWJjeaineebrueJiOacrOS4reaJk+mWi+OAjOaomeiomOOAjemBuOWWridcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3VudGFnbm90aWNlJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBkaXZFbGVtZW50LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3RhZ1dvcmtBcmVhJyxcblx0XHRcdFx0XHRjbGFzc05hbWU6ICdtb3JlYml0cy1zY3JvbGxib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnbWF4LWhlaWdodDogMjhlbScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WmguWPr+iDve+8jOWQiOW5tuWFpXt7bXVsdGlwbGUgaXNzdWVzfX0nLFxuXHRcdFx0XHRcdFx0XHRcdCflpoLlj6/og73vvIzlkIjkvbXlhaV7e211bHRpcGxlIGlzc3Vlc319J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2dyb3VwJyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2dyb3VwJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfoi6XliqDlhaV7e211bHRpcGxlIGlzc3Vlc3195pSv5oyB55qE5LiJ5Liq5Lul5LiK55qE5qih5p2/77yM5omA5pyJ5pSv5oyB55qE5qih5p2/6YO95Lya6KKr5ZCI5bm25YWle3ttdWx0aXBsZSBpc3N1ZXN9feaooeadv+S4reOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeWKoOWFpXt7bXVsdGlwbGUgaXNzdWVzfX3mlK/mj7TnmoTkuInlgIvku6XkuIrnmoTmqKHmnb/vvIzmiYDmnInmlK/mj7TnmoTmqKHmnb/pg73mnIPooqvlkIjkvbXlhaV7e211bHRpcGxlIGlzc3Vlc3195qih5p2/5Lit44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmdldFByZWYoJ2dyb3VwQnlEZWZhdWx0JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+mZhOWKoOS6jue8lui+keaRmOimgeeahOWPr+mAieeQhueUse+8jOS+i+WmguaMh+WHuuadoeebruWGheWuueeahOWTquS6m+mDqOWIhuaciemXrumimOaIluenu+mZpOaooeadv+eahOeQhueUse+8jOS9huiLpeeQhueUseW+iOmVv+WImeW6lOivpeWPkeihqOWcqOiuqOiuuumhteOAgicsXG5cdFx0XHRcdFx0XHQn6ZmE5Yqg5pa857eo6Lyv5pGY6KaB55qE5Y+v6YG455CG55Sx77yM5L6L5aaC5oyH5Ye65qKd55uu5YWn5a6555qE5ZOq5Lqb6YOo5YiG5pyJ5ZWP6aGM5oiW56e76Zmk5qih5p2/55qE55CG55Sx77yM5L2G6Iul55CG55Sx5b6I6ZW35YmH5oeJ6Kmy55m86KGo5Zyo6KiO6KuW6aCB44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0c2l6ZTogJzgwJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmlsZSc6XG5cdFx0XHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aWh+S7tue7tOaKpOagh+iusCcsICfmqpTmoYjntq3orbfmqJnoqJgnKSk7XG5cdFx0XHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS50YWcuZmlsZUxpc3QpIHtcblx0XHRcdFx0XHRpZiAoZ3JvdXAuYnVpbGRGaWxlbmFtZSkge1xuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBlbCBvZiBncm91cC52YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRlbC5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+abv+aNoueahOaWh+S7tu+8micsICfmm7/mj5vnmoTmqpTmoYjvvJonKSxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6L6T5YWl5pu/5o2i5q2k5paH5Lu255qE5paH5Lu25ZCN56ew77yI5b+F5aGr77yJJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfovLjlhaXmm7/mj5vmraTmqpTmoYjnmoTmqpTmoYjlkI3nqLHvvIjlv4XloavvvIknXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBgJHtlbC52YWx1ZS5yZXBsYWNlKC8gL2csICdfJyl9RmlsZWAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGdyb3VwLmtleSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRcdFx0bGlzdDogZ3JvdXAudmFsdWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tRmlsZVRhZ0xpc3QnKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieaooeadvycsICfoh6roqILmqKHmnb8nKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21GaWxlVGFnTGlzdCcpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncmVkaXJlY3QnOiB7XG5cdFx0XHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+mHjeWumuWQkeagh+iusCcsICfph43mlrDlsI7lkJHmqJnoqJgnKSk7XG5cdFx0XHRcdGNvbnN0IGkgPSAxO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGdyb3VwIG9mIFR3aW5rbGUudGFnLnJlZGlyZWN0TGlzdCkge1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0aWQ6IGB0YWdIZWFkZXIke2l9YCxcblx0XHRcdFx0XHRcdGxhYmVsOiBncm91cC5rZXksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IGdyb3VwLnZhbHVlLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBpdGVtLnRhZyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7JHtpdGVtLnRhZ319fe+8miR7aXRlbS5kZXNjcmlwdGlvbn1gLFxuXHRcdFx0XHRcdFx0XHRcdHN1Ymdyb3VwOiBpdGVtLnN1Ymdyb3VwLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmVkaXJlY3RUYWdMaXN0JykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmqKHmnb8nLCAn6Ieq6KiC5qih5p2/JyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmVkaXJlY3RUYWdMaXN0JyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkoYFR3aW5rbGUudGFn77ya5pyq55+l5qih5byPICR7VHdpbmtsZS50YWcubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBhdHJvbGxpbmsnKS5sZW5ndGgpIHtcblx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdouS4uuW3suW3oeafpScsICfmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6UnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAncGF0cm9sJyxcblx0XHRcdFx0XHRcdG5hbWU6ICdwYXRyb2wnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRjbGFzc05hbWU6ICd0dy10YWctc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBmb3IgcXVpY2sgZmlsdGVyOlxuXHRcdCRhbGxDaGVja2JveERpdnMgPSAkKHJlc3VsdCkuZmluZCgnW25hbWUkPXRhZ3NdJykucGFyZW50KCk7XG5cdFx0JGFsbEhlYWRlcnMgPSAkKHJlc3VsdCkuZmluZCgnaDUnKTtcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuZm9jdXMoKTsgLy8gcGxhY2UgY3Vyc29yIGluIHRoZSBxdWljayBmaWx0ZXIgZmllbGQgYXMgc29vbiBhcyB3aW5kb3cgaXMgb3BlbmVkXG5cdFx0cmVzdWx0LnF1aWNrZmlsdGVyLmF1dG9jb21wbGV0ZSA9ICdvZmYnOyAvLyBkaXNhYmxlIGJyb3dzZXIgc3VnZ2VzdGlvbnNcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCAoZSkgPT4ge1xuXHRcdFx0aWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG5cdFx0XHRcdC8vIHByZXZlbnQgZW50ZXIga2V5IGZyb20gYWNjaWRlbnRhbGx5IHN1Ym1pdHRpbmcgdGhlIGZvcm1cblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ2FydGljbGUnKSB7XG5cdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MgPSBbXTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jYW5SZW1vdmUpIHtcblx0XHRcdFx0Ly8gTG9vayBmb3IgZXhpc3RpbmcgbWFpbnRlbmFuY2UgdGFncyBpbiB0aGUgbGVhZCBzZWN0aW9uIGFuZCBwdXQgdGhlbSBpbiBhcnJheVxuXHRcdFx0XHQvLyBBbGwgdGFncyBhcmUgSFRNTCB0YWJsZSBlbGVtZW50cyB0aGF0IGFyZSBkaXJlY3QgY2hpbGRyZW4gb2YgLm13LXBhcnNlci1vdXRwdXQsXG5cdFx0XHRcdC8vIGV4Y2VwdCB3aGVuIHRoZXkgYXJlIHdpdGhpbiB7e211bHRpcGxlIGlzc3Vlc319XG5cdFx0XHRcdCRib2R5XG5cdFx0XHRcdFx0LmZpbmQoJy5tdy1wYXJzZXItb3V0cHV0Jylcblx0XHRcdFx0XHQuY2hpbGRyZW4oKVxuXHRcdFx0XHRcdC5lYWNoKChfaSwgZSkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gYnJlYWsgb3V0IG9uIGVuY291bnRlcmluZyB0aGUgZmlyc3QgaGVhZGluZywgd2hpY2ggbWVhbnMgd2UgYXJlIG5vXG5cdFx0XHRcdFx0XHQvLyBsb25nZXIgaW4gdGhlIGxlYWQgc2VjdGlvblxuXHRcdFx0XHRcdFx0aWYgKGUudGFnTmFtZSA9PT0gJ0gyJykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBUaGUgYWJpbGl0eSB0byByZW1vdmUgdGFncyBkZXBlbmRzIG9uIHRoZSB0ZW1wbGF0ZSdzIHt7YW1ib3h9fSB8bmFtZT1cblx0XHRcdFx0XHRcdC8vIHBhcmFtZXRlciBiZWFyaW5nIHRoZSB0ZW1wbGF0ZSdzIGNvcnJlY3QgbmFtZSAocHJlZmVyYWJseSkgb3IgYSBuYW1lIHRoYXQgYXRcblx0XHRcdFx0XHRcdC8vIGxlYXN0IHJlZGlyZWN0cyB0byB0aGUgYWN0dWFsIG5hbWVcblx0XHRcdFx0XHRcdC8vIEFsbCB0YWdzIGhhdmUgdGhlaXIgZmlyc3QgY2xhc3MgbmFtZSBhcyBcImJveC1cIiArIHRlbXBsYXRlIG5hbWVcblx0XHRcdFx0XHRcdGlmIChlLmNsYXNzTmFtZS5pbmRleE9mKCdib3gtJykgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0aWYgKGUuY2xhc3NMaXN0WzBdID09PSAnYm94LemXrumimOadoeebricpIHtcblx0XHRcdFx0XHRcdFx0XHQkKGUpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnLmFtYm94Jylcblx0XHRcdFx0XHRcdFx0XHRcdC5lYWNoKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGVsZW1lbnQuY2xhc3NMaXN0WzBdLmluZGV4T2YoJ2JveC0nKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGJveFRhZyA9IGVsZW1lbnQuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MucHVzaChib3hUYWcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWVcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRhZyA9IGUuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLnB1c2godGFnKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8ge3tVbmNhdGVnb3JpemVkfX0gYW5kIHt7SW1wcm92ZSBjYXRlZ29yaWVzfX0gYXJlIHVzdWFsbHkgcGxhY2VkIGF0IHRoZSBlbmRcblx0XHRcdFx0aWYgKCRib2R5LmZpbmQoJy5ib3gtVW5jYXRlZ29yaXplZCcpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5wdXNoKCdVbmNhdGVnb3JpemVkJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCRib2R5LmZpbmQoJy5ib3gtSW1wcm92ZV9jYXRlZ29yaWVzJykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLnB1c2goJ0ltcHJvdmUgY2F0ZWdvcmllcycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBBZGQgc3RhdHVzIHRleHQgbm9kZSBhZnRlciBTdWJtaXQgYnV0dG9uXG5cdFx0XHRjb25zdCBzdGF0dXNOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0c3RhdHVzTm9kZS5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0c3RhdHVzTm9kZS5pZCA9ICd0dy10YWctc3RhdHVzJztcblx0XHRcdFR3aW5rbGUudGFnLnN0YXR1cyA9IHtcblx0XHRcdFx0Ly8gaW5pdGlhbCBzdGF0ZTsgZGVmaW5lZCBsaWtlIHRoaXMgYmVjYXVzZSB0aGVzZSBuZWVkIHRvIGJlIGF2YWlsYWJsZSBmb3IgcmVmZXJlbmNlXG5cdFx0XHRcdC8vIGluIHRoZSBjbGljayBldmVudCBoYW5kbGVyXG5cdFx0XHRcdG51bUFkZGVkOiAwLFxuXHRcdFx0XHRudW1SZW1vdmVkOiAwLFxuXHRcdFx0fTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy10YWctc3VibWl0JykuYWZ0ZXIoc3RhdHVzTm9kZSk7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBSZWRpcmVjdHMgYW5kIGZpbGVzOiBBZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICd0YWdzJykpIHtcblx0XHRcdFx0Z2VuZXJhdGVMaW5rcyhjaGVja2JveCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyAkYWxsQ2hlY2tib3hEaXZzIGFuZCAkYWxsSGVhZGVycyBhcmUgZGVmaW5lZCBnbG9iYWxseSwgcmF0aGVyIHRoYW4gaW4gdGhlXG5cdC8vIHF1aWNrZmlsdGVyIGV2ZW50IGZ1bmN0aW9uLCB0byBhdm9pZCBoYXZpbmcgdG8gcmVjb21wdXRlIHRoZW0gb24gZXZlcnkga2V5ZG93blxuXHRsZXQgJGFsbENoZWNrYm94RGl2cztcblx0bGV0ICRhbGxIZWFkZXJzO1xuXHRUd2lua2xlLnRhZy51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUudGFnLmNoZWNrZWRUYWdzID0gZm9ybS5nZXRDaGVja2VkKCd0YWdzJyk7XG5cdFx0Y29uc3QgY29udGFpbmVyID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdmcmFnbWVudCcsXG5cdFx0fSk7XG5cdFx0Ly8gZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBjaGVja2JveCwgd2l0aCBhcHByb3ByaWF0ZSBzdWJncm91cCBpZiBuZWVkZWRcblx0XHRjb25zdCBtYWtlQ2hlY2tib3ggPSAodGFnLCBkZXNjcmlwdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgY2hlY2tib3ggPSB7XG5cdFx0XHRcdHZhbHVlOiB0YWcsXG5cdFx0XHRcdGxhYmVsOiBge3ske3RhZ319fTogJHtkZXNjcmlwdGlvbn1gLFxuXHRcdFx0fTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jaGVja2VkVGFncy5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoICh0YWcpIHtcblx0XHRcdFx0Y2FzZSAnRXhwZXJ0IG5lZWRlZCc6XG5cdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAgPSBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflk6rkuKrpoobln5/nmoTkuJPlrrbvvIjlv4XloavvvInvvJonLCAn5ZOq5YCL6aCY5Z+f55qE5bCI5a6277yI5b+F5aGr77yJ77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5b+F5aGr77yM5Y+v5Y+C6ICDIENhdGVnb3J5OumcgOimgeS4k+S4muS6uuWjq+WFs+azqOeahOmhtemdoiDkvb/nlKjnjrDlrZjnmoTliIbnsbvjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflv4XloavvvIzlj6/lj4PogIMgQ2F0ZWdvcnk66ZyA6KaB5bCI5qWt5Lq65aOr6Zec5rOo55qE6aCB6Z2iIOS9v+eUqOePvuWtmOeahOWIhumhnuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQyJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZOq5Liq6aKG5Z+f55qE5LiT5a6277yaJywgJ+WTquWAi+mgmOWfn+eahOWwiOWutu+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOWPr+WPguiAgyBDYXRlZ29yeTrpnIDopoHkuJPkuJrkurrlo6vlhbPms6jnmoTpobXpnaIg5L2/55So546w5a2Y55qE5YiG57G744CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5Y+v5Y+D6ICDIENhdGVnb3J5OumcgOimgeWwiOalreS6uuWjq+mXnOazqOeahOmggemdoiDkvb/nlKjnj77lrZjnmoTliIbpoZ7jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZXhwZXJ0MycsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WTquS4qumihuWfn+eahOS4k+Wutu+8micsICflk6rlgIvpoJjln5/nmoTlsIjlrrbvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzlj6/lj4LogIMgQ2F0ZWdvcnk66ZyA6KaB5LiT5Lia5Lq65aOr5YWz5rOo55qE6aG16Z2iIOS9v+eUqOeOsOWtmOeahOWIhuexu+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOWPr+WPg+iAgyBDYXRlZ29yeTrpnIDopoHlsIjmpa3kurrlo6vpl5zms6jnmoTpoIHpnaIg5L2/55So54++5a2Y55qE5YiG6aGe44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdNZXJnZSc6XG5cdFx0XHRcdGNhc2UgJ01lcmdlIGZyb20nOlxuXHRcdFx0XHRjYXNlICdNZXJnZSB0byc6IHtcblx0XHRcdFx0XHRsZXQgb3RoZXJUYWdOYW1lID0gJ01lcmdlJztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdG90aGVyVGFnTmFtZSA9ICdNZXJnZSB0byc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgZnJvbSc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbWVyZ2VUYXJnZXQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhbbku5bmnaHnm67vvJonLCAn5YW25LuW5qKd55uu77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5aaC5oyH5a6a5aSa5Liq5p2h55uu77yM6K+355So566h6YGT56ym5YiG6ZqU77ya5p2h55uu55SyfOadoeebruS5mScsXG5cdFx0XHRcdFx0XHRcdFx0J+WmguaMh+WumuWkmuWAi+aineebru+8jOiri+eUqOeuoemBk+espuWIhumalO+8muaineebrueUsnzmop3nm67kuZknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ21lcmdlVGFnT3RoZXInLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGDnlKh7eyR7b3RoZXJUYWdOYW1lfSR7d2luZG93LndnVUxTKCd9feagh+iusOWFtuS7luadoeebricsICd9feaomeiomOWFtuS7luaineebricpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQn5LuF5Zyo5Y+q6L6T5YWl5LqG5LiA5Liq5p2h55uu5ZCN5pe25Y+v55SoJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+WDheWcqOWPqui8uOWFpeS6huS4gOWAi+aineebruWQjeaZguWPr+eUqCdcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdtZXJnZVJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0YOWQiOW5tueQhueUse+8iOS8muiiq+i0tOS4iiR7dGFnID09PSAnTWVyZ2UgdG8nID8gJ+WFtuS7licgOiAn6L+ZJ33mnaHnm67nmoTorqjorrrpobXvvInvvJpgLFxuXHRcdFx0XHRcdFx0XHRcdGDlkIjkvbXnkIbnlLHvvIjmnIPooqvosrzkuIoke3RhZyA9PT0gJ01lcmdlIHRvJyA/ICflhbbku5YnIDogJ+mAmSd95qKd55uu55qE6KiO6KuW6aCB77yJ77yaYFxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOS9huW8uueDiOaOqOiNkOOAguWmguS4jemcgOimgeivt+eVmeepuuOAguS7heWcqOWPqui+k+WFpeS6huS4gOS4quadoeebruWQjeaXtuWPr+eUqOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOS9huW8t+eDiOaOqOiWpuOAguWmguS4jemcgOimgeiri+eVmeepuuOAguWDheWcqOWPqui8uOWFpeS6huS4gOWAi+aineebruWQjeaZguWPr+eUqOOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlICdNaXNzaW5nIGluZm9ybWF0aW9uJzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdG5hbWU6ICdtaXNzaW5nSW5mb3JtYXRpb24nLFxuXHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8uuWwkeeahOWGheWuue+8iOW/heWhq++8ie+8micsICfnvLrlsJHnmoTlhaflrrnvvIjlv4XloavvvInvvJonKSxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5b+F5aGr77yM5pi+56S65Li64oCc57y65bCR5pyJ5YWz4oCm4oCm55qE5L+h5oGv44CC4oCdJywgJ+W/heWhq++8jOmhr+ekuueCuuOAjOe8uuWwkeaciemXnOKApuKApueahOizh+ioiuOAguOAjScpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ05vdGFiaWxpdHknOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0ge1xuXHRcdFx0XHRcdFx0bmFtZTogJ25vdGFiaWxpdHknLFxuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eX1977yaJHt3aW5kb3cud2dVTFMoJ+mAmueUqOeahOWFs+azqOW6puaMh+W8lScsICfpgJrnlKjnmoTpl5zms6jluqbmjIflvJUnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxBc3Ryb31977yaJHt3aW5kb3cud2dVTFMoJ+WkqeS9kycsICflpKnpq5QnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnQXN0cm8nLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8QmlvZ3JhcGhpZXN9fe+8miR7d2luZG93LndnVUxTKCfkurrniankvKDorrAnLCAn5Lq654mp5YKz6KiYJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0Jpb2dyYXBoaWVzJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEJvb2t9fe+8miR7d2luZG93LndnVUxTKCfkuabnsY0nLCAn5pu457GNJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0Jvb2snLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8Q3ljbG9uZX1977yaJHt3aW5kb3cud2dVTFMoJ+awlOaXiycsICfmsKPml4snKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnQ3ljbG9uZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxGaWN0aW9ufX3vvJoke3dpbmRvdy53Z1VMUygn6Jma5p6E5LqL54mpJywgJ+iZm+ani+S6i+eJqScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdGaWN0aW9uJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEdlb2dyYXBoaWN9fe+8miR7d2luZG93LndnVUxTKCflnLDnkIbnibnlvoEnLCAn5Zyw55CG54m55b61Jyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0dlb2dyYXBoaWMnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8R2VvbWV0cnl9fe+8miR7d2luZG93LndnVUxTKCflh6DkvZXlm77lvaInLCAn5bm+5L2V5ZyW5b2iJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0dlb21ldHJ5Jyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEludmVudGlvbn1977yaJHt3aW5kb3cud2dVTFMoJ+WPkeaYjuOAgeeglOepticsICfnmbzmmI7jgIHnoJTnqbYnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnSW52ZW50aW9uJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fE11c2ljfX3vvJoke3dpbmRvdy53Z1VMUygn6Z+z5LmQJywgJ+mfs+aogicpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdNdXNpYycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxOdW1iZXJzfX3vvJoke3dpbmRvdy53Z1VMUygn5pWw5a2XJywgJ+aVuOWtlycpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdOdW1iZXJzJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fE9yZ2FuaXphdGlvbnN9fe+8miR7d2luZG93LndnVUxTKCfnu4Tnu4cnLCAn57WE57mUJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ09yZ2FuaXphdGlvbnMnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8UHJvcGVydHl9fe+8miR7d2luZG93LndnVUxTKCfmgKfotKjooagnLCAn5oCn6LOq6KGoJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ1Byb3BlcnR5Jyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiAne3tOb3RhYmlsaXR5fFRyYWZmaWN9fe+8muS6pOmAmicsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdUcmFmZmljJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fFdlYn1977yaJHt3aW5kb3cud2dVTFMoJ+e9keermeOAgee9kee7nOWGheWuuScsICfntrLnq5njgIHntrLot6/lhaflrrknKX3vvIjpnZ7mraPlvI/mjIflvJXvvIlgLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnV2ViJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnUmVxdWVzdGVkIG1vdmUnOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbW92ZVRhcmdldCcsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWsOWQjeensO+8micsICfmlrDlkI3nqLHvvJonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdtb3ZlUmVhc29uJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn56e75Yqo55CG55Sx77yI5Lya6KKr57KY6LS06K+l5p2h55uu55qE6K6o6K666aG177yJ77yaJyxcblx0XHRcdFx0XHRcdFx0XHQn56e75YuV55CG55Sx77yI5pyD6KKr6LK85LiK6Kmy5qKd55uu55qE6KiO6KuW6aCB77yJ77yaJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOS9huW8uueDiOaOqOiNkOOAguWmguS4jemcgOimgeivt+eVmeepuuOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOS9huW8t+eDiOaOqOiWpuOAguWmguS4jemcgOimgeiri+eVmeepuuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnU3BsaXQnOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGFyZ2V0MScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWQjTHvvJonLCAn6aCB6Z2i5ZCNMe+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WPr+mAieOAgicsICflj6/pgbjjgIInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICd0YXJnZXQyJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5ZCNMu+8micsICfpoIHpnaLlkI0y77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5Y+v6YCJ44CCJywgJ+WPr+mBuOOAgicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3RhcmdldDMnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLlkI0z77yaJywgJ+mggemdouWQjTPvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflj6/pgInjgIInLCAn5Y+v6YG444CCJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0NsZWFudXAnOlxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnY2xlYW51cFJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn6ZyA6KaB5riF55CG55qE55CG55SxJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzkvYblvLrng4jmjqjojZDjgILlpoLkuI3pnIDopoHor7fnlZnnqbrjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgbjvvIzkvYblvLfng4jmjqjolqbjgILlpoLkuI3pnIDopoHoq4vnlZnnqbrjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY2hlY2tib3g7XG5cdFx0fTtcblx0XHRjb25zdCBtYWtlQ2hlY2tib3hlc0ZvckFscmVhZHlQcmVzZW50VGFncyA9ICgpID0+IHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0aWQ6ICd0YWdIZWFkZXIwJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey5pS+572u55qE57u05oqk5qCH6K6wJywgJ+W3suaUvue9rueahOe2reitt+aomeiomCcpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBzdWJkaXYgPSBjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdGlkOiAndGFnU3ViZGl2MCcsXG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGNoZWNrYm94ZXMgPSBbXTtcblx0XHRcdGNvbnN0IHVuQ2hlY2tlZFRhZ3MgPSBlLnRhcmdldC5mb3JtLmdldFVuY2hlY2tlZCgnZXhpc3RpbmdUYWdzJyk7XG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MpIHtcblx0XHRcdFx0Y29uc3QgY2hlY2tib3ggPSB7XG5cdFx0XHRcdFx0dmFsdWU6IHRhZyxcblx0XHRcdFx0XHRsYWJlbDogYHt7JHt0YWd9fX0ke1xuXHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ11cblx0XHRcdFx0XHRcdFx0PyBgOiAke1R3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmRlc2NyaXB0aW9ufWBcblx0XHRcdFx0XHRcdFx0OiAnJ1xuXHRcdFx0XHRcdH1gLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICF1bkNoZWNrZWRUYWdzLmluY2x1ZGVzKHRhZyksXG5cdFx0XHRcdH07XG5cdFx0XHRcdGNoZWNrYm94ZXMucHVzaChjaGVja2JveCk7XG5cdFx0XHR9XG5cdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2V4aXN0aW5nVGFncycsXG5cdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdGlmIChzb3J0b3JkZXIgPT09ICdjYXQnKSB7XG5cdFx0XHQvLyBjYXRlZ29yaWNhbCBzb3J0IG9yZGVyXG5cdFx0XHQvLyBmdW5jdGlvbiB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHRhZ3MgYW5kIGNyZWF0ZSBhIGNoZWNrYm94IGZvciBlYWNoIG9uZVxuXHRcdFx0Y29uc3QgZG9DYXRlZ29yeUNoZWNrYm94ZXMgPSAoc3ViZGl2LCBzdWJncm91cCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzdWJncm91cCkge1xuXHRcdFx0XHRcdGlmICghVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmluY2x1ZGVzKGl0ZW0udGFnKSkge1xuXHRcdFx0XHRcdFx0Y2hlY2tib3hlcy5wdXNoKG1ha2VDaGVja2JveChpdGVtLnRhZywgaXRlbS5kZXNjcmlwdGlvbikpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRsaXN0OiBjaGVja2JveGVzLFxuXHRcdFx0XHR9KTtcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0bWFrZUNoZWNrYm94ZXNGb3JBbHJlYWR5UHJlc2VudFRhZ3MoKTtcblx0XHRcdH1cblx0XHRcdGxldCBpID0gMTtcblx0XHRcdC8vIGdvIHRocm91Z2ggZWFjaCBjYXRlZ29yeSBhbmQgc3ViLWNhdGVnb3J5IGFuZCBhcHBlbmQgbGlzdHMgb2YgY2hlY2tib3hlc1xuXHRcdFx0Zm9yIChjb25zdCBncm91cCBvZiBUd2lua2xlLnRhZy5hcnRpY2xlLnRhZ0xpc3QpIHtcblx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0aWQ6IGB0YWdIZWFkZXIke2l9YCxcblx0XHRcdFx0XHRsYWJlbDogZ3JvdXAua2V5LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3Qgc3ViZGl2ID0gY29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6IGB0YWdTdWJkaXYke2krK31gLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGdyb3VwLnZhbHVlWzBdLnRhZykge1xuXHRcdFx0XHRcdGRvQ2F0ZWdvcnlDaGVja2JveGVzKHN1YmRpdiwgZ3JvdXAudmFsdWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvciAoY29uc3Qgc3ViZ3JvdXAgb2YgZ3JvdXAudmFsdWUpIHtcblx0XHRcdFx0XHRcdHN1YmRpdi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IFtNb3JlYml0cy5odG1sTm9kZSgnYicsIHN1Ymdyb3VwLmtleSldLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIHN1Ymdyb3VwLnZhbHVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYWxwaGFiZXRpY2FsIHNvcnQgb3JkZXJcblx0XHRcdGlmIChUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRtYWtlQ2hlY2tib3hlc0ZvckFscmVhZHlQcmVzZW50VGFncygpO1xuXHRcdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRpZDogJ3RhZ0hlYWRlcjEnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WPr+eUqOeahOe7tOaKpOagh+iusCcsICflj6/nlKjnmoTntq3orbfmqJnoqJgnKSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBBdm9pZCByZXBlYXRlZGx5IHJlc29ydGluZ1xuXHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5hbHBoYWJldGljYWxMaXN0IHx8PSBPYmplY3Qua2V5cyhUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3QpLnNvcnQoKTtcblx0XHRcdGNvbnN0IGNoZWNrYm94ZXMgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIFR3aW5rbGUudGFnLmFydGljbGUuYWxwaGFiZXRpY2FsTGlzdCkge1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0Y2hlY2tib3hlcy5wdXNoKG1ha2VDaGVja2JveCh0YWcsIFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmRlc2NyaXB0aW9uKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gYXBwZW5kIGFueSBjdXN0b20gdGFnc1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2N1c3RvbVRhZ0xpc3QnKS5sZW5ndGgpIHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmdldFByZWYoJ2N1c3RvbVRhZ0xpc3QnKS5tYXAoKGVsKSA9PiB7XG5cdFx0XHRcdFx0ZWwuY2hlY2tlZCA9IFR3aW5rbGUudGFnLmNoZWNrZWRUYWdzLmluY2x1ZGVzKGVsLnZhbHVlKTtcblx0XHRcdFx0XHRyZXR1cm4gZWw7XG5cdFx0XHRcdH0pLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0ICR3b3JrYXJlYSA9ICQoZm9ybSkuZmluZCgnI3RhZ1dvcmtBcmVhJyk7XG5cdFx0Y29uc3QgcmVuZGVyZWQgPSBjb250YWluZXIucmVuZGVyKCk7XG5cdFx0JHdvcmthcmVhLmVtcHR5KCkuYXBwZW5kKHJlbmRlcmVkKTtcblx0XHQvLyBmb3IgcXVpY2sgZmlsdGVyOlxuXHRcdCRhbGxDaGVja2JveERpdnMgPSAkd29ya2FyZWEuZmluZCgnW25hbWU9dGFnc10sIFtuYW1lPWV4aXN0aW5nVGFnc10nKS5wYXJlbnQoKTtcblx0XHQkYWxsSGVhZGVycyA9ICR3b3JrYXJlYS5maW5kKCdoNSwgLnF1aWNrZm9ybURlc2NyaXB0aW9uJyk7XG5cdFx0Zm9ybS5xdWlja2ZpbHRlci52YWx1ZSA9ICcnOyAvLyBjbGVhciBzZWFyY2gsIGJlY2F1c2UgdGhlIHNlYXJjaCByZXN1bHRzIGFyZSBub3QgcHJlc2VydmVkIG92ZXIgbW9kZSBjaGFuZ2Vcblx0XHRmb3JtLnF1aWNrZmlsdGVyLmZvY3VzKCk7XG5cdFx0Ly8gc3R5bGUgYWRqdXN0bWVudHNcblx0XHQkd29ya2FyZWEuZmluZCgnaDUnKS5jc3Moe1xuXHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMTAlJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnaDU6bm90KDpmaXJzdC1jaGlsZCknKS5jc3Moe1xuXHRcdFx0J21hcmdpbi10b3AnOiAnMWVtJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnZGl2JykuZmlsdGVyKCc6aGFzKHNwYW4ucXVpY2tmb3JtRGVzY3JpcHRpb24pJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzAuNGVtJyxcblx0XHR9KTtcblx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhmb3JtLCAnZXhpc3RpbmdUYWdzJykpIHtcblx0XHRcdGdlbmVyYXRlTGlua3MoY2hlY2tib3gpO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhmb3JtLCAndGFncycpKSB7XG5cdFx0XHRnZW5lcmF0ZUxpbmtzKGNoZWNrYm94KTtcblx0XHR9XG5cdFx0Ly8gdGFsbHkgdGFncyBhZGRlZC9yZW1vdmVkLCB1cGRhdGUgc3RhdHVzTm9kZSB0ZXh0XG5cdFx0Y29uc3Qgc3RhdHVzTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0dy10YWctc3RhdHVzJyk7XG5cdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnc10sIFtuYW1lPWV4aXN0aW5nVGFnc10nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAodGhpcy5uYW1lID09PSAndGFncycpIHtcblx0XHRcdFx0VHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkICs9IHRoaXMuY2hlY2tlZCA/IDEgOiAtMTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5uYW1lID09PSAnZXhpc3RpbmdUYWdzJykge1xuXHRcdFx0XHRUd2lua2xlLnRhZy5zdGF0dXMubnVtUmVtb3ZlZCArPSB0aGlzLmNoZWNrZWQgPyAtMSA6IDE7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBmaXJzdFBhcnQgPSBg5Yqg5YWlJHtUd2lua2xlLnRhZy5zdGF0dXMubnVtQWRkZWR9JHt3aW5kb3cud2dVTFMoJ+S4quagh+iusCcsICflgIvmqJnoqJgnKX1gO1xuXHRcdFx0Y29uc3Qgc2Vjb25kUGFydCA9IGDnp7vpmaQke1R3aW5rbGUudGFnLnN0YXR1cy5udW1SZW1vdmVkfSR7d2luZG93LndnVUxTKCfkuKrmoIforrAnLCAn5YCL5qiZ6KiYJyl9YDtcblx0XHRcdHN0YXR1c05vZGUudGV4dENvbnRlbnQgPVxuXHRcdFx0XHQoVHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkID8gYCAgJHtmaXJzdFBhcnR9YCA6ICcnKSArXG5cdFx0XHRcdChUd2lua2xlLnRhZy5zdGF0dXMubnVtUmVtb3ZlZCA/IChUd2lua2xlLnRhZy5zdGF0dXMubnVtQWRkZWQgPyAn77ybJyA6ICcgICcpICsgc2Vjb25kUGFydCA6ICcnKTtcblx0XHR9KTtcblx0fTtcblx0LyoqXG5cdCAqIEFkZHMgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdCAqXG5cdCAqIEBwYXJhbSB7TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnR9IGNoZWNrYm94ICBhc3NvY2lhdGVkIHdpdGggdGhlIHRlbXBsYXRlXG5cdCAqL1xuXHRjb25zdCBnZW5lcmF0ZUxpbmtzID0gKGNoZWNrYm94KSA9PiB7XG5cdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgJz4nKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndGFnLXRlbXBsYXRlLWxpbmsnKTtcblx0XHRjb25zdCB0YWduYW1lID0gY2hlY2tib3gudmFsdWVzO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKFxuXHRcdFx0J2hyZWYnLFxuXHRcdFx0bXcudXRpbC5nZXRVcmwoXG5cdFx0XHRcdCh0YWduYW1lLmluY2x1ZGVzKCc6JykgPyAnJyA6ICdUZW1wbGF0ZTonKSArXG5cdFx0XHRcdFx0KHRhZ25hbWUuaW5jbHVkZXMoJ3wnKSA/IHRhZ25hbWUuc2xpY2UoMCwgdGFnbmFtZS5pbmRleE9mKCd8JykpIDogdGFnbmFtZSlcblx0XHRcdClcblx0XHQpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0JChjaGVja2JveCkucGFyZW50KCkuYXBwZW5kKFsnXFx1MDBBMCcsIGxpbmtdKTtcblx0fTtcblx0Ly8gVGFncyBmb3IgQVJUSUNMRVMgc3RhcnQgaGVyZVxuXHRUd2lua2xlLnRhZy5hcnRpY2xlID0ge307XG5cdC8vIFRhZ3MgYXJyYW5nZWQgYnkgY2F0ZWdvcnk7IHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYWxwaGFiZXRpY2FsIGxpc3QsXG5cdC8vIGJ1dCB0YWdzIHNob3VsZCBiZSBpbiBhbHBoYWJldGljYWwgb3JkZXIgd2l0aGluIHRoZSBjYXRlZ29yaWVzXG5cdC8vIGV4Y2x1ZGVNSTogdHJ1ZSBpbmRpY2F0ZSBhIHRhZyB0aGF0ICpkb2VzIG5vdCogd29yayBpbnNpZGUge3ttdWx0aXBsZSBpc3N1ZXN9fVxuXHQvLyBBZGQgbmV3IGNhdGVnb3JpZXMgd2l0aCBkaXNjcmV0aW9uIC0gdGhlIGxpc3QgaXMgbG9uZyBlbm91Z2ggYXMgaXMhXG5cdFR3aW5rbGUudGFnLmFydGljbGUudGFnTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5riF55CG5ZKM57u05oqk5qih5p2/JywgJ+a4heeQhuWSjOe2reitt+aooeadvycpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfluLjop4TmuIXnkIYnLCAn5bi46KaP5riF55CGJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ2xlYW51cCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemcgOimgei/m+ihjOa4heeQhu+8jOS7peespuWQiOacieWFveaho+ahiOmmhueahOi0qOmHj+agh+WHhicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemcgOimgemAsuihjOa4heeQhu+8jOS7peespuWQiOacieeNuOaqlOahiOmkqOeahOizqumHj+aomea6lidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NsZWFudXAgcmV3cml0ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S4jeespuWQiOacieWFveaho+ahiOmmhueahOi0qOmHj+agh+WHhu+8jOmcgOimgeWujOWFqOmHjeWGmScsXG5cdFx0XHRcdFx0XHRcdFx0J+S4jeespuWQiOacieeNuOaqlOahiOmkqOeahOizqumHj+aomea6lu+8jOmcgOimgeWujOWFqOmHjeWvqydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NsZWFudXAtamFyZ29uJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6L+H5aSa6KGM6K+d5oiW5LiT5Lia5pyv6K+t77yM5Y+v6IO96ZyA6KaB566A5YyW5oiW5o+Q5Ye66L+b5LiA5q2l6Kej6YeKJyxcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6YGO5aSa6KGM6Kmx5oiW5bCI5qWt6KGT6Kqe77yM5Y+v6IO96ZyA6KaB57Ch5YyW5oiW5o+Q5Ye66YCy5LiA5q2l6Kej6YeLJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ29weSBlZGl0Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57yW5L+u77yM5Lul56Gu5L+d5paH5rOV44CB55So6K+N44CB6K+t5rCU44CB5qC85byP44CB5qCH54K5562J5L2/55So5oGw5b2TJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57eo5L+u77yM5Lul56K65L+d5paH5rOV44CB55So6Kme44CB6Kqe5rCj44CB5qC85byP44CB5qiZ6bue562J5L2/55So5oGw55W2J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WPr+iDveWkmuS9meeahOWGheWuuScsICflj6/og73lpJrppJjnmoTlhaflrrknKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDb3B5cGFzdGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflhoXlrrnlj6/og73mmK/ku47mn5DkuKrmnaXmupDlpITmi7fotJ3lkI7nspjotLQnLFxuXHRcdFx0XHRcdFx0XHRcdCflhaflrrnlj6/og73mmK/lvp7mn5DlgIvkvobmupDomZXmi7fosp3lvozosrzkuIonXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdFeHRlcm5hbCBsaW5rcycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWklumDqOmTvuaOpeeahOaWueW8j+WPr+iDveS4jeespuWQiOacieWFveaho+ahiOmmhueahOadoeS+iycsXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWklumDqOmAo+e1kOeahOaWueW8j+WPr+iDveS4jeespuWQiOacieeNuOaqlOahiOmkqOeahOaineS+iydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ05vbi1mcmVlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO96L+H5aSa5oiW5LiN5b2T5Zyw5L2/55So5LqG5Y+X6JGX5L2c5p2D5L+d5oqk55qE5paH5a2X44CB5Zu+5YOP5oiW5aSa5aqS5L2T5paH5Lu2Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO96YGO5aSa5oiW5LiN55W25Zyw5L2/55So5LqG5Y+X54mI5qyK5L+d6K2355qE5paH5a2X44CB5ZyW5YOP5oiW5aSa5aqS6auU5qqU5qGIJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+e7k+aehOWSjOWvvOiogCcsICfntZDmp4vlkozlsI7oqIAnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdMZWFkIHRvbyBsb25nJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+86KiA6YOo5YiG5Lmf6K646L+H5LqO5YaX6ZW/JywgJ+WwjuiogOmDqOWIhuS5n+iosemBjuaWvOWGl+mVtycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTGVhZCB0b28gc2hvcnQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflr7zoqIDpg6jliIbkuZ/orrjkuI3otrPku6XmpoLmi6zlhbblhoXlrrknLCAn5bCO6KiA6YOo5YiG5Lmf6Kix5LiN6Laz5Lul5qaC5ous5YW25YWn5a65JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdWZXJ5IGxvbmcnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflj6/og73ov4fkuo7lhpfplb8nLCAn5Y+v6IO96YGO5pa85YaX6ZW3JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6Jma5p6E5L2c5ZOB55u45YWz5riF55CGJywgJ+iZm+ani+S9nOWTgeebuOmXnOa4heeQhicpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0luLXVuaXZlcnNlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5bCP6K+05pWF5LqL5YaF55qE6KeC54K55o+P6L+w5LiA5Liq6Jma5p6E5LqL54mpJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5bCP6Kqq5pWF5LqL5YWn55qE6KeA6bue5o+P6L+w5LiA5YCL6Jmb5qeL5LqL54mpJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTG9uZyBwbG90Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95YyF5ZCr6L+H5LqO6K+m57uG55qE5Ymn5oOF5pGY6KaBJywgJ+WPr+iDveWMheWQq+mBjuaWvOips+e0sOeahOWKh+aDheaRmOimgScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfluLjop4TmnaHnm67pl67popgnLCAn5bi46KaP5qKd55uu5ZWP6aGMJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiAn6YeN6KaB5oCn5ZKM55+l5ZCN5bqmJyxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb3RhYmlsaXR5Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95LiN56ym5ZCI6YCa55So5YWz5rOo5bqm5oyH5byVJywgJ+WPr+iDveS4jeespuWQiOmAmueUqOmXnOazqOW6puaMh+W8lScpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb3RhYmlsaXR5IFVucmVmZXJlbmNlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWFt+Wkh+WFs+azqOW6pu+8jOS9humcgOimgeadpea6kOWKoOS7peW9sOaYvicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWFt+WCmemXnOazqOW6pu+8jOS9humcgOimgeS+hua6kOWKoOS7peW9sOmhrydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflhpnkvZzpo47moLwnLCAn5a+r5L2c6aKo5qC8JyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQWR2ZXJ0Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57G75Ly85bm/5ZGK5oiW5a6j5Lyg5oCn5YaF5a65JywgJ+mhnuS8vOW7o+WRiuaIluWuo+WCs+aAp+WFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnRmFucG92Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57G75Ly854ix5aW96ICF572R6aG1JywgJ+mhnuS8vOaEm+WlveiAhee2sumggScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSG93LXRvJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5YyF5ZCr5oyH5Y2X5oiW5pWZ5a2m5YaF5a65JywgJ+WMheWQq+aMh+WNl+aIluaVmeWtuOWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSW5hcHByb3ByaWF0ZSBwZXJzb24nLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjkuI3pgILlvZPnmoTnrKzkuIDkurrnp7DlkoznrKzkuozkurrnp7AnLFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjkuI3pgannlbbnmoTnrKzkuIDkurrnqLHlkoznrKzkuozkurrnqLEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOZXdzcmVsZWFzZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+mYheivu+i1t+adpeWDj+aYr+aWsOmXu+eov+WPiuWMheWQq+i/h+W6pueahOWuo+S8oOaAp+ivreiwgycsXG5cdFx0XHRcdFx0XHRcdFx0J+mWseiugOi1t+S+huWDj+aYr+aWsOiBnueov+WPiuWMheWQq+mBjuW6pueahOWuo+WCs+aAp+iqnuiqvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1Byb3NlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LqG5pel5pyf5oiW5pe26Ze05YiX6KGo5byP6K6w6L+w77yM6ZyA6KaB5pS55YaZ5Li66L+e6LSv55qE5Y+Z6L+w5oCn5paH5a2XJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LqG5pel5pyf5oiW5pmC6ZaT5YiX6KGo5byP6KiY6L+w77yM6ZyA6KaB5pS55a+r54K66YCj6LKr55qE5pWY6L+w5oCn5paH5a2XJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnUmV2aWV3Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZiF6K+76LW35p2l57G75Ly86K+E6K6677yM6ZyA6KaB5riF55CGJywgJ+mWseiugOi1t+S+humhnuS8vOipleirlu+8jOmcgOimgea4heeQhicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVG9uZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivreiwg+aIlumjjuagvOWPr+iDveS4jemAguWQiOeZvuenkeWFqOS5pueahOWGmeS9nOaWueW8jycsXG5cdFx0XHRcdFx0XHRcdFx0J+iqnuiqv+aIlumiqOagvOWPr+iDveS4jemBqeWQiOeZvuenkeWFqOabuOeahOWvq+S9nOaWueW8jydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflhoXlrrknLCAn5YWn5a65JyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHt0YWc6ICdNaXNzaW5nIGluZm9ybWF0aW9uJywgZGVzY3JpcHRpb246ICfnvLrlsJHlv4XopoHnmoTkv6Hmga8nfSwgLy8gdGhlc2UgdGhyZWUgaGF2ZSBhIHN1Ymdyb3VwIHdpdGggc2V2ZXJhbCBvcHRpb25zXG5cdFx0XHRcdFx0XHR7dGFnOiAnU3Vic3R1YicsIGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+i/h+S6juefreWwjycsICfpgY7mlrznn63lsI8nKSwgZXhjbHVkZU1JOiB0cnVlfSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVW5lbmN5Y2xvcGVkaWMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflj6/og73kuI3pgILlkIjlhpnlhaXnmb7np5HlhajkuaYnLCAn5Y+v6IO95LiN6YGp5ZCI5a+r5YWl55m+56eR5YWo5pu4JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5L+h5oGv5ZKM57uG6IqCJywgJ+izh+ioiuWSjOe0sOevgCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0V4cGVydCBuZWVkZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHnsr7pgJrmiJbnhp/mgonmnKzkuLvpopjnmoTkuJPkuJrkurrlo6vvvIjkuJPlrrbvvInlj4LkuI7lj4rljY/liqnnvJbovpEnLFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHnsr7pgJrmiJbnhp/mgonmnKzkuLvpoYznmoTlsIjmpa3kurrlo6vvvIjlsIjlrrbvvInlj4PoiIflj4rljZTliqnnt6jovK8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdPdmVybHkgZGV0YWlsZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfljIXlkKvlpKrlpJrov4fluqbnu4boioLlhoXlrrknLCAn5YyF5ZCr5aSq5aSa6YGO5bqm57Sw56+A5YWn5a65JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdUcml2aWEnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflupTpgb/lhY3mnInpmYjliJfmnYLpobnjgIHnkJDnoo7otYTmlpnnmoTpg6jliIYnLFxuXHRcdFx0XHRcdFx0XHRcdCfmh4npgb/lhY3mnInpmbPliJfpm5zpoIXjgIHnkaPnoo7os4fmlpnnmoTpg6jliIYnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5pe26Ze05oCnJywgJ+aZgumWk+aApycpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0N1cnJlbnQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCforrDov7DmlrDpl7vliqjmgIEnLCAn6KiY6L+w5paw6IGe5YuV5oWLJyksXG5cdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VwZGF0ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W9k+WJjeadoeebruaIlueroOiKgumcgOimgeabtOaWsCcsICfnlbbliY3mop3nm67miJbnq6Dnr4DpnIDopoHmm7TmlrAnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflrqLop4LmgKflkozkuovlrp7lh4bnoa7mgKcnLCAn5a6i6KeA5oCn5ZKM5LqL5a+m5rqW56K65oCnJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQXV0b2Jpb2dyYXBoeScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+exu+S8vOS4gOevh+iHquS8oO+8jOaIluWGheWuueS4u+imgeeUseadoeebruaPj+i/sOeahOW9k+S6i+S6uuaIlue7hOe7h+aSsOWGmeOAgee8lui+kScsXG5cdFx0XHRcdFx0XHRcdFx0J+mhnuS8vOS4gOevh+iHquWCs++8jOaIluWFp+WuueS4u+imgeeUseaineebruaPj+i/sOeahOeVtuS6i+S6uuaIlue1hOe5lOaSsOWvq+OAgee3qOi8rydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NPSScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S4u+imgei0oeeMruiAheS4juacrOadoeebruaJgOWuo+aJrOeahOWGheWuueWPr+iDveWtmOWcqOWIqeebiuWGsueqgScsXG5cdFx0XHRcdFx0XHRcdFx0J+S4u+imgeiyoueNu+iAheiIh+acrOaineebruaJgOWuo+aPmueahOWFp+WuueWPr+iDveWtmOWcqOWIqeebiuihneeqgSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0Rpc3B1dGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5YaF5a6555aR5qyg5YeG56Gu77yM5pyJ5b6F5p+l6K+BJywgJ+WFp+WuueeWkeasoOa6lueiuu+8jOacieW+heafpeitiScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnR2xvYmFsaXplJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5LuF5YW35pyJ5LiA6YOo5YiG5Zyw5Yy655qE5L+h5oGv5oiW6KeC54K5JywgJ+WDheWFt+acieS4gOmDqOWIhuWcsOWNgOeahOizh+ioiuaIluingOm7nicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSG9heCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+ecn+WunuaAp+iiq+i0qOeWkScsICfnnJ/lr6bmgKfooqvos6rnlpEnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1BPVicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WuouinguaAp+acieS6ieiuruOAguWGheWuueOAgeivreiwg+WPr+iDveW4puacieaYjuaYvueahOS4quS6uuingueCueaIluWcsOaWueiJsuW9qScsXG5cdFx0XHRcdFx0XHRcdFx0J+WuouingOaAp+acieeIreitsOOAguWFp+WuueOAgeiqnuiqv+WPr+iDveW4tuacieaYjumhr+eahOWAi+S6uuingOm7nuaIluWcsOaWueiJsuW9qSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1NlbGYtY29udHJhZGljdG9yeScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WGheWuueiHquebuOefm+ebvicsICflhaflrrnoh6rnm7jnn5vnm74nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1dlYXNlbCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivreS5ieaooeajseS4pOWPr+iAjOaNn+WPiuWFtuWuouinguaAp+aIluWHhuehruaApycsXG5cdFx0XHRcdFx0XHRcdFx0J+iqnuaEj+aooeajseWFqeWPr+iAjOaQjeWPiuWFtuWuouingOaAp+aIlua6lueiuuaApydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflj6/kvpvmn6Xor4HlkozmnaXmupAnLCAn5Y+v5L6b5p+l6K2J5ZKM5L6G5rqQJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQkxQZGlzcHV0ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvei/neWPjeS6huacieWFveaho+ahiOmmhuWFs+S6jueUn+iAheS8oOiusOeahOadoeS+iycsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemBleWPjeS6huacieeNuOaqlOahiOmkqOmXnOaWvOeUn+iAheWCs+iomOeahOaineS+iydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0JMUHNvdXJjZXMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlJ/ogIXkvKDorrDpnIDopoHooaXlhYXmm7TlpJrlj6/kvpvmn6Xor4HnmoTmnaXmupAnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlJ/ogIXlgrPoqJjpnIDopoHoo5zlhYXmm7TlpJrlj6/kvpvmn6XorYnnmoTkvobmupAnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdCTFAgdW5zb3VyY2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5Lyg6K6w5rKh5pyJ5YiX5Ye65Lu75L2V5Y+C6ICD5oiW5p2l5rqQJyxcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5YKz6KiY5rKS5pyJ5YiX5Ye65Lu75L2V5Y+D6ICD5oiW5L6G5rqQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ2l0ZWNoZWNrJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO95YyF5ZCr5LiN6YCC55So5oiW6KKr5puy6Kej55qE5byV55So6LWE5paZ77yM6YOo5YiG5YaF5a6555qE5YeG56Gu5oCn5peg5rOV6KKr6K+B5a6eJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6IO95YyF5ZCr5LiN6YGp55So5oiW6KKr5puy6Kej55qE5byV55So6LOH5paZ77yM6YOo5YiG5YWn5a6555qE5rqW56K65oCn54Sh5rOV6KKr6K2J5a+mJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTW9yZSBmb290bm90ZXMgbmVlZGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zug5Li65paH5YaF5byV55So5LiN6Laz77yM6YOo5YiG5a2X5Y+l55qE5p2l5rqQ5LuN54S25LiN5piOJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zug54K65paH5YWn5byV55So5LiN6Laz77yM6YOo5YiG5a2X5Y+l55qE5L6G5rqQ5LuN54S25LiN5piOJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTm8gZm9vdG5vdGVzJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zug5Li65rKh5pyJ5YaF5paH5byV55So6ICM5p2l5rqQ5LuN54S25LiN5piOJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zug54K65rKS5pyJ5YWn5paH5byV55So6ICM5L6G5rqQ5LuN54S25LiN5piOJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT25lc291cmNlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5p6B5aSn5oiW5a6M5YWo5Zyw5L6d6LWW5LqO5p+Q5Liq5Y2V5LiA55qE5p2l5rqQJyxcblx0XHRcdFx0XHRcdFx0XHQn5qW15aSn5oiW5a6M5YWo5Zyw5L6d6LO05pa85p+Q5YCL5Zau5LiA55qE5L6G5rqQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3JpZ2luYWwgcmVzZWFyY2gnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflj6/og73ljIXlkKvljp/liJvnoJTnqbbmiJbmnKrmn6Xor4HlhoXlrrknLCAn5Y+v6IO95YyF5ZCr5Y6f5Ym156CU56m25oiW5pyq5p+l6K2J5YWn5a65JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdQcmltYXJ5c291cmNlcycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+S+nei1luesrOS4gOaJi+adpea6kCcsICfkvp3os7TnrKzkuIDmiYvkvobmupAnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1JlZmltcHJvdmUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnIDopoHooaXlhYXmm7TlpJrmnaXmupAnLCAn6ZyA6KaB6KOc5YWF5pu05aSa5L6G5rqQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdVbnJlZmVyZW5jZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmsqHmnInliJflh7rku7vkvZXlj4LogIPmiJbmnaXmupAnLCAn5rKS5pyJ5YiX5Ye65Lu75L2V5Y+D6ICD5oiW5L6G5rqQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WFt+S9k+WGheWuuemXrumimCcsICflhbfpq5TlhaflrrnllY/poYwnKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6K+t6KiAJywgJ+iqnuiogCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ05vdE1hbmRhcmluJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6L+H5aSa5LiN5piv546w5Luj5qCH5YeG5rGJ6K+t55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5YyF5ZCr6YGO5aSa5LiN5piv54++5Luj5qiZ5rqW5ryi6Kqe55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdSb3VnaCB0cmFuc2xhdGlvbicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+e/u+ivkeWTgei0qOS4jeS9sycsICfnv7vora/lk4Hos6rkuI3kvbMnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfpk77mjqUnLCAn6YCj57WQJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnRGVhZCBlbmQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHliqDkuIrlhoXpg6jpk77mjqXku6XmnoTnrZHnmb7np5HlhajkuabnmoTpk77mjqXnvZHnu5wnLFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHliqDkuIrlhafpg6jpgKPntZDku6Xmp4vnr4nnmb7np5Hlhajmm7jnmoTpgKPntZDntrLntaEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdPcnBoYW4nLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmsqHmnInmiJblj6rmnInlvojlsJHpk77lhaXpobXpnaInLCAn5rKS5pyJ5oiW5Y+q5pyJ5b6I5bCR6YCj5YWl6aCB6Z2iJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdPdmVybGlua2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5ZCr5pyJ6L+H5aSa44CB6YeN5aSN44CB5oiW5LiN5b+F6KaB55qE5YaF6YOo6ZO+5o6lJyxcblx0XHRcdFx0XHRcdFx0XHQn5ZCr5pyJ6YGO5aSa44CB6YeN6KSH44CB5oiW5LiN5b+F6KaB55qE5YWn6YOo6YCj57WQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVW5kZXJsaW5rZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHmm7TlpJrlhoXpg6jpk77mjqXku6XmnoTnrZHnmb7np5HlhajkuabnmoTpk77mjqXnvZHnu5wnLFxuXHRcdFx0XHRcdFx0XHRcdCfpnIDopoHmm7TlpJrlhafpg6jpgKPntZDku6Xmp4vnr4nnmb7np5Hlhajmm7jnmoTpgKPntZDntrLntaEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5Y+C6ICD5oqA5pyvJywgJ+WPg+iAg+aKgOihkycpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NpdGF0aW9uIHN0eWxlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5byV55So6ZyA6KaB6L+b6KGM5riF55CGJywgJ+W8leeUqOmcgOimgemAsuihjOa4heeQhicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WIhuexuycsICfliIbpoZ4nKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdJbXByb3ZlIGNhdGVnb3JpZXMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnIDopoHmm7TlpJrpobXpnaLliIbnsbsnLCAn6ZyA6KaB5pu05aSa6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VuY2F0ZWdvcml6ZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnvLrlsJHpobXpnaLliIbnsbsnLCAn57y65bCR6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5ZCI5bm244CB5ouG5YiG44CB56e75YqoJywgJ+WQiOS9teOAgeaLhuWIhuOAgeenu+WLlScpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ01lcmdlIGZyb20nLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhumhtemdouW5tuWFpeatpOmhtemdoicsICflu7rorbDlsIfpoIHpnaLkvbXlhaXmraTpoIHpnaInKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdNZXJnZSB0bycsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5bu66K6u5bCG5q2k6aG16Z2i5bm25YWl6aG16Z2iJywgJ+W7uuitsOWwh+atpOmggemdouS9teWFpemggemdoicpLFxuXHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ01lcmdlJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflu7rorq7mraTpobXpnaLkuI7pobXpnaLlkIjlubYnLCAn5bu66K2w5q2k6aCB6Z2i6IiH6aCB6Z2i5ZCI5L21JyksXG5cdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnUmVxdWVzdGVkIG1vdmUnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhuatpOmhtemdouenu+WKqOWIsOaWsOWQjeensCcsICflu7rorbDlsIfmraTpoIHpnaLnp7vli5XliLDmlrDlkI3nqLEnKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdTcGxpdCcsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5bu66K6u5bCG5q2k6aG16Z2i5YiG5Ymy5Li65aSa5Liq6aG16Z2iJywgJ+W7uuitsOWwh+atpOmggemdouWIhuWJsueCuuWkmuWAi+mggemdoicpLFxuXHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XTtcblx0Ly8gVGFncyBmb3IgUkVESVJFQ1RTIHN0YXJ0IGhlcmVcblx0Ly8gTm90IGJ5IHBvbGljeSwgYnV0IHRoZSBsaXN0IHJvdWdobHkgYXBwcm94aW1hdGVzIGl0ZW1zIHdpdGggPjUwMFxuXHQvLyB0cmFuc2NsdXNpb25zIGZyb20gVGVtcGxhdGU6UiB0ZW1wbGF0ZSBpbmRleFxuXHRUd2lua2xlLnRhZy5yZWRpcmVjdExpc3QgPSBbXG5cdFx0e1xuXHRcdFx0a2V5OiAn5bi455So5qih5p2/Jyxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5ZCI5bm26YeN5a6a5ZCRJywgJ+WQiOS9temHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5L+d5oyB6aG16Z2i6aKY5ZCN6Iez55u45bqU5Li75p2h55uu77yM5Luk6aG16Z2i5YaF5a655Zyo5ZCI5bm25ZCO5LuN6IO95L+d5a2Y5YW257yW6L6R5Y6G5Y+yJyxcblx0XHRcdFx0XHRcdCfkv53mjIHpoIHpnaLpoYzlkI3oh7Pnm7jmh4nkuLvmop3nm67vvIzku6TpoIHpnaLlhaflrrnlnKjlkIjkvbXlvozku43og73lhLLlrZjlhbbnt6jovK/mrbflj7InXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfnroDnuYHph43lrprlkJEnLCAn57Ch57mB6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5byV5a+8566A5L2T6Iez57mB5L2T77yM5oiW57mB5L2T6Iez566A5L2TJywgJ+W8leWwjuewoemrlOiHs+e5gemrlO+8jOaIlue5gemrlOiHs+ewoemrlCcpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+WFs+azqOW6pumHjeWumuWQkScsICfpl5zms6jluqbph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+e8uuS5j+WFs+azqOW6pueahOWtkOS4u+mimOWQkeacieWFs+azqOW6pueahOavjeS4u+mimOeahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHQn57y65LmP6Zec5rOo5bqm55qE5a2Q5Li76aGM5ZCR5pyJ6Zec5rOo5bqm55qE5q+N5Li76aGM55qE6YeN5a6a5ZCRJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICfmqKHmnb/ph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+aMh+WQkeaooeadv+eahOmHjeWumuWQkemhtemdoicsICfmjIflkJHmqKHmnb/nmoTph43lrprlkJHpoIHpnaInKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfliKvlkI3ph43lrprlkJEnLCAn5Yil5ZCN6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmoIfpopjnmoTlhbbku5blkI3np7DjgIHnrJTlkI3jgIHnu7Dlj7fjgIHlkIzkuYnlrZfnrYknLFxuXHRcdFx0XHRcdFx0J+aomemhjOeahOWFtuS7luWQjeeoseOAgeethuWQjeOAgee2veiZn+OAgeWQjOe+qeWtl+etiSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+ivkeWQjemHjeWumuWQkScsICfora/lkI3ph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S6uueJqeOAgeS9nOWTgeetieWQhOmhueS6i+eJqeeahOWFtuS7lue/u+ivkeWQjeensCcsXG5cdFx0XHRcdFx0XHQn5Lq654mp44CB5L2c5ZOB562J5ZCE6aCF5LqL54mp55qE5YW25LuW57+76K2v5ZCN56ixJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn57yp5YaZ6YeN5a6a5ZCRJywgJ+e4ruWvq+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOe8qeWGmScsICfmqJnpoYznuK7lr6snKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfmi7zlhpnph43lrprlkJEnLCAn5ou85a+r6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5qCH6aKY55qE5YW25LuW5LiN5ZCM5ou85YaZJywgJ+aomemhjOeahOWFtuS7luS4jeWQjOaLvOWvqycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+mUmeWtl+mHjeWumuWQkScsICfpjK/lrZfph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnuqDmraPmoIfpopjnmoTluLjop4HplJnor6/mi7zlhpnmiJbor6/mpI0nLCAn57O+5q2j5qiZ6aGM55qE5bi46KaL6Yyv6Kqk5ou85a+r5oiW6Kqk5qSNJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5pen5ZCN6YeN5a6a5ZCRJywgJ+iIiuWQjemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bCG5LqL54mp5pep5YmN55qE5ZCN56ew5byV5a+86Iez5pu05pS55ZCO55qE5Li76aKYJyxcblx0XHRcdFx0XHRcdCflsIfkuovnianml6nliY3nmoTlkI3nqLHlvJXlsI7oh7Pmm7TmlLnlvoznmoTkuLvpoYwnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+WFqOWQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5qCH6aKY55qE5a6M5pW05oiW5pu05a6M5pW05ZCN56ewJywgJ+aomemhjOeahOWujOaVtOaIluabtOWujOaVtOWQjeeosScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn55+t5ZCN6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WujOaVtOagh+mimOWQjeensOaIluS6uueJqeWFqOWQjeeahOmDqOWIhuOAgeS4jeWujOaVtOeahOWQjeensOaIlueugOensCcsXG5cdFx0XHRcdFx0XHQn5a6M5pW05qiZ6aGM5ZCN56ix5oiW5Lq654mp5YWo5ZCN55qE6YOo5YiG44CB5LiN5a6M5pW055qE5ZCN56ix5oiW57Ch56ixJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflp5PmsI/ph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiAn5Lq654mp5aeT5rCPJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+WQjeWtl+mHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246ICfkurrniankurrlkI0nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5pys5ZCN6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogJ+S6uueJqeacrOWQjScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICfpnZ7kuK3mlofph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+mdnuS4reaWh+agh+mimCcsICfpnZ7kuK3mlofmqJnpoYwnKSxcblx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnYWx0TGFuZ0Zyb20nLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+acrOmHjeaWsOWwjuWQkeeahOiqnuiogO+8iOWPr+mBuO+8iScsXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdFx0XHRcdFx0J+i8uOWFpemHjeaWsOWwjuWQkeWQjeeoseaJgOS9v+eUqOiqnuiogOeahElTTyA2Mznku6PnorzvvIzkvovlpoJlbuS7o+ihqOiLseiqnu+8jOS7o+eivOWPr+WPg+imiyBUZW1wbGF0ZTpJU09fNjM5X25hbWUnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5pel5paH6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfml6Xor63lkI3np7AnLCAn5pel6Kqe5ZCN56ixJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiAn5YG255So5qih5p2/Jyxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICfop5LoibLph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+eUteinhuWJp+OAgeeUteW9seOAgeS5puexjeetieS9nOWTgeeahOinkuiJsicsICfpm7voppbliofjgIHpm7vlvbHjgIHmm7jnsY3nrYnkvZzlk4HnmoTop5LoibInKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfnq6DoioLph43lrprlkJEnLCAn56ug56+A6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+85ZCR6Iez6L6D6auY5a+G5bqm57uE57uH55qE6aG16Z2iJywgJ+WwjuWQkeiHs+i8g+mrmOWvhuW6pue1hOe5lOeahOmggemdoicpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5YiX6KGo6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflr7zlkJHoh7PkvY7lr4bluqbnmoTliJfooagnLCAn5bCO5ZCR6Iez5L2O5a+G5bqm55qE5YiX6KGoJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflj6/og73mgKfph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5a+85ZCR6Iez5b2T5YmN5o+Q5L6b5YaF5a655pu05Li66K+m5bC955qE55uu5qCH6aG16Z2iJyxcblx0XHRcdFx0XHRcdCflsI7lkJHoh7PnlbbliY3mj5Dkvpvlhaflrrnmm7TngrroqbPnm6HnmoTnm67mqJnpoIHpnaInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCflhbPogZTlrZfph43lrprlkJEnLCAn6Zec6IGv5a2X6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5qCH6aKY5ZCN56ew5YWz6IGU5a2XJywgJ+aomemhjOWQjeeosemXnOiBr+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+adoeebruivt+axgumHjeWumuWQkScsICfmop3nm67oq4vmsYLph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnIDopoHni6znq4vmnaHnm67nmoTpobXpnaInLCAn6ZyA6KaB542o56uL5qKd55uu55qE6aCB6Z2iJyksXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3JlcUFydGljbGVMYW5nJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICflpJboqp7oqp7oqIDku6PnorzvvJonLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiAn5L2/55SoSVNPIDYzOeS7o+eivO+8jOWPr+WPg+imiyBUZW1wbGF0ZTpJU09fNjM5X25hbWUnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3JlcUFydGljbGVUaXRsZScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5aSW6Kqe6aCB6Z2i5ZCN56ix77yaJyxcblx0XHRcdFx0XHRcdFx0c2l6ZTogNjAsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5b+r5o235pa55byP6YeN5a6a5ZCRJywgJ+aNt+W+kemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+acieWFveaho+ahiOmmhuW/q+aNt+aWueW8jycsICfmnInnjbjmqpTmoYjppKjlv6vmjbfmlrnlvI8nKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6bKc55So5qih5p2/JywgJ+murueUqOaooeadvycpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfor43nu4Tph43lrprlkJEnLCAn6Kme57WE6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflsIbor43nu4Qv6K+N57uEL+aIkOivreaMh+WQkeWIh+mimOeahOadoeebruWPiuaBsOW9k+eroOiKgicsXG5cdFx0XHRcdFx0XHQn5bCH6Kme57WEL+ipnue1hC/miJDoqp7mjIflkJHliIfpoYznmoTmop3nm67lj4rmgbDnlbbnq6Dnr4AnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfmtojmrafkuYnpobXph43lrprlkJEnLCAn5raI5q2n576p6aCB6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5oyH5ZCR5raI5q2n5LmJ6aG1JywgJ+aMh+WQkea2iOatp+e+qemggScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5Z+f5ZCN6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfln5/lkI0nLCAn57ay5Z+f5ZCN56ixJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflubTku6Pph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+S6juW5tOS7veadoeebruWvvOWQkeiHs+W5tOS7o+adoeebricsICfmlrzlubTku73mop3nm67lsI7lkJHoh7PlubTku6Pmop3nm64nKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfnlKjmiLfmoYbmqKHmnb/ph43lrprlkJEnLCAn55So5oi25qGG5qih5p2/6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn55So5oi35qGG5qih5p2/JywgJ+eUqOaItuahhuaooeadvycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn6YeN5a6a5ZCR5qih5p2/55So6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflr7zlkJHoh7Pph43lrprlkJHmqKHmnb8nLCAn5bCO5ZCR6Iez6YeN5a6a5ZCR5qih5p2/JyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdFWElG6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCdKUEVH5Zu+5YOP5paH5Lu25YyF5ZCrRVhJRuS/oeaBrycsICdKUEVH5ZyW5qqU5YyF5ZCrRVhJRuizh+ioiicpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHQvLyBtYWludGVuYW5jZSB0YWdzIGZvciBGSUxFUyBzdGFydCBoZXJlXG5cdFR3aW5rbGUudGFnLmZpbGVMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfokZfkvZzmnYPlkozmnaXmupDpl67popjmoIfnrb4nLCAn6JGX5L2c5qyK5ZKM5L6G5rqQ5ZWP6aGM5qiZ57GkJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e05vbi1mcmVlIHJlZHVjZX1977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Z2e5L2O5YiG6L6o546H55qE5ZCI55CG5L2/55So5Zu+5YOP77yI5oiW6L+H6ZW/55qE6Z+z6aKR5Ymq6L6R562J77yJJyxcblx0XHRcdFx0XHRcdCfpnZ7kvY7op6PmnpDluqbnmoTlkIjnkIbkvb/nlKjlnJblg4/vvIjmiJbpgY7plbfnmoTpn7PpoLvliarovK/nrYnvvIknXG5cdFx0XHRcdFx0KX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnTm9uLWZyZWUgcmVkdWNlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5riF55CG5qCH562+JywgJ+a4heeQhuaomeexpCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tXYXRlcm1hcmt9fe+8miR7d2luZG93LndnVUxTKCflm77lg4/ljIXlkKvkuobmsLTljbAnLCAn5ZyW5YOP5YyF5ZCr5LqG5rWu5rC05Y2wJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ1dhdGVybWFyaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7UmVuYW1lIG1lZGlhfX3vvJoke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmlofku7blupTor6XmoLnmja7mlofku7blkI3np7DmjIflvJXooqvph43lkb3lkI0nLFxuXHRcdFx0XHRcdFx0J+aqlOahiOaHieipsuagueaTmuaqlOahiOWQjeeoseaMh+W8leiiq+mHjeaWsOWRveWQjSdcblx0XHRcdFx0XHQpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdSZW5hbWUgbWVkaWEnLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZW5hbWVtZWRpYU5ld25hbWUnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlrDlkI3np7DvvJonLCAn5paw5ZCN56ix77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn6L6T5YWl5Zu+5YOP55qE5paw5ZCN56ew77yI5Y+v6YCJ77yJJywgJ+i8uOWFpeWcluWDj+eahOaWsOWQjeeose+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3JlbmFtZW1lZGlhUmVhc29uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfljp/lm6DvvJonLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+i+k+WFpemHjeWRveWQjeeahOWOn+WboO+8iOWPr+mAie+8iScsICfovLjlhaXph43mlrDlkb3lkI3nmoTljp/lm6DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tTaG91bGQgYmUgU1ZHfX3vvJoke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCdQTkfjgIFHSUbjgIFKUEVH5paH5Lu25bqU6K+l6YeN5Yi25oiQ55+i6YeP5Zu+5b2iJyxcblx0XHRcdFx0XHRcdCdQTkfjgIFHSUbjgIFKUEVH5qqU5qGI5oeJ6Kmy6YeN6KO95oiQ5ZCR6YeP5ZyW5b2iJ1xuXHRcdFx0XHRcdCl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ1Nob3VsZCBiZSBTVkcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfmlofku7blj5bku6PmoIfnrb4nLCAn5qqU5qGI5Y+W5Luj5qiZ57GkJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e09ic29sZXRlfX3vvJoke3dpbmRvdy53Z1VMUygn5pyJ5paw54mI5pys5Y+v55So55qE6L+H5pe25paH5Lu2JywgJ+acieaWsOeJiOacrOWPr+eUqOeahOmBjuaZguaqlOahiCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdPYnNvbGV0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7VmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlfX3vvJoke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmnInnn6Lph4/lm77lvaLlj6/nlKjnmoTpnZ7nn6Lph4/lm77lvaLmlofku7YnLFxuXHRcdFx0XHRcdFx0J+acieWQkemHj+WcluW9ouWPr+eUqOeahOmdnuWQkemHj+WcluW9ouaqlOahiCdcblx0XHRcdFx0XHQpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdWZWN0b3IgdmVyc2lvbiBhdmFpbGFibGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHRcdGJ1aWxkRmlsZW5hbWU6IHRydWUsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS50YWcuY2FsbGJhY2tzID0ge1xuXHRcdGFydGljbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyBSZW1vdmUgdGFncyB0aGF0IGJlY29tZSBzdXBlcmZsdW91cyB3aXRoIHRoaXMgYWN0aW9uXG5cdFx0XHRsZXQgcGFnZVRleHQgPSBwYWdlb2JqXG5cdFx0XHRcdC5nZXRQYWdlVGV4dCgpXG5cdFx0XHRcdC5yZXBsYWNlKFxuXHRcdFx0XHRcdC9cXHtcXHtcXHMqKFtObl1ldyB1bnJldmlld2VkIGFydGljbGV8W1V1XW5yZXZpZXdlZHxbVXVdc2Vyc3BhY2UgZHJhZnQpXFxzKihcXHwoPzpcXHtcXHtbXnt9XSpcXH1cXH18W157fV0pKik/XFx9XFx9XFxzKi9nLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBTYXZlcyB0aGUgcGFnZSBmb2xsb3dpbmcgdGhlIHJlbW92YWwgb2YgdGFncyBpZiBhbnkuIFRoZSBsYXN0IHN0ZXAuXG5cdFx0XHQgKiBDYWxsZWQgZnJvbSByZW1vdmVUYWdzKClcblx0XHRcdCAqL1xuXHRcdFx0Y29uc3QgcG9zdFJlbW92YWwgPSAoKSA9PiB7XG5cdFx0XHRcdGlmIChwYXJhbXMudGFnc1RvUmVtb3ZlLmxlbmd0aCkge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSBlbXB0eSB7e211bHRpcGxlIGlzc3Vlc319IGlmIGZvdW5kXG5cdFx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyhtdWx0aXBsZSA/aXNzdWVzfGFydGljbGUgP2lzc3Vlc3xtaXxhaXxpc3N1ZXN85aSa5YCL5ZWP6aGMfOWkmuS4qumXrumimHzllY/poYzmop3nm6586Zeu6aKY5p2h55uufOaVuOWAi+WVj+mhjHzmlbDkuKrpl67popgpXFxzKlxcfFxccypcXH1cXH1cXG4/L2ltLFxuXHRcdFx0XHRcdFx0Jydcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIFJlbW92ZSBzaW5nbGUtZWxlbWVudCB7e211bHRpcGxlIGlzc3Vlc319IGlmIGZvdW5kXG5cdFx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyg/Om11bHRpcGxlID9pc3N1ZXN8YXJ0aWNsZSA/aXNzdWVzfG1pfGFpfGlzc3Vlc3zlpJrlgIvllY/poYx85aSa5Liq6Zeu6aKYfOWVj+mhjOaineebrnzpl67popjmnaHnm6585pW45YCL5ZWP6aGMfOaVsOS4qumXrumimClcXHMqXFx8XFxzKihcXHtcXHsoPzpcXHtcXHtbXnt9XSpcXH1cXH18W157fV0pK1xcfVxcfSlcXHMqXFx9XFx9L2ltLFxuXHRcdFx0XHRcdFx0JyQxJ1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gQnVpbGQgZWRpdCBzdW1tYXJ5XG5cdFx0XHRcdGNvbnN0IG1ha2VTZW50ZW5jZSA9IChhcnJheSkgPT4ge1xuXHRcdFx0XHRcdGlmIChhcnJheS5sZW5ndGggPCAzKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYXJyYXkuam9pbign5ZKMJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGxhc3QgPSBhcnJheS5wb3AoKTtcblx0XHRcdFx0XHRyZXR1cm4gYCR7YXJyYXkuam9pbign44CBJyl95ZKMJHtsYXN0fWA7XG5cdFx0XHRcdH07XG5cdFx0XHRcdGNvbnN0IG1ha2VUZW1wbGF0ZUxpbmsgPSAodGFnKSA9PiB7XG5cdFx0XHRcdFx0bGV0IHRleHQgPSAne3tbWyc7XG5cdFx0XHRcdFx0Ly8gaWYgaXQgaXMgYSBjdXN0b20gdGFnIHdpdGggYSBwYXJhbWV0ZXJcblx0XHRcdFx0XHRpZiAodGFnLmluY2x1ZGVzKCd8JykpIHtcblx0XHRcdFx0XHRcdHRhZyA9IHRhZy5zbGljZSgwLCB0YWcuaW5kZXhPZignfCcpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGV4dCArPSB0YWcuaW5jbHVkZXMoJzonKSA/IHRhZyA6IGBUZW1wbGF0ZToke3RhZ318JHt0YWd9YDtcblx0XHRcdFx0XHRyZXR1cm4gYCR7dGV4dH1dXX19YDtcblx0XHRcdFx0fTtcblx0XHRcdFx0bGV0IHN1bW1hcnlUZXh0O1xuXHRcdFx0XHRjb25zdCBhZGRlZFRhZ3MgPSBwYXJhbXMudGFncy5tYXAobWFrZVRlbXBsYXRlTGluayk7XG5cdFx0XHRcdGNvbnN0IHJlbW92ZWRUYWdzID0gcGFyYW1zLnRhZ3NUb1JlbW92ZS5tYXAobWFrZVRlbXBsYXRlTGluayk7XG5cdFx0XHRcdGlmIChhZGRlZFRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSBg5Yqg5YWlJHttYWtlU2VudGVuY2UoYWRkZWRUYWdzKX1gO1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ICs9IHJlbW92ZWRUYWdzLmxlbmd0aCA/IGDkuKbnp7vpmaQke21ha2VTZW50ZW5jZShyZW1vdmVkVGFncyl9YCA6ICcnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gYOenu+mZpCR7bWFrZVNlbnRlbmNlKHJlbW92ZWRUYWdzKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpO1xuXHRcdFx0XHRpZiAocGFyYW1zLnJlYXNvbikge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ICs9IGDvvJoke3BhcmFtcy5yZWFzb259YDtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBhdm9pZCB0cnVuY2F0ZWQgc3VtbWFyaWVzXG5cdFx0XHRcdGlmIChzdW1tYXJ5VGV4dC5sZW5ndGggPiA0OTkpIHtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCA9IHN1bW1hcnlUZXh0LnJlcGxhY2UoL1xcW1xcW1tefF0rXFx8KFteXFxdXSspXFxdXFxdL2csICckMScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQocGFnZVRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnlUZXh0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hUYWdnZWRQYWdlcycpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc01pbm9yJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdFx0cGFnZW9iai5zYXZlKCgpID0+IHtcblx0XHRcdFx0XHQvLyBzcGVjaWFsIGZ1bmN0aW9ucyBmb3IgbWVyZ2UgdGFnc1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VSZWFzb24pIHtcblx0XHRcdFx0XHRcdC8vIHBvc3QgdGhlIHJhdGlvbmFsZSBvbiB0aGUgdGFsayBwYWdlIChvbmx5IG9wZXJhdGVzIGluIG1haW4gbmFtZXNwYWNlKVxuXHRcdFx0XHRcdFx0Y29uc3QgdGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRgVGFsazoke3BhcmFtcy5kaXNjdXNzQXJ0aWNsZX1gLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhueQhueUsei0tOi/m+iuqOiuuumhtScsICflsIfnkIbnlLHosrzpgLLoqI7oq5bpoIEnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHRhbGtwYWdlLnNldE5ld1NlY3Rpb25UZXh0KGAke3BhcmFtcy5tZXJnZVJlYXNvbi50cmltKCl9IH5+YC5jb25jYXQoJ35+JykpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0TmV3U2VjdGlvblRpdGxlKGDor7fmsYLkuI5bWyR7cGFyYW1zLm5vbkRpc2N1c3NBcnRpY2xlfV1d5ZCI5bm2YCk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaE1lcmdlRGlzY3Vzc2lvbnMnKSk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5uZXdTZWN0aW9uKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYWdPdGhlcikge1xuXHRcdFx0XHRcdFx0Ly8gdGFnIHRoZSB0YXJnZXQgcGFnZSBpZiByZXF1ZXN0ZWRcblx0XHRcdFx0XHRcdGxldCBvdGhlclRhZ05hbWUgPSAnTWVyZ2UnO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5tZXJnZVRhZyA9PT0gJ01lcmdlIGZyb20nKSB7XG5cdFx0XHRcdFx0XHRcdG90aGVyVGFnTmFtZSA9ICdNZXJnZSB0byc7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5tZXJnZVRhZyA9PT0gJ01lcmdlIHRvJykge1xuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgZnJvbSc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCBuZXdQYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRcdHRhZ3M6IFtvdGhlclRhZ05hbWVdLFxuXHRcdFx0XHRcdFx0XHR0YWdzVG9SZW1vdmU6IFtdLFxuXHRcdFx0XHRcdFx0XHR0YWdzVG9SZW1haW46IFtdLFxuXHRcdFx0XHRcdFx0XHRtZXJnZVRhcmdldDogTW9yZWJpdHMucGFnZU5hbWVOb3JtLFxuXHRcdFx0XHRcdFx0XHRkaXNjdXNzQXJ0aWNsZTogcGFyYW1zLmRpc2N1c3NBcnRpY2xlLFxuXHRcdFx0XHRcdFx0XHR0YWxrRGlzY3Vzc2lvblRpdGxlOiBwYXJhbXMudGFsa0Rpc2N1c3Npb25UaXRsZSxcblx0XHRcdFx0XHRcdFx0dGFsa0Rpc2N1c3Npb25UaXRsZUxpbmtlZDogcGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGVMaW5rZWQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3RoZXJwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0cGFyYW1zLm1lcmdlVGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+agh+iusOWFtuS7lumhtemdou+8iCcsICfmqJnoqJjlhbbku5bpoIHpnaLvvIgnKSArIHBhcmFtcy5tZXJnZVRhcmdldH3vvIlgXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0b3RoZXJwYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhuZXdQYXJhbXMpO1xuXHRcdFx0XHRcdFx0b3RoZXJwYWdlLmxvYWQoVHdpbmtsZS50YWcuY2FsbGJhY2tzLmFydGljbGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBzcGVjaWFsIGZ1bmN0aW9ucyBmb3IgcmVxdWVzdGVkIG1vdmUgdGFnc1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubW92ZVJlYXNvbikge1xuXHRcdFx0XHRcdFx0Ly8gcG9zdCB0aGUgcmF0aW9uYWxlIG9uIHRoZSB0YWxrIHBhZ2UgKG9ubHkgb3BlcmF0ZXMgaW4gbWFpbiBuYW1lc3BhY2UpXG5cdFx0XHRcdFx0XHRsZXQgbW92ZVRhbGtwYWdlVGV4dCA9ICdcXG5cXG57eycuY29uY2F0KCdzdWJzdDonLCBgUk18MT0ke3BhcmFtcy5tb3ZlUmVhc29uLnRyaW0oKX1gKTtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMubW92ZVRhcmdldCkge1xuXHRcdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2VUZXh0ICs9IGB8Mj0ke3BhcmFtcy5tb3ZlVGFyZ2V0fWA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2VUZXh0ICs9ICd9fSc7XG5cdFx0XHRcdFx0XHRjb25zdCBtb3ZlVGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRgVGFsazoke3BhcmFtcy5kaXNjdXNzQXJ0aWNsZX1gLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhueQhueUsei0tOi/m+iuqOiuuumhtScsICflsIfnkIbnlLHosrzpgLLoqI7oq5bpoIEnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5zZXRBcHBlbmRUZXh0KG1vdmVUYWxrcGFnZVRleHQpO1xuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axguenu+WKqCcsICfoq4vmsYLnp7vli5UnKSArXG5cdFx0XHRcdFx0XHRcdFx0KHBhcmFtcy5tb3ZlVGFyZ2V0ID8gYOiHs1tbJHtwYXJhbXMubW92ZVRhcmdldH1dXWAgOiAnJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAocGFyYW1zLnBhdHJvbCkge1xuXHRcdFx0XHRcdHBhZ2VvYmoucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvKipcblx0XHRcdCAqIFJlbW92ZXMgdGhlIGV4aXN0aW5nIHRhZ3MgdGhhdCB3ZXJlIGRlc2VsZWN0ZWQgKGlmIGFueSlcblx0XHRcdCAqIENhbGxzIHBvc3RSZW1vdmFsKCkgd2hlbiBkb25lXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IHJlbW92ZVRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRcdGlmIChwYXJhbXMudGFnc1RvUmVtb3ZlLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdHBvc3RSZW1vdmFsKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn56e76Zmk5Y+W5raI6YCJ5oup55qE5bey5a2Y5Zyo5qCH6K6wJywgJ+enu+mZpOWPlua2iOmBuOaTh+eahOW3suWtmOWcqOaomeiomCcpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGdldFJlZGlyZWN0c0ZvciA9IFtdO1xuXHRcdFx0XHQvLyBSZW1vdmUgdGhlIHRhZ3MgZnJvbSB0aGUgcGFnZSB0ZXh0LCBpZiBmb3VuZCBpbiBpdHMgcHJvcGVyIG5hbWUsXG5cdFx0XHRcdC8vIG90aGVyd2lzZSBtb3ZlcyBpdCB0byBgZ2V0UmVkaXJlY3RzRm9yYCBhcnJheSBlYXJtYXJraW5nIGl0IGZvclxuXHRcdFx0XHQvLyBsYXRlciByZW1vdmFsXG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWdzVG9SZW1vdmUpIHtcblx0XHRcdFx0XHRjb25zdCB0YWdfcmUgPSBuZXcgUmVnRXhwKGBcXFxce1xcXFx7JHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KHRhZyl9XFxcXHMqKFxcXFx8W159XSspP1xcXFx9XFxcXH1cXFxcbj9gKTtcblx0XHRcdFx0XHRpZiAodGFnX3JlLnRlc3QocGFnZVRleHQpKSB7XG5cdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGdldFJlZGlyZWN0c0Zvci5wdXNoKGBUZW1wbGF0ZToke3RhZ31gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFnZXRSZWRpcmVjdHNGb3IubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cG9zdFJlbW92YWwoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVtb3ZlIHRhZ3Mgd2hpY2ggYXBwZWFyIGluIHBhZ2UgdGV4dCBhcyByZWRpcmVjdHNcblx0XHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5qih5p2/6YeN5a6a5ZCRJywgJ+WPluW+l+aooeadv+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHByb3A6ICdsaW5rc2hlcmUnLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiBnZXRSZWRpcmVjdHNGb3Iuam9pbignfCcpLFxuXHRcdFx0XHRcdFx0cmVkaXJlY3RzOiAxLFxuXHRcdFx0XHRcdFx0bGhuYW1lc3BhY2U6ICcxMCcsXG5cdFx0XHRcdFx0XHRsaHNob3c6ICdyZWRpcmVjdCcsXG5cdFx0XHRcdFx0XHRsaGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdCQoYXBpb2JqLnJlc3BvbnNlWE1MKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgncGFnZScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfaWR4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJlbW92ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHQkKHBhZ2UpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnbGgnKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmVhY2goKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0YWcgPSAkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJykuc2xpY2UoOSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRhZ19yZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxcXFxzKihcXFxcfCg/OlxcXFx7XFxcXHtbXnt9XSpcXFxcfVxcXFx9fFtee31dKSopP1xcXFx9XFxcXH1cXFxcbj9gXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0YWdfcmUudGVzdChwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgJC5lYWNoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFyZW1vdmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5peg5rOV5Zyo6aG16Z2i5LiK5om+5Yiwe3snLCAn54Sh5rOV5Zyo6aCB6Z2i5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChwYWdlKS5hdHRyKCd0aXRsZScpLnNsaWNlKDkpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHBvc3RSZW1vdmFsKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhcGkucG9zdCgpO1xuXHRcdFx0fTtcblx0XHRcdGlmICghcGFyYW1zLnRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdHJlbW92ZVRhZ3MoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHRhZ1JlO1xuXHRcdFx0bGV0IHRhZ1RleHQgPSAnJztcblx0XHRcdGxldCB0YWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVUYWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVFeGlzdGluZ1RhZ3MgPSBbXTtcblx0XHRcdC8vIEV4ZWN1dGVzIGZpcnN0OiBhZGRpdGlvbiBvZiBzZWxlY3RlZCB0YWdzXG5cdFx0XHQvKipcblx0XHRcdCAqIFVwZGF0ZXMgYHRhZ1RleHRgIHdpdGggdGhlIHN5bnRheCBvZiBgdGFnTmFtZWAgdGVtcGxhdGUgd2l0aCBpdHMgcGFyYW1ldGVyc1xuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0YWdOYW1lXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lKSA9PiB7XG5cdFx0XHRcdGxldCBjdXJyZW50VGFnID0gJyc7XG5cdFx0XHRcdGlmICh0YWdOYW1lID09PSAnVW5jYXRlZ29yaXplZCcgfHwgdGFnTmFtZSA9PT0gJ0ltcHJvdmUgY2F0ZWdvcmllcycpIHtcblx0XHRcdFx0XHRwYWdlVGV4dCArPSBgXFxuXFxue3ske3RhZ05hbWV9fHRpbWU9e3tgLmNvbmNhdCgnc3Vic3Q6JywgJyN0aW1lOmN9fX19Jyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudFRhZyArPSBge3ske3RhZ05hbWV9YDtcblx0XHRcdFx0XHQvLyBmaWxsIGluIG90aGVyIHBhcmFtZXRlcnMsIGJhc2VkIG9uIHRoZSB0YWdcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZ05hbWUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ0V4cGVydCBuZWVkZWQnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdD0ke3BhcmFtcy5leHBlcnR9YDtcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5leHBlcnQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHN1YmplY3QyPSR7cGFyYW1zLmV4cGVydDJ9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmV4cGVydDMpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdDM9JHtwYXJhbXMuZXhwZXJ0M31gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UnOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1lcmdlIHRhcmdldCBmb3Igbm93IGFuZCBsYXRlclxuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldCA9IE1vcmViaXRzLnN0cmluZy50b1VwcGVyQ2FzZUZpcnN0Q2hhcihcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwke3BhcmFtcy5tZXJnZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGxpbmsgdG8gdGhlIGNvcnJlY3Qgc2VjdGlvbiBvbiB0aGUgdGFsayBwYWdlLCBmb3IgYXJ0aWNsZSBzcGFjZSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KHBhcmFtcy5tZXJnZVJlYXNvbiB8fCBwYXJhbXMuZGlzY3Vzc0FydGljbGUpXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXBhcmFtcy5kaXNjdXNzQXJ0aWNsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBkaXNjdXNzQXJ0aWNsZSBpcyB0aGUgYXJ0aWNsZSB3aG9zZSB0YWxrIHBhZ2Ugd2lsbCBjb250YWluIHRoZSBkaXNjdXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFnTmFtZSA9PT0gJ01lcmdlIHRvJyA/IHBhcmFtcy5tZXJnZVRhcmdldCA6IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gbm9uRGlzY3Vzc0FydGljbGUgaXMgdGhlIGFydGljbGUgd2hpY2ggd29uJ3QgaGF2ZSB0aGUgZGlzY3Vzc2lvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubm9uRGlzY3Vzc0FydGljbGUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhZ05hbWUgPT09ICdNZXJnZSB0bycgPyBtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykgOiBwYXJhbXMubWVyZ2VUYXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy50YWxrRGlzY3Vzc2lvblRpdGxlID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axguS4jicsICfoq4vmsYLoiIcnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm5vbkRpc2N1c3NBcnRpY2xlICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WQiOW5ticsICflkIjkvbUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxkaXNjdXNzPVRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9IyR7cGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGV9YDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdNaXNzaW5nIGluZm9ybWF0aW9uJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMubWlzc2luZ0luZm9ybWF0aW9ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm90YWJpbGl0eSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubm90YWJpbGl0eSAhPT0gJ25vbmUnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDM9JHtwYXJhbXMubm90YWJpbGl0eX1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVxdWVzdGVkIG1vdmUnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1vdmUgdGFyZ2V0IGZvciBub3cgYW5kIGxhdGVyXG5cdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm1vdmVUYXJnZXQgPSBNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubW92ZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8JHtwYXJhbXMubW92ZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnU3BsaXQnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLnRhcmdldDEpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8MT0ke3BhcmFtcy50YXJnZXQxfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy50YXJnZXQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDI9JHtwYXJhbXMudGFyZ2V0Mn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMudGFyZ2V0Mykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwzPSR7cGFyYW1zLnRhcmdldDN9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ0NsZWFudXAnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmNsZWFudXBSZWFzb24pIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmNsZWFudXBSZWFzb259YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjdXJyZW50VGFnICs9ICd8dGltZT17eycuY29uY2F0KCdzdWJzdDonLCAnI3RpbWU6Y319fX1cXG4nKTtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGN1cnJlbnRUYWc7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvKipcblx0XHRcdCAqIEFkZHMgdGhlIHRhZ3Mgd2hpY2ggZ28gb3V0c2lkZSB7e211bHRpcGxlIGlzc3Vlc319LCBlaXRoZXIgYmVjYXVzZVxuXHRcdFx0ICogdGhlc2UgdGFncyBhcmVuJ3Qgc3VwcG9ydGVkIGluIHt7bXVsdGlwbGUgaXNzdWVzfX0gb3IgYmVjYXVzZVxuXHRcdFx0ICoge3ttdWx0aXBsZSBpc3N1ZXN9fSBpcyBub3QgYmVpbmcgYWRkZWQgdG8gdGhlIHBhZ2UgYXQgYWxsXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFVuZ3JvdXBlZFRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcblx0XHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlcyxcblx0XHRcdFx0Ly8gYXMgd2VsbCBhcyBkZWxldGlvbi9wcm90ZWN0aW9uLXJlbGF0ZWQgdGVtcGxhdGVzXG5cdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHBhZ2VUZXh0KTtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVzQWZ0ZXIgPVxuXHRcdFx0XHRcdC8vIFByb3RlY3Rpb24gdGVtcGxhdGVzXG5cdFx0XHRcdFx0Ly8gQ1NEXG5cdFx0XHRcdFx0Ly8gQWZEXG5cdFx0XHRcdFx0YCR7VHdpbmtsZS5oYXRub3RlUmVnZXh9cHB8cHAtLio/fCg/OkRlbGV0ZXxEYi1yZWFzb258RHxEZWxldGViZWNhdXNlfERifOmAn+WIoHzpgJ/liKp8U3BlZWR5fFNEfOW/q+WIoHzlv6vliKp8Q1NEKXxbcnNhaWZ0Y212XWZkfHZmZC0oPzpifHF8c3xzb3VyY2V8dnx3aWt0KXwoPzrnp7vliqjliLDnu7Tln7p856e75YuV5Yiw57at5Z+6KSg/OuaVmeenkeS5pnzmlZnnp5Hmm7h86K+t5b2VfOiqnumMhHzmloflupN85paH5bqrfOWvvOa4uHzlsI7pgYp86K+N5YW4fOipnuWFuClgO1xuXHRcdFx0XHRwYWdlVGV4dCA9IHlzYXJjaGl2ZXNfcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWdUZXh0LCB0ZW1wbGF0ZXNBZnRlcikuZ2V0VGV4dCgpO1xuXHRcdFx0XHRyZW1vdmVUYWdzKCk7XG5cdFx0XHR9O1xuXHRcdFx0Ly8gU2VwYXJhdGUgdGFncyBpbnRvIGdyb3VwYWJsZSBvbmVzIChgZ3JvdXBhYmxlVGFnc2ApIGFuZCBub24tZ3JvdXBhYmxlIG9uZXMgKGB0YWdzYClcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWdzKSB7XG5cdFx0XHRcdHRhZ1JlID0gbmV3IFJlZ0V4cChgXFxcXHtcXFxceyR7dGFnfShcXFxcfHxcXFxcfVxcXFx9KWAsICdpbScpO1xuXHRcdFx0XHQvLyByZWdleCBjaGVjayBmb3IgcHJlZXhpc3RlbmNlIG9mIHRhZyBjYW4gYmUgc2tpcHBlZCBpZiBpbiBjYW5SZW1vdmUgbW9kZVxuXHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuY2FuUmVtb3ZlIHx8ICF0YWdSZS5leGVjKHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdHRhZyA9PT0gJ05vdGFiaWxpdHknICYmXG5cdFx0XHRcdFx0XHQobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCB8fFxuXHRcdFx0XHRcdFx0XHRjb25maXJtKFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfor6XpobXpnaLkuI3mmK/mnaHnm67vvIzmgqjku43opoHmj5DmiqXliLDlhbPms6jluqbmj5DmiqXlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+ipsumggemdouS4jeaYr+aineebru+8jOaCqOS7jeimgeaPkOWgseWIsOmXnOazqOW6puaPkOWgseWXju+8nydcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCkpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHQnTElCX3RhbGs65a2Y5bqf6K6o6K66L+WFs+azqOW6puaPkOaKpScsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5YWz5rOo5bqm6K6w5b2V6aG5JywgJ+WKoOWFpemXnOazqOW6puiomOmMhOmghScpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmxvYWQoVHdpbmtsZS50YWcuY2FsbGJhY2tzLm5vdGFiaWxpdHlMaXN0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gY29uZGl0aW9uIFR3aW5rbGUudGFnLmFydGljbGUudGFnc1t0YWddIHRvIGVuc3VyZSB0aGF0IGl0cyBub3QgYSBjdXN0b20gdGFnXG5cdFx0XHRcdFx0Ly8gQ3VzdG9tIHRhZ3MgYXJlIGFzc3VtZWQgbm9uLWdyb3VwYWJsZSwgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGV0aGVyIE1JIHRlbXBsYXRlIHN1cHBvcnRzIHRoZW1cblx0XHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdFx0Z3JvdXBhYmxlVGFncy5wdXNoKHRhZyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhZ3MucHVzaCh0YWcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh0YWcgPT09ICdNZXJnZSBmcm9tJykge1xuXHRcdFx0XHRcdHRhZ3MucHVzaCh0YWcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsHt7JywgJ+WcqOmggemdouS4iuaJvuWIsHt7JykgKyB0YWcgKyB3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIGRvbid0IGRvIGFueXRoaW5nIGVsc2Ugd2l0aCBtZXJnZSB0YWdzXG5cdFx0XHRcdFx0aWYgKFsnTWVyZ2UnLCAnTWVyZ2UgdG8nXS5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0XHRwYXJhbXMubWVyZ2VUYXJnZXQgPSBudWxsO1xuXHRcdFx0XHRcdFx0cGFyYW1zLm1lcmdlUmVhc29uID0gbnVsbDtcblx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhZ090aGVyID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIFRvLWJlLXJldGFpbmVkIGV4aXN0aW5nIHRhZ3MgdGhhdCBhcmUgZ3JvdXBhYmxlXG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFnc1RvUmVtYWluKSB7XG5cdFx0XHRcdC8vIElmIHRoZSB0YWcgaXMgdW5rbm93biB0byB1cywgd2UgY29uc2lkZXIgaXQgbm9uLWdyb3VwYWJsZVxuXHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdGdyb3VwYWJsZUV4aXN0aW5nVGFncy5wdXNoKHRhZyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnN0IG1pVGVzdCA9XG5cdFx0XHRcdC9cXHtcXHsobXVsdGlwbGUgP2lzc3Vlc3xhcnRpY2xlID9pc3N1ZXN8bWl8YWl8aXNzdWVzfOWkmuWAi+WVj+mhjHzlpJrkuKrpl67poph85ZWP6aGM5qKd55uufOmXrumimOadoeebrnzmlbjlgIvllY/poYx85pWw5Liq6Zeu6aKYKVxccypcXHxbXn1dK1xcey9pbS5leGVjKFxuXHRcdFx0XHRcdHBhZ2VUZXh0XG5cdFx0XHRcdCk7XG5cdFx0XHRpZiAobWlUZXN0ICYmIGdyb3VwYWJsZVRhZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5pSv5oyB55qE5qCH6K6w5YWl5bey5a2Y5Zyo55qEe3ttdWx0aXBsZSBpc3N1ZXN9fScsXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5pSv5o+055qE5qiZ6KiY5YWl5bey5a2Y5Zyo55qEe3ttdWx0aXBsZSBpc3N1ZXN9fSdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ1RleHQgPSAnJztcblx0XHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgZ3JvdXBhYmxlVGFncykge1xuXHRcdFx0XHRcdGFkZFRhZyh0YWcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IG1pUmVnZXggPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdGAoXFxcXHtcXFxce1xcXFxzKiR7bWlUZXN0WzFdfVxcXFxzKig/OlxcXFx8KD86XFxcXHtcXFxce1tee31dKlxcXFx9XFxcXH18W157fV0pKik/KVxcXFx9XFxcXH1cXFxccypgLFxuXHRcdFx0XHRcdCdpbSdcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKG1pUmVnZXgsIGAkMSR7dGFnVGV4dH19fVxcbmApO1xuXHRcdFx0XHR0YWdUZXh0ID0gJyc7XG5cdFx0XHRcdGFkZFVuZ3JvdXBlZFRhZ3MoKTtcblx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLmdyb3VwICYmICFtaVRlc3QgJiYgZ3JvdXBhYmxlRXhpc3RpbmdUYWdzLmxlbmd0aCArIGdyb3VwYWJsZVRhZ3MubGVuZ3RoID49IDIpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXmlK/mjIHnmoTmoIforrDlhaV7e211bHRpcGxlIGlzc3Vlc319JywgJ+WKoOWFpeaUr+aPtOeahOaomeiomOWFpXt7bXVsdGlwbGUgaXNzdWVzfX0nKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0YWdUZXh0ICs9ICd7e011bHRpcGxlIGlzc3Vlc3xcXG4nO1xuXHRcdFx0XHQvKipcblx0XHRcdFx0ICogQWRkcyBuZXdseSBhZGRlZCB0YWdzIHRvIE1JXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHRjb25zdCBhZGROZXdUYWdzVG9NSSA9ICgpID0+IHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBncm91cGFibGVUYWdzKSB7XG5cdFx0XHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGFnVGV4dCArPSAnfX1cXG4nO1xuXHRcdFx0XHRcdGFkZFVuZ3JvdXBlZFRhZ3MoKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgZ2V0UmVkaXJlY3RzRm9yID0gW107XG5cdFx0XHRcdC8vIFJlcG9zaXRpb24gdGhlIHRhZ3Mgb24gdGhlIHBhZ2UgaW50byB7e211bHRpcGxlIGlzc3Vlc319LCBpZiBmb3VuZCB3aXRoIGl0c1xuXHRcdFx0XHQvLyBwcm9wZXIgbmFtZSwgZWxzZSBtb3ZlcyBpdCB0byBgZ2V0UmVkaXJlY3RzRm9yYCBhcnJheSB0byBiZSBoYW5kbGVkIGxhdGVyXG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGdyb3VwYWJsZUV4aXN0aW5nVGFncykge1xuXHRcdFx0XHRcdGNvbnN0IHRhZ19yZSA9IG5ldyBSZWdFeHAoYChcXFxce1xcXFx7JHtNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KHRhZyl9XFxcXHMqKFxcXFx8W159XSspP1xcXFx9XFxcXH1cXFxcbj8pYCk7XG5cdFx0XHRcdFx0aWYgKHRhZ19yZS50ZXN0KHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdFx0dGFnVGV4dCArPSB0YWdfcmUuZXhlYyhwYWdlVGV4dClbMV07XG5cdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGdldFJlZGlyZWN0c0Zvci5wdXNoKGBUZW1wbGF0ZToke3RhZ31gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFnZXRSZWRpcmVjdHNGb3IubGVuZ3RoKSB7XG5cdFx0XHRcdFx0YWRkTmV3VGFnc1RvTUkoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5qih5p2/6YeN5a6a5ZCRJywgJ+WPluW+l+aooeadv+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHByb3A6ICdsaW5rc2hlcmUnLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiBnZXRSZWRpcmVjdHNGb3Iuam9pbignfCcpLFxuXHRcdFx0XHRcdFx0cmVkaXJlY3RzOiAxLFxuXHRcdFx0XHRcdFx0bGhuYW1lc3BhY2U6ICcxMCcsXG5cdFx0XHRcdFx0XHRsaHNob3c6ICdyZWRpcmVjdCcsXG5cdFx0XHRcdFx0XHRsaGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdCQoYXBpb2JqLnJlc3BvbnNlWE1MKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgncGFnZScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfaWR4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0JChwYWdlKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmZpbmQoJ2xoJylcblx0XHRcdFx0XHRcdFx0XHRcdC5lYWNoKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGFnID0gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpLnNsaWNlKDkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0YWdfcmUgPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGAoXFxcXHtcXFxceyR7TW9yZWJpdHMucGFnZU5hbWVSZWdleCh0YWcpfVxcXFxzKihcXFxcfFtefV0qKT9cXFxcfVxcXFx9XFxcXG4/KWBcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRhZ19yZS50ZXN0KHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhZ1RleHQgKz0gdGFnX3JlLmV4ZWMocGFnZVRleHQpWzFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZSh0YWdfcmUsICcnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgJC5lYWNoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFmb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aXoOazleWcqOmhtemdouS4iuaJvuWIsHt7JywgJ+eEoeazleWcqOmggemdouS4iuaJvuWIsHt7JykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQocGFnZSkuYXR0cigndGl0bGUnKS5zbGljZSg5KSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCd9feKApuKApui3s+i/hycsICd9feKApuKApui3s+mBjicpXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRhZGROZXdUYWdzVG9NSSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0YXBpLnBvc3QoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRhZ3MgPSBbLi4udGFncywgLi4uZ3JvdXBhYmxlVGFnc107XG5cdFx0XHRcdGFkZFVuZ3JvdXBlZFRhZ3MoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG5vdGFiaWxpdHlMaXN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KCdcXG57eycuY29uY2F0KCdzdWJzdDonLCBgRmFtZWl0ZW18dGl0bGU9JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX1gKSk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGDliqDlhaVbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5hcHBlbmQoKTtcblx0XHR9LFxuXHRcdHJlZGlyZWN0OiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCBwYWdlVGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGxldCB0YWdSZTtcblx0XHRcdGxldCB0YWdUZXh0ID0gJyc7XG5cdFx0XHRsZXQgc3VtbWFyeVRleHQgPSAn5Yqg5YWlJztcblx0XHRcdGNvbnN0IHRhZ3MgPSBbXTtcblx0XHRcdGxldCBpO1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IHBhcmFtcy50YWdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHRhZ1JlID0gbmV3IFJlZ0V4cChgKFxcXFx7XFxcXHske3BhcmFtcy50YWdzW2ldfShcXFxcfHxcXFxcfVxcXFx9KSlgLCAnaW0nKTtcblx0XHRcdFx0aWYgKHRhZ1JlLmV4ZWMocGFnZVRleHQpKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6YeN5a6a5ZCR5LiK5om+5Yiwe3snLCAn5Zyo6YeN5paw5bCO5ZCR5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy50YWdzW2ldICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCd9feKApuKApui3s+i/hycsICd9feKApuKApui3s+mBjicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YWdzLnB1c2gocGFyYW1zLnRhZ3NbaV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyB1c2VkIGluIEFycmF5I2ZvckVhY2hcblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lLCB0YWdJbmRleCkgPT4ge1xuXHRcdFx0XHR0YWdUZXh0ICs9IGBcXG57eyR7dGFnTmFtZX1gO1xuXHRcdFx0XHRpZiAodGFnTmFtZSA9PT0gJ+mdnuS4reaWh+mHjeWumuWQkScpIHtcblx0XHRcdFx0XHRpZiAocGFyYW1zLmFsdExhbmdGcm9tKSB7XG5cdFx0XHRcdFx0XHR0YWdUZXh0ICs9IGB8MT0ke3BhcmFtcy5hbHRMYW5nRnJvbX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHQodGFnTmFtZSA9PT0gJ+adoeebruivt+axgumHjeWumuWQkScgfHwgdGFnTmFtZSA9PT0gJ+aineebruiri+axgumHjeWumuWQkScpICYmXG5cdFx0XHRcdFx0cGFyYW1zLnJlcUFydGljbGVMYW5nICYmXG5cdFx0XHRcdFx0cGFyYW1zLnJlcUFydGljbGVUaXRsZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGB8MT0ke3BhcmFtcy5yZXFBcnRpY2xlTGFuZ31gO1xuXHRcdFx0XHRcdHRhZ1RleHQgKz0gYHwyPSR7cGFyYW1zLnJlcUFydGljbGVUaXRsZX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRhZ1RleHQgKz0gJ319Jztcblx0XHRcdFx0aWYgKHRhZ0luZGV4ID4gMCkge1xuXHRcdFx0XHRcdGlmICh0YWdJbmRleCA9PT0gdGFncy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn5ZKMJztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRhZ0luZGV4IDwgdGFncy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn44CBJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3VtbWFyeVRleHQgKz0gYHt7W1s6JHt0YWdOYW1lLmluY2x1ZGVzKCc6JykgPyB0YWdOYW1lIDogYFRlbXBsYXRlOiR7dGFnTmFtZX18JHt0YWdOYW1lfWB9XV19fWA7XG5cdFx0XHR9O1xuXHRcdFx0aWYgKCF0YWdzLmxlbmd0aCkge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeacieagh+etvuWPr+S+m+agh+iusCcsICfmspLmnInmqJnnsaTlj6/kvpvmqJnoqJgnKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dGFncy5zb3J0KCk7XG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG5cdFx0XHRcdGFkZFRhZyh0YWcpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGFsbCBSY2F0IHNoZWxsIHJlZGlyZWN0cyAoZnJvbSAjNDMzKVxuXHRcdFx0aWYgKHBhZ2VUZXh0Lm1hdGNoKC97eyg/OnJlZHJ8dGhpcyBpcyBhIHJlZGlyZWN0fHIoPzplZGlyZWN0KT8oPzouP2NhdC4qKT9bIF9dP3NoKS9pKSkge1xuXHRcdFx0XHQvLyBSZWdleCBpbnNwaXJlZCBieSBbW1VzZXI6S2VwaGlyL2dhZGdldHMvc2FnaXR0YXJpdXMuanNdXSAoW1tTcGVjaWFsOlBlcm1hTGluay84MzE0MDI4OTNdXSlcblx0XHRcdFx0Y29uc3Qgb2xkVGFncyA9IHBhZ2VUZXh0Lm1hdGNoKC8oXFxzKnt7W0EtWmEtelxcc10rXFx8KD86XFxzKjE9KT8pKCg/OltefHt9XXx7e1tefV0rfX0pKykofX0pXFxzKi9pKTtcblx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKG9sZFRhZ3NbMF0sIG9sZFRhZ3NbMV0gKyB0YWdUZXh0ICsgb2xkVGFnc1syXSArIG9sZFRhZ3NbM10pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gRm9sZCBhbnkgcHJlLWV4aXN0aW5nIFJjYXRzIGludG8gdGFnbGlzdCBhbmQgdW5kZXIgUmNhdHNoZWxsXG5cdFx0XHRcdGNvbnN0IHBhZ2VUYWdzID0gcGFnZVRleHQubWF0Y2goL1xccyp7ey4rP+mHjeWumuWQkS4qP319L2dpbSk7XG5cdFx0XHRcdGxldCBvbGRQYWdlVGFncyA9ICcnO1xuXHRcdFx0XHRpZiAocGFnZVRhZ3MpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBwYWdlVGFnIG9mIHBhZ2VUYWdzKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYWdlUmUgPSBuZXcgUmVnRXhwKE1vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAocGFnZVRhZyksICdpbWcnKTtcblx0XHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShwYWdlUmUsICcnKTtcblx0XHRcdFx0XHRcdHBhZ2VUYWcgPSBwYWdlVGFnLnRyaW0oKTtcblx0XHRcdFx0XHRcdG9sZFBhZ2VUYWdzICs9IGBcXG4ke3BhZ2VUYWd9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFnZVRleHQgKz0gYFxcbnt7UmVkaXJlY3QgY2F0ZWdvcnkgc2hlbGx8JHt0YWdUZXh0fSR7b2xkUGFnZVRhZ3N9XFxufX1gO1xuXHRcdFx0fVxuXHRcdFx0c3VtbWFyeVRleHQgKz1cblx0XHRcdFx0KHRhZ3MubGVuZ3RoID4gMCA/IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpIDogJ3t7UmVkaXJlY3QgY2F0ZWdvcnkgc2hlbGx9fScpICtcblx0XHRcdFx0d2luZG93LndnVUxTKCfliLDph43lrprlkJEnLCAn5Yiw6YeN5paw5bCO5ZCRJyk7XG5cdFx0XHQvLyBhdm9pZCB0cnVuY2F0ZWQgc3VtbWFyaWVzXG5cdFx0XHRpZiAoc3VtbWFyeVRleHQubGVuZ3RoID4gNDk5KSB7XG5cdFx0XHRcdHN1bW1hcnlUZXh0ID0gc3VtbWFyeVRleHQucmVwbGFjZSgvXFxbXFxbW158XStcXHwoW15cXF1dKylcXF1cXF0vZywgJyQxJyk7XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRwYWdlb2JqLnNldE1pbm9yRWRpdChUd2lua2xlLmdldFByZWYoJ21hcmtUYWdnZWRQYWdlc0FzTWlub3InKSk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGZpbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRsZXQgc3VtbWFyeSA9ICfliqDlhaUnO1xuXHRcdFx0Ly8gQWRkIG1haW50ZW5hbmNlIHRhZ3Ncblx0XHRcdGlmIChwYXJhbXMudGFncy5sZW5ndGgpIHtcblx0XHRcdFx0bGV0IHRhZ3RleHQgPSAnJztcblx0XHRcdFx0bGV0IGN1cnJlbnRUYWc7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWdzKSB7XG5cdFx0XHRcdFx0Ly8gd2hlbiBvdGhlciBjb21tb25zLXJlbGF0ZWQgdGFncyBhcmUgcGxhY2VkLCByZW1vdmUgXCJtb3ZlIHRvIFNoYXJlXCIgdGFnXG5cdFx0XHRcdFx0aWYgKFsnS2VlcCBsb2NhbCcsICdOb3cgWXNBcmNoaXZlcyBTaGFyZScsICdEbyBub3QgbW92ZSB0byBZc0FyY2hpdmVzIFNoYXJlJ10uaW5jbHVkZXModGFnKSkge1xuXHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0L3t7KG10Y3woY29weSB8bW92ZSApP3RvID9zaGFyZXxtb3ZlIHRvIHlzYXJjaGl2ZXMgc2hhcmV8Y29weSB0byB5c2FyY2hpdmVzIHNoYXJlKVtefV0qfX0vZ2ksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGFnID09PSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJykge1xuXHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0L1xce1xceygoY29udmVydCB0byB8Y29udmVydHRvfHNob3VsZCBiZSB8c2hvdWxkYmV8dG8pP3N2Z3xiYWRwbmd8dmVjdG9yaXplKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHRcdFx0XHQnJ1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y3VycmVudFRhZyA9IHRhZztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm93IENvbW1vbnMnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnID0gYHN1YnN0OiR7Y3VycmVudFRhZ31gOyAvLyBzdWJzdFxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm5vd2NvbW1vbnNOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLm5vd2NvbW1vbnNOYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdLZWVwIGxvY2FsJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5rZWVwbG9jYWxOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLmtlZXBsb2NhbE5hbWV9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmtlZXBsb2NhbFJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmtlZXBsb2NhbFJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVuYW1lIG1lZGlhJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYU5ld25hbWUgIT09ICcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMucmVuYW1lbWVkaWFOZXduYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8Mj0ke3BhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJzpcblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGNhc2UgJ09ic29sZXRlJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXNbYCR7dGFnLnJlcGxhY2UoLyAvZywgJ18nKX1GaWxlYF19YDtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdEbyBub3QgbW92ZSB0byBDb21tb25zJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHJlYXNvbj0ke3BhcmFtcy5Eb05vdE1vdmVUb0NvbW1vbnNfcmVhc29ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnQ29weSB0byBXaWtpbWVkaWEgQ29tbW9ucyc6XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxodW1hbj0ke213LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKX1gO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gZG9uJ3QgY2FyZVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGN1cnJlbnRUYWcgPSBge3ske2N1cnJlbnRUYWd9fX1cXG5gO1xuXHRcdFx0XHRcdHRhZ3RleHQgKz0gY3VycmVudFRhZztcblx0XHRcdFx0XHRzdW1tYXJ5ICs9IGB7eyR7dGFnfX1944CBYDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIXRhZ3RleHQpIHtcblx0XHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0XHQud2Fybih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nO+8jOayoeS7gOS5iOimgeWBmueahCcsICfkvb/nlKjogIXlj5bmtojmk43kvZzvvIzmspLku4DpurzopoHlgZrnmoQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRleHQgPSB0YWd0ZXh0ICsgdGV4dDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkuc2xpY2UoMCwgTWF0aC5tYXgoMCwgc3VtbWFyeS5sZW5ndGggLSAxKSkpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRwYWdlb2JqLnNldE1pbm9yRWRpdChUd2lua2xlLmdldFByZWYoJ21hcmtUYWdnZWRQYWdlc0FzTWlub3InKSk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnRhZy5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0Ly8gVmFsaWRhdGlvblxuXHRcdC8vIEdpdmVuIGFuIGFycmF5IG9mIGluY29tcGF0aWJsZSB0YWdzLCBjaGVjayBpZiB3ZSBoYXZlIHR3byBvciBtb3JlIHNlbGVjdGVkXG5cdFx0Y29uc3QgY2hlY2tJbmNvbXBhdGlibGUgPSAoY29uZmxpY3RzLCBleHRyYSkgPT4ge1xuXHRcdFx0Y29uc3QgY291bnQgPSBjb25mbGljdHMucmVkdWNlKChzdW0sIHRhZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKHN1bSArPSBwYXJhbXMudGFncy5pbmNsdWRlcyh0YWcpKTtcblx0XHRcdH0sIDApO1xuXHRcdFx0aWYgKGNvdW50ID4gMSkge1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9IGAke3dpbmRvdy53Z1VMUygn6K+35Zyo5Lul5LiL5qCH562+5Lit5oup5LiA5L2/55SoJywgJ+iri+WcqOS7peS4i+aomeexpOS4reaTh+S4gOS9v+eUqCcpfe+8mnt7JHtjb25mbGljdHMuam9pbihcblx0XHRcdFx0XHQnfX3jgIF7eydcblx0XHRcdFx0KX19feOAgmA7XG5cdFx0XHRcdG1lc3NhZ2UgKz0gZXh0cmEgfHwgJyc7XG5cdFx0XHRcdG13Lm5vdGlmeShtZXNzYWdlLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gR2l2ZW4gYSB0YWcsIGVuc3VyZSBhbiBhc3NvY2lhdGUgcGFyYW1ldGVyIGlzIHByZXNlbnRcblx0XHQvLyBNYXliZSBqdXN0IHNvY2sgdGhpcyBhd2F5IGluIGVhY2ggZnVuY3Rpb24/Pz9cblx0XHRjb25zdCBjaGVja1BhcmFtZXRlciA9ICh0YWcsIHBhcmFtZXRlciwgZGVzY3JpcHRpb24gPSAn55CG55SxJykgPT4ge1xuXHRcdFx0aWYgKHBhcmFtcy50YWdzLmluY2x1ZGVzKHRhZykgJiYgcGFyYW1zW3BhcmFtZXRlcl0udHJpbSgpID09PSAnJykge1xuXHRcdFx0XHRtdy5ub3RpZnkoYCR7d2luZG93LndnVUxTKCfmgqjlv4XpobvmjIflrponLCAn5oKo5b+F6aCI5oyH5a6aJyl9e3ske3RhZ319feeahCR7ZGVzY3JpcHRpb25944CCYCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICdmcmllbmRseXRhZycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdC8vIFdlIGNvdWxkIHRoZW9yZXRpY2FsbHkgcHV0IHRoZW0gYWxsIGNoZWNrSW5jb21wYXRpYmxlIGNhbGxzIGluIGFcblx0XHQvLyBmb3JFYWNoIGxvb3AsIGJ1dCBpdCdzIHByb2JhYmx5IGNsZWFyZXIgbm90IHRvIGhhdmUgW1thcnJheSBvbmVdLFxuXHRcdC8vIFthcnJheSB0d29dXSBkZXZvaWQgb2YgY29udGV4dC4gTGlrZXdpc2UsIGFsbCB0aGUgY2hlY2tQYXJhbWV0ZXJcblx0XHQvLyBjYWxscyBjb3VsZCBiZSBpbiBvbmUgaWYsIGJ1dCBjb3VsZCBiZSBzaW1pbGFybHkgY29uZnVzaW5nLlxuXHRcdHN3aXRjaCAoVHdpbmtsZS50YWcubW9kZUVuKSB7XG5cdFx0XHRjYXNlICdhcnRpY2xlJzpcblx0XHRcdFx0cGFyYW1zLnRhZ3NUb1JlbW92ZSA9IGZvcm0uZ2V0VW5jaGVja2VkKCdleGlzdGluZ1RhZ3MnKTsgLy8gbm90IGluIGBpbnB1dGBcblx0XHRcdFx0cGFyYW1zLnRhZ3NUb1JlbWFpbiA9IHBhcmFtcy5leGlzdGluZ1RhZ3MgfHwgW107IC8vIGNvbnRhaW5lciBub3QgY3JlYXRlZCBpZiBub25lIHByZXNlbnRcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy50YWdzLmluY2x1ZGVzKCdNZXJnZScpIHx8XG5cdFx0XHRcdFx0cGFyYW1zLnRhZ3MuaW5jbHVkZXMoJ01lcmdlIGZyb20nKSB8fFxuXHRcdFx0XHRcdHBhcmFtcy50YWdzLmluY2x1ZGVzKCdNZXJnZSB0bycpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGNoZWNrSW5jb21wYXRpYmxlKFxuXHRcdFx0XHRcdFx0XHRbJ01lcmdlJywgJ01lcmdlIGZyb20nLCAnTWVyZ2UgdG8nXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfoi6XpnIDopoHlpJrmrKHlkIjlubbvvIzor7fkvb/nlKh7e01lcmdlfX3lubbnlKjnrqHpgZPnrKbliIbpmpTmnaHnm67lkI3vvIjkvYblnKjov5nnp43mg4XlvaLkuK1Ud2lua2xl5LiN6IO96Ieq5Yqo5qCH6K6w5YW25LuW5p2h55uu77yJ44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6Iul6ZyA6KaB5aSa5qyh5ZCI5L2177yM6KuL5L2/55Soe3tNZXJnZX195Lim55So566h6YGT56ym5YiG6ZqU5qKd55uu5ZCN77yI5L2G5Zyo6YCZ56iu5oOF5b2i5LitVHdpbmtsZeS4jeiDveiHquWLleaomeiomOWFtuS7luaineebru+8ieOAgidcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIXBhcmFtcy5tZXJnZVRhcmdldCkge1xuXHRcdFx0XHRcdFx0bXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivt+aMh+WumuS9v+eUqOS6jm1lcmdl5qih5p2/5Lit55qE5Y+m5LiA5Liq6aG16Z2i5qCH6aKY44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6KuL5oyH5a6a5L2/55So5pa8bWVyZ2XmqKHmnb/kuK3nmoTlj6bkuIDlgIvpoIHpnaLmqJnpoYzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoKHBhcmFtcy5tZXJnZVRhZ090aGVyIHx8IHBhcmFtcy5tZXJnZVJlYXNvbikgJiYgcGFyYW1zLm1lcmdlVGFyZ2V0LmluY2x1ZGVzKCd8JykpIHtcblx0XHRcdFx0XHRcdG13Lm5vdGlmeShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflvZPliY3ov5jkuI3mlK/mjIHlnKjkuIDmrKHlkIjlubbkuK3moIforrDlpJrkuKrmnaHnm67vvIzkuI7lvIDlkK/lhbPkuo7lpJrkuKrmnaHnm67nmoTorqjorrrjgILor7fkuI3opoHli77pgInigJzmoIforrDlhbbku5bmnaHnm67igJ3lubbmuIXnqbrigJznkIbnlLHigJ3moYblkI7lho3mj5DkuqTjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfnm67liY3pgoTkuI3mlK/mj7TlnKjkuIDmrKHlkIjkvbXkuK3mqJnoqJjlpJrlgIvmop3nm67vvIzoiIfplovllZ/pl5zmlrzlpJrlgIvmop3nm67nmoToqI7oq5bjgILoq4vkuI3opoHli77pgbjjgIzmqJnoqJjlhbbku5bmop3nm67jgI3kuKbmuIXnqbrjgIznkIbnlLHjgI3moYblvozlho3mj5DkuqTjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y2hlY2tQYXJhbWV0ZXIoXG5cdFx0XHRcdFx0XHQnTWlzc2luZyBpbmZvcm1hdGlvbicsXG5cdFx0XHRcdFx0XHQnbWlzc2luZ0luZm9ybWF0aW9uJyxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn57y65bCR55qE5YaF5a65JywgJ+e8uuWwkeeahOWFp+WuuScpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNoZWNrUGFyYW1ldGVyKCdFeHBlcnQgbmVlZGVkJywgJ2V4cGVydCcsIHdpbmRvdy53Z1VMUygn5LiT5a626aKG5Z+fJywgJ+WwiOWutumgmOWfnycpKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2ZpbGUnOlxuXHRcdFx0XHQvLyBTaWxseSB0byBwcm92aWRlIHRoZSBzYW1lIHN0cmluZyB0byBlYWNoIG9mIHRoZXNlXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjaGVja1BhcmFtZXRlcignT2Jzb2xldGUnLCAnT2Jzb2xldGVGaWxlJywgd2luZG93LndnVUxTKCfmm7/mjaLnmoTmlofku7blkI3np7AnLCAn5pu/5o+b55qE5qqU5qGI5ZCN56ixJykpIHx8XG5cdFx0XHRcdFx0Y2hlY2tQYXJhbWV0ZXIoXG5cdFx0XHRcdFx0XHQnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJyxcblx0XHRcdFx0XHRcdCdWZWN0b3JfdmVyc2lvbl9hdmFpbGFibGVGaWxlJyxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pu/5o2i55qE5paH5Lu25ZCN56ewJywgJ+abv+aPm+eahOaqlOahiOWQjeeosScpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNoZWNrUGFyYW1ldGVyKCdEbyBub3QgbW92ZSB0byBDb21tb25zJywgJ0RvTm90TW92ZVRvQ29tbW9uc19yZWFzb24nKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlZGlyZWN0Jzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRtdy5ub3RpZnkoYFR3aW5rbGUudGFn77ya5pyq55+l5qih5byPICR7VHdpbmtsZS50YWcubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBGaWxlL3JlZGlyZWN0OiByZXR1cm4gaWYgbm8gdGFncyBzZWxlY3RlZFxuXHRcdC8vIEFydGljbGU6IHJldHVybiBpZiBubyB0YWcgaXMgc2VsZWN0ZWQgYW5kIG5vIGFscmVhZHkgcHJlc2VudCB0YWcgaXMgZGVzZWxlY3RlZFxuXHRcdGlmIChwYXJhbXMudGFncy5sZW5ndGggPT09IDAgJiYgKFR3aW5rbGUudGFnLm1vZGVFbiAhPT0gJ2FydGljbGUnIHx8IHBhcmFtcy50YWdzVG9SZW1vdmUubGVuZ3RoID09PSAwKSkge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5b+F6aG76YCJ5oup6Iez5bCR5LiA5Liq5qCH6K6w77yBJywgJ+W/hemgiOmBuOaTh+iHs+WwkeS4gOWAi+aomeiomO+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBNb3JlYml0cy5wYWdlTmFtZU5vcm07XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ3JlZGlyZWN0Jykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSxcblx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5qCH6K6wJywgJ+ato+WcqOaomeiomCcpICsgVHdpbmtsZS50YWcubW9kZVxuXHRcdCk7XG5cdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUudGFnLmNhbGxiYWNrc1tUd2lua2xlLnRhZy5tb2RlRW5dKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS50YWcsICd0YWcnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHtnZW5lcmF0ZUFycmF5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVzdHViLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZXN0dWIoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZXN0dWIuanM6IFRhZyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiU3R1YlwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nIGFydGljbGVzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKiBOb3RlOiBjdXN0b21pc2VkIGZyaWVuZGx5dGFnIG1vZHVsZVxuXHQgKi9cblx0VHdpbmtsZS5zdHViID0gKCkgPT4ge1xuXHRcdGlmIChNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSB7XG5cdFx0XHQvLyBTa2lwXG5cdFx0XHQvLyBhcnRpY2xlL2RyYWZ0IGFydGljbGUgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQoWzAsIDMwMl0uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSkgJiYgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSAn5p2h55uuJztcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoVHdpbmtsZS5zdHViLmNhbGxiYWNrLCAn5bCP5L2c5ZOBJywgJ2ZyaWVuZGx5LXRhZycsICfmoIforrDlsI/kvZzlk4EnKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0Ly8gU2tpcFxuXHRcdFx0Ly8gYXJ0aWNsZS9kcmFmdCBhcnRpY2xlIHRhZ2dpbmdcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0KChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDMwMikgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayxcblx0XHRcdFx0J+Wwj+S9nOWTgScsXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOWwj+S9nOWTgScsICfmqJnoqJjlsI/kvZzlk4EnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYzMCwgVHdpbmtsZS5zdHViLm1vZGUgPT09ICdhcnRpY2xlJyA/IDQ1MCA6IDQwMCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+Wwj+S9nOWTgeiqquaYjicsICflsI/kvZzlk4Hor7TmmI4nKSwgJ1FXOuWwj+S9nOWTgScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCP5L2c5ZOB6K6+572uJywgJ+Wwj+S9nOWTgeioreWumicpLCAnSDpUVy9QUkVGI3N0dWInKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjc3R1YicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYXRyb2xsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDpobXpnaLkuLrlt7Llt6Hmn6UnLCAn5qiZ6KiY6aCB6Z2i54K65bey5beh5p+lJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHN3aXRjaCAoVHdpbmtsZS5zdHViLm1vZGUpIHtcblx0XHRcdGNhc2UgJ+aineebric6XG5cdFx0XHRjYXNlICfmnaHnm64nOlxuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmnaHnm67lsI/kvZzlk4HmoIforrAnLCAn5qKd55uu5bCP5L2c5ZOB5qiZ6KiYJykpO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvcnRvcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p+l55yL5YiX6KGo77yaJywgJ+aqouimluWIl+ihqO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5Y+C5pWw6K6+572u77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5YGP5aW96Kit5a6a77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjYXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjInnsbvlnosnLCAn5oyJ6aGe5YilJyksXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdjYXQnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnYWxwaGEnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+aMieWtl+avjScsXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdhbHBoYScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdXb3JrQXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnN0dWLvvJrmnKrnn6XmqKHlvI8gJHtUd2lua2xlLnN0dWIubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRpZiAoWyfmnaHnm64nLCAn5qKd55uuJ10uaW5jbHVkZXMoVHdpbmtsZS5zdHViLm1vZGUpKSB7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzID0gW107XG5cdFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUuc3R1Yi5jaGVja2VkVGFncyA9IGUudGFyZ2V0LmZvcm0uZ2V0Q2hlY2tlZCgnYXJ0aWNsZVRhZ3MnKTtcblx0XHRUd2lua2xlLnN0dWIuY2hlY2tlZFRhZ3MgPz89IFtdO1xuXHRcdGNvbnN0IGNvbnRhaW5lciA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZnJhZ21lbnQnLFxuXHRcdH0pO1xuXHRcdC8vIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgY2hlY2tib3gsIHdpdGggYXBwcm9wcmlhdGUgc3ViZ3JvdXAgaWYgbmVlZGVkXG5cdFx0Y29uc3QgbWFrZUNoZWNrYm94ID0gKHRhZywgZGVzY3JpcHRpb24pID0+IHtcblx0XHRcdGNvbnN0IGNoZWNrYm94ID0ge1xuXHRcdFx0XHR2YWx1ZTogdGFnLFxuXHRcdFx0XHRsYWJlbDogYHt7JHt0YWd9fX06ICR7ZGVzY3JpcHRpb259YCxcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzLmluY2x1ZGVzKHRhZykpIHtcblx0XHRcdFx0Y2hlY2tib3guY2hlY2tlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY2hlY2tib3g7XG5cdFx0fTtcblx0XHQvLyBhcHBlbmQgYW55IGN1c3RvbSB0YWdzXG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tU3R1Ykxpc3QnKS5sZW5ndGgpIHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBjdXN0b21jaGVja2JveGVzID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21TdHViTGlzdCcpKSB7XG5cdFx0XHRcdGN1c3RvbWNoZWNrYm94ZXNbY3VzdG9tY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KGl0ZW0udmFsdWUsIGl0ZW0ubGFiZWwpO1xuXHRcdFx0fVxuXHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdhcnRpY2xlVGFncycsXG5cdFx0XHRcdGxpc3Q6IGN1c3RvbWNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gY2F0ZWdvcmljYWwgc29ydCBvcmRlclxuXHRcdGlmIChzb3J0b3JkZXIgPT09ICdjYXQnKSB7XG5cdFx0XHQvLyBmdW5jdGlvbiB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHRhZ3MgYW5kIGNyZWF0ZSBhIGNoZWNrYm94IGZvciBlYWNoIG9uZVxuXHRcdFx0Y29uc3QgZG9DYXRlZ29yeUNoZWNrYm94ZXMgPSAoc3ViZGl2LCBhcnJheSkgPT4ge1xuXHRcdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGFycmF5KSB7XG5cdFx0XHRcdFx0Y29uc3QgZGVzY3JpcHRpb24gPSBUd2lua2xlLnN0dWIuYXJ0aWNsZS50YWdzW3RhZ107XG5cdFx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ0aWNsZVRhZ3MnLFxuXHRcdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHRcdGxldCBpID0gMDtcblx0XHRcdC8vIGdvIHRocm91Z2ggZWFjaCBjYXRlZ29yeSBhbmQgc3ViLWNhdGVnb3J5IGFuZCBhcHBlbmQgbGlzdHMgb2YgY2hlY2tib3hlc1xuXHRcdFx0Zm9yIChjb25zdCBbdGl0bGUsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMpKSB7XG5cdFx0XHRcdGNvbnN0IHRpdGxlTmFtZSA9IFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXJbdGl0bGVdO1xuXHRcdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRpZDogYHRhZ0hlYWRlciR7aX1gLFxuXHRcdFx0XHRcdGxhYmVsOiB0aXRsZU5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBzdWJkaXYgPSBjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogYHRhZ1N1YmRpdiR7aSsrfWAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShjb250ZW50KSkge1xuXHRcdFx0XHRcdGRvQ2F0ZWdvcnlDaGVja2JveGVzKHN1YmRpdiwgY29udGVudCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbc3VidGl0bGUsIHN1YmNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRlbnQpKSB7XG5cdFx0XHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBbTW9yZWJpdHMuaHRtbE5vZGUoJ2InLCBzdWJ0aXRsZSldLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIHN1YmNvbnRlbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gYWxwaGFiZXRpY2FsIHNvcnQgb3JkZXJcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgY2hlY2tib3hlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBbdGFnLCBkZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS5zdHViLmFydGljbGUudGFncykpIHtcblx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHR9XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2FydGljbGVUYWdzJyxcblx0XHRcdFx0bGlzdDogY2hlY2tib3hlcyxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCAkd29ya2FyZWEgPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2RpdiN0YWdXb3JrQXJlYScpO1xuXHRcdGNvbnN0IHJlbmRlcmVkID0gY29udGFpbmVyLnJlbmRlcigpO1xuXHRcdCR3b3JrYXJlYS5lbXB0eSgpLmFwcGVuZChyZW5kZXJlZCk7XG5cdFx0Ly8gc3R5bGUgYWRqdXN0bWVudHNcblx0XHQkd29ya2FyZWEuZmluZCgnaDUnKS5jc3Moe1xuXHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMTAlJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnaDU6bm90KDpmaXJzdC1jaGlsZCknKS5jc3Moe1xuXHRcdFx0J21hcmdpbi10b3AnOiAnMWVtJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnZGl2JykuZmlsdGVyKCc6aGFzKHNwYW4ucXVpY2tmb3JtRGVzY3JpcHRpb24pJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzAuNGVtJyxcblx0XHR9KTtcblx0XHQvLyBhZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ2FydGljbGVUYWdzJykpIHtcblx0XHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgJz4nKTtcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdjbGFzcycsICd0YWctdGVtcGxhdGUtbGluaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdCdocmVmJyxcblx0XHRcdFx0bXcudXRpbC5nZXRVcmwoYFRlbXBsYXRlOiR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGNoZWNrYm94LnZhbHVlcyl9YClcblx0XHRcdCk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0XHQkY2hlY2tib3gucGFyZW50KCkuYXBwZW5kKFsnXFx1MDBBMCcsIGxpbmtdKTtcblx0XHR9XG5cdH07XG5cdC8vIFRhZ3MgZm9yIEFSVElDTEVTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmFydGljbGUgPSB7fTtcblx0Ly8gQSBsaXN0IG9mIGFsbCBhcnRpY2xlIHRhZ3MsIGluIGFscGhhYmV0aWNhbCBvcmRlclxuXHQvLyBUbyBlbnN1cmUgdGFncyBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgXCJjYXRlZ29yaXplZFwiIHZpZXcsIGFkZCB0aGVtIHRvIHRoZSB0YWdDYXRlZ29yaWVzIGhhc2ggYmVsb3cuXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ3MgPSB7XG5cdFx0J2FjdG9yLXN0dWInOiAn5ryU5ZGYJyxcblx0XHQnYXNpYS1zdHViJzogJ+S6mua0sicsXG5cdFx0J2Jpby1zdHViJzogJ+S6uueJqScsXG5cdFx0J2Jpb2xvZ3ktc3R1Yic6ICfnlJ/nianlraYnLFxuXHRcdCdjaGVtLXN0dWInOiAn5YyW5a2mJyxcblx0XHQnZXVyb3BlLXN0dWInOiAn5qyn5rSyJyxcblx0XHQnZXhwYW5kIGxpc3QnOiAn5pyq5a6M5oiQ5YiX6KGoJyxcblx0XHQnZm9vZC1zdHViJzogJ+mjn+eJqScsXG5cdFx0J2ZyYW5jZS1nZW8tc3R1Yic6ICfms5Xlm73lnLDnkIYnLFxuXHRcdCdnZW8tc3R1Yic6ICflnLDnkIbkvY3nva4nLFxuXHRcdCdoaXN0LXN0dWInOiAn5Y6G5Y+y5oiW5Y6G5Y+y5a2mJyxcblx0XHQnSlAtc3R1Yic6ICfml6XmnKwnLFxuXHRcdCdsaXQtc3R1Yic6ICfmloflraYnLFxuXHRcdCdtYXRoLXN0dWInOiAn5pWw5a2mJyxcblx0XHQnbWVkLXN0dWInOiAn5Yy75a2mJyxcblx0XHQnbWlsLXN0dWInOiAn5Yab5LqLJyxcblx0XHQnbW92aWUtc3R1Yic6ICfnlLXlvbEnLFxuXHRcdCdtdXNpYy1zdHViJzogJ+mfs+S5kCcsXG5cdFx0J3BoeXNpY3Mtc3R1Yic6ICfniannkIblraYnLFxuXHRcdCdwb2xpdGljLXN0dWInOiAn5pS/5rK7Jyxcblx0XHQncmVsaWdpb24tc3R1Yic6ICflrpfmlZknLFxuXHRcdCdzY2llbmNlLXN0dWInOiAn56eR5a2mJyxcblx0XHQnc3BvcnQtc3R1Yic6ICfkvZPogrInLFxuXHRcdHN0dWI6ICfpgJrnlKjlsI/kvZzlk4EnLFxuXHRcdCdzd2l0emVybGFuZC1zdHViJzogJ+eRnuWjqycsXG5cdFx0J3RlY2gtc3R1Yic6ICfnp5HmioAnLFxuXHRcdCd0cmFuc3Atc3R1Yic6ICfkuqTpgJonLFxuXHRcdCdUVi1zdHViJzogJ+eUteinhicsXG5cdFx0J1VLLXN0dWInOiAn6Iux5Zu9Jyxcblx0XHQnVVMtYmlvLXN0dWInOiAn576O5Zu95Lq654mpJyxcblx0XHQnVVMtZ2VvLXN0dWInOiAn576O5Zu95Zyw55CGJyxcblx0XHQnVVMtc3R1Yic6ICfnvo7lm70nLFxuXHRcdCd3ZWF0aGVyLXN0dWInOiAn5aSp5rCU5ZKM54m55Yir55qE5aSp5rCU5LqL5Lu2Jyxcblx0fTtcblx0Ly8gQSBsaXN0IG9mIHRhZ3MgaW4gb3JkZXIgb2YgY2F0ZWdvcnlcblx0Ly8gVGFncyBzaG91bGQgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHdpdGhpbiB0aGUgY2F0ZWdvcmllc1xuXHQvLyBBZGQgbmV3IGNhdGVnb3JpZXMgd2l0aCBkaXNjcmV0aW9uIC0gdGhlIGxpc3QgaXMgbG9uZyBlbm91Z2ggYXMgaXMhXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXIgPSB7XG5cdFx0Z2VuZXJhbDogJ+mAmueUqOaooeadvycsXG5cdFx0Z2VvOiAn5Zu95a625ZKM5Zyw55CGJyxcblx0XHRvdGhlcnM6ICfmnYLpobknLFxuXHRcdGJpbzogJ+S6uueJqScsXG5cdFx0c2NpZW5jZTogJ+enkeWtpicsXG5cdFx0c3BvcnQ6ICfkvZPogrInLFxuXHRcdHRlY2g6ICfmioDmnK8nLFxuXHRcdGFydDogJ+iJuuacrycsXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMgPSB7XG5cdFx0Z2VuZXJhbDogWydzdHViJywgJ2V4cGFuZCBsaXN0J10sXG5cdFx0Z2VvOiBbXG5cdFx0XHQnYXNpYS1zdHViJyxcblx0XHRcdCdldXJvcGUtc3R1YicsXG5cdFx0XHQnZnJhbmNlLWdlby1zdHViJyxcblx0XHRcdCdnZW8tc3R1YicsXG5cdFx0XHQnSlAtc3R1YicsXG5cdFx0XHQnc3dpdHplcmxhbmQtc3R1YicsXG5cdFx0XHQnVUstc3R1YicsXG5cdFx0XHQnVVMtYmlvLXN0dWInLFxuXHRcdFx0J1VTLWdlby1zdHViJyxcblx0XHRcdCdVUy1zdHViJyxcblx0XHRdLFxuXHRcdG90aGVyczogWydmb29kLXN0dWInLCAnaGlzdC1zdHViJywgJ21pbC1zdHViJywgJ3BvbGl0aWMtc3R1YicsICdyZWxpZ2lvbi1zdHViJywgJ3RyYW5zcC1zdHViJ10sXG5cdFx0YmlvOiBbJ2FjdG9yLXN0dWInLCAnYmlvLXN0dWInLCAnVVMtYmlvLXN0dWInXSxcblx0XHRzY2llbmNlOiBbJ2Jpb2xvZ3ktc3R1YicsICdjaGVtLXN0dWInLCAnbWF0aC1zdHViJywgJ21lZC1zdHViJywgJ3BoeXNpY3Mtc3R1YicsICdzY2llbmNlLXN0dWInLCAnd2VhdGhlci1zdHViJ10sXG5cdFx0c3BvcnQ6IFsnc3BvcnQtc3R1YiddLFxuXHRcdHRlY2g6IFsndGVjaC1zdHViJ10sXG5cdFx0YXJ0OiBbJ2FjdG9yLXN0dWInLCAnbGl0LXN0dWInLCAnbW92aWUtc3R1YicsICdtdXNpYy1zdHViJywgJ1RWLXN0dWInXSxcblx0fTtcblx0Ly8gVGFncyBmb3IgUkVESVJFQ1RTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmNhbGxiYWNrcyA9IHtcblx0XHRtYWluOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0YWdSZTtcblx0XHRcdGxldCBzdW1tYXJ5VGV4dCA9ICfliqDlhaUnO1xuXHRcdFx0bGV0IHRhZ3MgPSBbXTtcblx0XHRcdGNvbnN0IGdyb3VwYWJsZVRhZ3MgPSBbXTtcblx0XHRcdGxldCBpO1xuXHRcdFx0Ly8gUmVtb3ZlIHRhZ3MgdGhhdCBiZWNvbWUgc3VwZXJmbHVvdXMgd2l0aCB0aGlzIGFjdGlvblxuXHRcdFx0bGV0IHBhZ2VUZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gQ2hlY2sgZm9yIHByZWV4aXN0aW5nIHRhZ3MgYW5kIHNlcGFyYXRlIHRhZ3MgaW50byBncm91cGFibGUgYW5kIG5vbi1ncm91cGFibGUgYXJyYXlzXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgcGFyYW1zLnRhZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dGFnUmUgPSBuZXcgUmVnRXhwKGAoXFxcXHtcXFxceyR7cGFyYW1zLnRhZ3NbaV19KFxcXFx8fFxcXFx9XFxcXH0pKWAsICdpbScpO1xuXHRcdFx0XHRpZiAodGFnUmUuZXhlYyhwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRg5Zyo6aG16Z2i5LiK5om+5Yiwe3ske3BhcmFtcy50YWdzW2ldfX194oCm4oCm6Lez6L+HYCxcblx0XHRcdFx0XHRcdFx0YOWcqOmggemdouS4iuaJvuWIsHt7JHtwYXJhbXMudGFnc1tpXX19feKApuKApui3s+mBjmBcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRhZ3MgPSBbLi4udGFncywgLi4uZ2VuZXJhdGVBcnJheShwYXJhbXMudGFnc1tpXSldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0YWdzID0gWy4uLnRhZ3MsIC4uLmdyb3VwYWJsZVRhZ3NdO1xuXHRcdFx0dGFncy5zb3J0KCk7XG5cdFx0XHRjb25zdCB0b3RhbFRhZ3MgPSB0YWdzLmxlbmd0aDtcblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lLCB0YWdJbmRleCkgPT4ge1xuXHRcdFx0XHRwYWdlVGV4dCArPSBgXFxue3ske3RhZ05hbWV9fX1gO1xuXHRcdFx0XHRpZiAodGFnSW5kZXggPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHRhZ0luZGV4ID09PSB0b3RhbFRhZ3MgLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn5ZKMJztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRhZ0luZGV4IDwgdG90YWxUYWdzIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+OAgSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9ICd7e1tbJztcblx0XHRcdFx0c3VtbWFyeVRleHQgKz0gdGFnTmFtZS5pbmNsdWRlcygnOicpID8gdGFnTmFtZSA6IGBUZW1wbGF0ZToke3RhZ05hbWV9fCR7dGFnTmFtZX1gO1xuXHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAnXV19fSc7XG5cdFx0XHR9O1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdH1cblx0XHRcdHN1bW1hcnlUZXh0ICs9IHdpbmRvdy53Z1VMUygn5qCH6K6w5YiwJywgJ+aomeiomOWIsCcpICsgVHdpbmtsZS5zdHViLm1vZGU7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3R1YmJlZFBhZ2VzJykpO1xuXHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vcicpKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRpZiAocGFyYW1zLnBhdHJvbCkge1xuXHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IHt9O1xuXHRcdGlmIChmb3JtLnBhdHJvbFBhZ2UpIHtcblx0XHRcdHBhcmFtcy5wYXRyb2wgPSBmb3JtLnBhdHJvbFBhZ2UuY2hlY2tlZDtcblx0XHR9XG5cdFx0c3dpdGNoIChUd2lua2xlLnN0dWIubW9kZSkge1xuXHRcdFx0Y2FzZSAn5qKd55uuJzpcblx0XHRcdGNhc2UgJ+adoeebric6XG5cdFx0XHRcdHBhcmFtcy50YWdzID0gZm9ybS5nZXRDaGVja2VkKCdhcnRpY2xlVGFncycpO1xuXHRcdFx0XHRwYXJhbXMuZ3JvdXAgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShgVHdpbmtsZS5zdHVi77ya5pyq55+l5qih5byPICR7VHdpbmtsZS5zdHViLm1vZGV9YCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3R1YicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKCFwYXJhbXMudGFncy5sZW5ndGgpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KCflv4XpobvpgInmi6noh7PlsJHkuIDkuKrmoIforrDvvIEnLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXN0dWInLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUuc3R1Yi5tb2RlID09PSAn6YeN5a6a5ZCRJykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5qCH6K6wJywgJ+ato+WcqOaomeiomCcpICsgVHdpbmtsZS5zdHViLm1vZGVcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRzd2l0Y2ggKFR3aW5rbGUuc3R1Yi5tb2RlKSB7XG5cdFx0XHRjYXNlICfmop3nm64nOlxuXHRcdFx0Y2FzZSAn5p2h55uuJzpcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ+mHjeWumuWQkSc6XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuc3R1Yi5jYWxsYmFja3MubWFpbik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGNhc2UgJ+aWh+S7tic6XG5cdFx0XHRjYXNlICfmqpTmoYgnOlxuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLnN0dWIuY2FsbGJhY2tzLmZpbGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnN0dWLvvJrmnKrnn6XmqKHlvI8gJHtUd2lua2xlLnN0dWIubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5zdHViLCAnc3R1YicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVkaWZmLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWRpZmYoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZWRpZmYuanM6IERpZmYgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIG9uIG5vbi1kaWZmIHBhZ2VzIChcIkxhc3RcIik7XG5cdCAqIHRhYnMgb24gZGlmZiBwYWdlcyAoXCJTaW5jZVwiLCBcIlNpbmNlIG1pbmVcIiwgXCJDdXJyZW50XCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3Rpbmcgbm9uLXNwZWNpYWwgcGFnZXNcblx0ICovXG5cdFR3aW5rbGUuZGlmZiA9ICgpID0+IHtcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdG13LnV0aWwuZ2V0VXJsKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwge1xuXHRcdFx0XHRkaWZmOiAnY3VyJyxcblx0XHRcdFx0b2xkaWQ6ICdwcmV2Jyxcblx0XHRcdH0pLFxuXHRcdFx0d2luZG93LndnVUxTKCfmnIDlkI4nLCAn5pyA5b6MJyksXG5cdFx0XHQndHctbGFzdGRpZmYnLFxuXHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrmnIDlkI7kv67mlLknLCAn6aGv56S65pyA5b6M5L+u5pS5Jylcblx0XHQpO1xuXHRcdC8vIFNob3cgYWRkaXRpb25hbCB0YWJzIG9ubHkgb24gZGlmZiBwYWdlc1xuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpKSB7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5kaWZmLmV2YWx1YXRlKGZhbHNlKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0J+iHquS4iicsXG5cdFx0XHRcdCd0dy1zaW5jZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65LiO5LiK5LiA5L+u6K6i54mI5pys6Ze055qE5beu5byCJywgJ+mhr+ekuuiIh+S4iuS4gOS/ruiogueJiOacrOmWk+eahOW3rueVsCcpXG5cdFx0XHQpO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUuZGlmZi5ldmFsdWF0ZSh0cnVlKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0J+iHquaIkScsXG5cdFx0XHRcdCd0dy1zaW5jZW1pbmUnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aYvuekuuS4juaIkeWBmuWHuueahOS/ruiuoueJiOacrOeahOW3ruW8gicsICfpoa/npLroiIfmiJHlgZrlh7rnmoTkv67oqILniYjmnKznmoTlt67nlbAnKVxuXHRcdFx0KTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdG13LnV0aWwuZ2V0VXJsKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwge1xuXHRcdFx0XHRcdGRpZmY6ICdjdXInLFxuXHRcdFx0XHRcdG9sZGlkOiBtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpLFxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflvZPliY0nLCAn55uu5YmNJyksXG5cdFx0XHRcdCd0dy1jdXJkaWZmJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrkuI7lvZPliY3niYjmnKzpl7TnmoTlt67lvIInLCAn6aGv56S66IiH55uu5YmN54mI5pys6ZaT55qE5beu55WwJylcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmRpZmYuZXZhbHVhdGUgPSAobWUpID0+IHtcblx0XHRsZXQgdXNlcjtcblx0XHRpZiAobWUpIHtcblx0XHRcdHVzZXIgPSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1udGl0bGUyJyk7XG5cdFx0XHRpZiAoIW5vZGUpIHtcblx0XHRcdFx0Ly8gbm90aGluZyB0byBkbz9cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dXNlciA9ICQobm9kZSkuZmluZCgnYScpLmZpcnN0KCkudGV4dCgpO1xuXHRcdH1cblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0dGl0bGVzOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRydmxpbWl0OiAxLFxuXHRcdFx0cnZwcm9wOiBbJ2lkcycsICd1c2VyJ10sXG5cdFx0XHRydnN0YXJ0aWQ6IG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpIC0gMSxcblx0XHRcdHJ2dXNlcjogdXNlcixcblx0XHR9O1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1jb250ZW50LXRleHQnKSk7XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPluacgOWInei0oeeMruiAheS/oeaBrycsICfmipPlj5bmnIDliJ3osqLnjbvogIXos4foqIonKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0VHdpbmtsZS5kaWZmLmNhbGxiYWNrcy5tYWluXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHR1c2VyLFxuXHRcdH07XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmRpZmYuY2FsbGJhY2tzID0ge1xuXHRcdG1haW46IChzZWxmKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxEb2MgPSBzZWxmLnJlc3BvbnNlWE1MO1xuXHRcdFx0Y29uc3QgcmV2aWQgPSAkKHhtbERvYykuZmluZCgncmV2JykuYXR0cigncmV2aWQnKTtcblx0XHRcdGlmICghcmV2aWQpIHtcblx0XHRcdFx0c2VsZi5zdGF0ZWxlbS5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acquaJvuWIsOWQiOmAgueahOaXqeacn+eJiOacrO+8jOaIliAnLCAn5pyq5om+5Yiw5ZCI6YGp55qE5pep5pyf54mI5pys77yM5oiWICcpICtcblx0XHRcdFx0XHRcdHNlbGYucGFyYW1zLnVzZXIgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5piv5ZSv5LiA6LSh54yu6ICF44CC5Y+W5raI44CCJywgJyDmmK/llK/kuIDosqLnjbvogIXjgILlj5bmtojjgIInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsb2NhdGlvbiA9IG13LnV0aWwuZ2V0VXJsKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSwge1xuXHRcdFx0XHRkaWZmOiBtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSxcblx0XHRcdFx0b2xkaWQ6IHJldmlkLFxuXHRcdFx0fSk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5kaWZmLCAnZGlmZicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGV1bmxpbmsuanMgKi9cbihmdW5jdGlvbiB0d2lua2xldW5saW5rKCQpIHtcblx0LyoqXG5cdCAqIHR3aW5rbGV1bmxpbmsuanM6IFVubGluayBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiVW5saW5rXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwgcGFnZXMsIGV4Y2VwdCBMSUI65rKZ55uSXG5cdCAqL1xuXHRUd2lua2xlLnVubGluayA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpID09PSBUd2lua2xlLmdldFByZWYoJ3NhbmRib3hQYWdlJykgfHxcblx0XHRcdCFNb3JlYml0cy51c2VySXNTeXNvcFxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+a2iOmTvicsICfmtojpgKMnKSxcblx0XHRcdCd0dy11bmxpbmsnLFxuXHRcdFx0d2luZG93LndnVUxTKCflj5bmtojliLDmnKzpobXnmoTpk77mjqUnLCAn5Y+W5raI5Yiw5pys6aCB55qE6YCj57WQJylcblx0XHQpO1xuXHR9O1xuXHQvLyB0aGUgcGFyYW1ldGVyIGlzIHVzZWQgd2hlbiBpbnZva2luZyB1bmxpbmsgZnJvbSBhZG1pbiBzcGVlZHlcblx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2sgPSAocHJlc2V0UmVhc29uKSA9PiB7XG5cdFx0Y29uc3QgZmlsZVNwYWNlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gNjtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDQwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOmTvuWFpScsICflj5bmtojpgKPlhaUnKSArXG5cdFx0XHRcdChmaWxlU3BhY2UgPyB3aW5kb3cud2dVTFMoJ+WSjOaooeadv+OAgeaWh+S7tuS9v+eUqCcsICflkozmqKHmnb/jgIHmqpTmoYjkvb/nlKgnKSA6ICcnKVxuXHRcdCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+mTvuWFpeiuvue9ricsICfpgKPlhaXoqK3lrponKSwgJ0g6VFcvUFJFRiN1bmxpbmsnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjdW5saW5rJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS51bmxpbmsuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdC8vIHByZXBlbmQgc29tZSBkb2N1bWVudGF0aW9uOiBmaWxlcyBhcmUgY29tbWVudGVkIG91dCwgd2hpbGUgYW55XG5cdFx0Ly8gZGlzcGxheSB0ZXh0IGlzIHByZXNlcnZlZCBmb3IgbGlua3MgKG90aGVyd2lzZSB0aGUgbGluayBpdHNlbGYgaXMgdXNlZClcblx0XHRjb25zdCBsaW5rVGV4dEJlZm9yZSA9IE1vcmViaXRzLmh0bWxOb2RlKFxuXHRcdFx0J2NvZGUnLFxuXHRcdFx0YFtbJHtmaWxlU3BhY2UgPyAnOicgOiAnJ30ke01vcmViaXRzLnBhZ2VOYW1lTm9ybX0ke3dpbmRvdy53Z1VMUygnfOmTvuaOpeaWh+Wtl11dJywgJ3zpgKPntZDmloflrZddXScpfWBcblx0XHQpO1xuXHRcdGNvbnN0IGxpbmtUZXh0QWZ0ZXIgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIHdpbmRvdy53Z1VMUygn6ZO+5o6l5paH5a2XJywgJ+mAo+e1kOaWh+WtlycpKTtcblx0XHRjb25zdCBsaW5rUGxhaW5CZWZvcmUgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIGBbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYCk7XG5cdFx0Y29uc3QgbGlua1RlbXBsYXRlQmVmb3JlID0gTW9yZWJpdHMuaHRtbE5vZGUoJ2NvZGUnLCBge3ske213LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKX19fWApO1xuXHRcdGxldCBsaW5rUGxhaW5BZnRlcjtcblx0XHRpZiAoZmlsZVNwYWNlKSB7XG5cdFx0XHRsaW5rUGxhaW5BZnRlciA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgYDwhLS0gW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXSAtLT5gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGlua1BsYWluQWZ0ZXIgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIE1vcmViaXRzLnBhZ2VOYW1lTm9ybSk7XG5cdFx0fVxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBbbGlua1RleHRCZWZvcmUsIGxpbmtUZXh0QWZ0ZXIsIGxpbmtQbGFpbkJlZm9yZSwgbGlua1BsYWluQWZ0ZXIsIGxpbmtUZW1wbGF0ZUJlZm9yZV0pIHtcblx0XHRcdG5vZGUuc3R5bGUuZm9udEZhbWlseSA9ICdtb25vc3BhY2UnO1xuXHRcdFx0bm9kZS5zdHlsZS5mb250U3R5bGUgPSAnbm9ybWFsJztcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRzdHlsZTogJ21hcmdpbi1ib3R0b206IDAuNWVtOyBmb250LXN0eWxlOiBub3JtYWwnLFxuXHRcdFx0bGFiZWw6IFtcblx0XHRcdFx0YCR7XG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+i/meS4quW3peWFt+WPr+S7peWPlua2iOaJgOacieaMh+WQkeivpemhteeahOmTvuaOpe+8iOKAnOmTvuWFpeKAne+8iScsXG5cdFx0XHRcdFx0XHQn6YCZ5YCL5bel5YW35Y+v5Lul5Y+W5raI5omA5pyJ5oyH5ZCR6Kmy6aCB55qE6YCj57WQ77yI44CM6YCj5YWl44CN77yJJ1xuXHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdChmaWxlU3BhY2Vcblx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfvvIzmiJbpgJrov4fliqDlhaU8IS0tIC0tPuazqOmHiuagh+iusOmakOiXj+aJgOacieWvueatpOaWh+S7tueahOS9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J++8jOaIlumAj+mBjuWKoOWFpTwhLS0gLS0+5rOo6YeL5qiZ6KiY6Zqx6JeP5omA5pyJ5bCN5q2k5qqU5qGI55qE5L2/55SoJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQ6ICcnKVxuXHRcdFx0XHR944CC5L6L5aaC77yaYCxcblx0XHRcdFx0bGlua1RleHRCZWZvcmUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Lya5Y+Y5oiQJywgJ+Wwh+acg+iuiuaIkCcpLFxuXHRcdFx0XHRsaW5rVGV4dEFmdGVyLFxuXHRcdFx0XHQn77yMJyxcblx0XHRcdFx0bGlua1BsYWluQmVmb3JlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhuS8muWPmOaIkCcsICflsIfmnIPorormiJAnKSxcblx0XHRcdFx0bGlua1BsYWluQWZ0ZXIsXG5cdFx0XHRcdCfvvIwnLFxuXHRcdFx0XHRsaW5rVGVtcGxhdGVCZWZvcmUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Lya6KKr56e76ZmkJywgJ+Wwh+acg+iiq+enu+mZpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+OAguivt+Wwj+W/g+S9v+eUqOOAgicsICfjgILoq4vlsI/lv4Pkvb/nlKjjgIInKSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0dmFsdWU6IHByZXNldFJlYXNvbiB8fCAnJyxcblx0XHRcdHNpemU6IDYwLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0bGlzdDogJ2JhY2tsaW5rcycsXG5cdFx0XHRibHRpdGxlOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRibGxpbWl0OiAnbWF4Jyxcblx0XHRcdC8vIDUwMCBpcyBtYXggZm9yIG5vcm1hbCB1c2VycywgNTAwMCBmb3IgYm90cyBhbmQgc3lzb3BzXG5cdFx0XHRibG5hbWVzcGFjZTogVHdpbmtsZS5nZXRQcmVmKCd1bmxpbmtOYW1lc3BhY2VzJyksXG5cdFx0XHRyYXdjb250aW51ZTogdHJ1ZSxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH07XG5cdFx0aWYgKGZpbGVTcGFjZSkge1xuXHRcdFx0cXVlcnkubGlzdCArPSAnfGltYWdldXNhZ2UnO1xuXHRcdFx0cXVlcnkuaXV0aXRsZSA9IHF1ZXJ5LmJsdGl0bGU7XG5cdFx0XHRxdWVyeS5pdWxpbWl0ID0gcXVlcnkuYmxsaW1pdDtcblx0XHRcdHF1ZXJ5Lml1bmFtZXNwYWNlID0gcXVlcnkuYmxuYW1lc3BhY2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHF1ZXJ5LmJsZmlsdGVycmVkaXIgPSAnbm9ucmVkaXJlY3RzJztcblx0XHR9XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPlumTvuWFpScsICfmipPlj5bpgKPlhaUnKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2tzLmRpc3BsYXkuYmFja2xpbmtzXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdFx0aW1hZ2U6IGZpbGVTcGFjZSxcblx0XHR9O1xuXHRcdHlzYXJjaGl2ZXNfYXBpLnBvc3QoKTtcblx0XHRjb25zdCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0cm9vdC5zdHlsZS5wYWRkaW5nID0gJzE1cHgnOyAvLyBqdXN0IHNvIGl0IGRvZXNuJ3QgbG9vayBicm9rZW5cblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChyb290KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5zdGF0ZWxlbS5zdGF0dXMod2luZG93LndnVUxTKCfliqDovb3kuK3igKbigKYnLCAn6LyJ5YWl5Lit4oCm4oCmJykpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJvb3QpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdH07XG5cdFR3aW5rbGUudW5saW5rLmNhbGxiYWNrLmV2YWx1YXRlID0gKGV2ZW50KSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGV2ZW50LnRhcmdldDtcblx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0aWYgKCFpbnB1dC5yZWFzb24pIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumuWPlua2iOmTvuWFpeeahOeQhueUseOAgicsICfmgqjlv4XpoIjmjIflrprlj5bmtojpgKPlhaXnmoTnkIbnlLHjgIInKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGV1bmxpbmsnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlucHV0LmJhY2tsaW5rcyB8fD0gW107XG5cdFx0aW5wdXQuaW1hZ2V1c2FnZSB8fD0gW107XG5cdFx0Y29uc3QgcGFnZXMgPSBNb3JlYml0cy5hcnJheS51bmlxKFsuLi5pbnB1dC5iYWNrbGlua3MsIC4uLmlucHV0LmltYWdldXNhZ2VdKTtcblx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0bXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo5b+F6aG76Iez5bCR6YCJ5oup5LiA5Liq6KaB5Y+W5raI6ZO+5YWl55qE6aG16Z2i44CCJywgJ+aCqOW/hemgiOiHs+WwkemBuOaTh+S4gOWAi+imgeWPlua2iOmAo+WFpeeahOmggemdouOAgicpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXVubGluaycsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdGDlj5bmtogke1xuXHRcdFx0XHRpbnB1dC5iYWNrbGlua3MubGVuZ3RoXG5cdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+mTvuWFpScsICfpgKPlhaUnKSArXG5cdFx0XHRcdFx0XHQoaW5wdXQuaW1hZ2V1c2FnZS5sZW5ndGggPyB3aW5kb3cud2dVTFMoJ+S4juaWh+S7tuS9v+eUqCcsICfoiIfmqpTmoYjkvb/nlKgnKSA6ICcnKVxuXHRcdFx0XHRcdDogd2luZG93LndnVUxTKCfmlofku7bkvb/nlKgnLCAn5qqU5qGI5L2/55SoJylcblx0XHRcdH1gXG5cdFx0KTtcblx0XHR1bmxpbmtlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgdHJ1ZSk7XG5cdFx0dW5saW5rZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdHJlYXNvbjogaW5wdXQucmVhc29uLFxuXHRcdFx0dW5saW5rZXIsXG5cdFx0fTtcblx0XHR1bmxpbmtlci5ydW4oKHBhZ2VOYW1lKSA9PiB7XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflnKjpobXpnaLigJwnLCAn5Zyo6aCB6Z2i44CMJykgKyBwYWdlTmFtZSArIHdpbmRvdy53Z1VMUygn4oCd5Lit5Y+W5raI6ZO+5YWlJywgJ+OAjeS4reWPlua2iOmAo+WFpScpXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEJvdEVkaXQodHJ1ZSk7IC8vIHVubGluayBjb25zaWRlcmVkIGEgZmxvb2R5IG9wZXJhdGlvblxuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyh7XG5cdFx0XHRcdGRvQmFja2xpbmtzOiBpbnB1dC5iYWNrbGlua3MuaW5jbHVkZXMocGFnZU5hbWUpLFxuXHRcdFx0XHRkb0ltYWdldXNhZ2U6IGlucHV0LmltYWdldXNhZ2UuaW5jbHVkZXMocGFnZU5hbWUpLFxuXHRcdFx0XHQuLi5wYXJhbXMsXG5cdFx0XHR9KTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUudW5saW5rLmNhbGxiYWNrcy51bmxpbmtCYWNrbGlua3MpO1xuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLnVubGluay5jYWxsYmFja3MgPSB7XG5cdFx0ZGlzcGxheToge1xuXHRcdFx0YmFja2xpbmtzOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRcdGxldCBoYXZlY29udGVudCA9IGZhbHNlO1xuXHRcdFx0XHRsZXQgbGlzdDtcblx0XHRcdFx0bGV0IG5hbWVzcGFjZXM7XG5cdFx0XHRcdGxldCBpO1xuXHRcdFx0XHRpZiAoYXBpb2JqLnBhcmFtcy5pbWFnZSkge1xuXHRcdFx0XHRcdGNvbnN0IGltYWdldXNhZ2UgPSByZXNwb25zZS5xdWVyeS5pbWFnZXVzYWdlLnNvcnQoVHdpbmtsZS5zb3J0QnlOYW1lc3BhY2UpO1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgaW1hZ2V1c2FnZS5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Ly8gTGFiZWwgbWFkZSBieSBUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3Ncblx0XHRcdFx0XHRcdGxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGltYWdldXNhZ2VbaV0udGl0bGUsXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGxpc3QubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aWh+S7tuS9v+eUqCcsICfmqpTmoYjkvb/nlKgnKSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0bmFtZXNwYWNlcyA9IFtdO1xuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCB2IG9mIFR3aW5rbGUuZ2V0UHJlZigndW5saW5rTmFtZXNwYWNlcycpKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWVzcGFjZXMucHVzaChcblx0XHRcdFx0XHRcdFx0XHR2ID09PSAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfvvIjmnaHnm67vvIknLCAn77yI5qKd55uu77yJJylcblx0XHRcdFx0XHRcdFx0XHRcdDogbXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJylbdl1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey6YCJ5oup55qE5ZG95ZCN56m66Ze077yaJywgJ+W3sumBuOaTh+eahOWRveWQjeepuumWk++8micpICsgbmFtZXNwYWNlcy5qb2luKCfjgIEnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlj6/lnKhUd2lua2xl5Y+C5pWw6K6+572u5Lit5pu05pS555u45YWz6YCJ6aG577yM6K+35Y+C6KeBW1tIOlRXL1BSRUZdXScsXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlgY/lpb3oqK3lrprkuK3mm7TmlLnnm7jpl5zpgbjpoIXvvIzoq4vlj4PopotbW0g6VFcvUFJFRl1dJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRpZiAocmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10gJiYgcmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10uaW1hZ2V1c2FnZSkge1xuXHRcdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDpcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65YmNJywgJ+mhr+ekuuWJjScpICtcblx0XHRcdFx0XHRcdFx0XHRcdG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIobGlzdC5sZW5ndGgpICtcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Liq5paH5Lu25L2/55So44CCJywgJ+WAi+aqlOahiOS9v+eUqOOAgicpLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo6YCJJywgJ+WFqOmBuCcpLFxuXHRcdFx0XHRcdFx0XHRldmVudDogKGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnaW1hZ2V1c2FnZScpKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo5LiN6YCJJywgJ+WFqOS4jemBuCcpLFxuXHRcdFx0XHRcdFx0XHRldmVudDogKGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnaW1hZ2V1c2FnZScpKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2ltYWdldXNhZ2UnLFxuXHRcdFx0XHRcdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0bGlzdCxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0aGF2ZWNvbnRlbnQgPSB0cnVlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+acquaJvuWIsOaWh+S7tuS9v+eUqOOAgicsICfmnKrmib7liLDmqpTmoYjkvb/nlKjjgIInKSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBiYWNrbGlua3MgPSByZXNwb25zZS5xdWVyeS5iYWNrbGlua3Muc29ydChUd2lua2xlLnNvcnRCeU5hbWVzcGFjZSk7XG5cdFx0XHRcdGlmIChiYWNrbGlua3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgYmFja2xpbmtzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdFx0XHQvLyBMYWJlbCBtYWRlIGJ5IFR3aW5rbGUuZ2VuZXJhdGVCYXRjaFBhZ2VMaW5rc1xuXHRcdFx0XHRcdFx0bGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYmFja2xpbmtzW2ldLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpk77lhaUnLCAn6YCj5YWlJyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0bmFtZXNwYWNlcyA9IFtdO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgdiBvZiBUd2lua2xlLmdldFByZWYoJ3VubGlua05hbWVzcGFjZXMnKSkge1xuXHRcdFx0XHRcdFx0bmFtZXNwYWNlcy5wdXNoKFxuXHRcdFx0XHRcdFx0XHR2ID09PSAnMCcgPyB3aW5kb3cud2dVTFMoJ++8iOadoeebru+8iScsICfvvIjmop3nm67vvIknKSA6IG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW3ZdXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey6YCJ5oup55qE5ZG95ZCN56m66Ze077yaJywgJ+W3sumBuOaTh+eahOWRveWQjeepuumWk++8micpICsgbmFtZXNwYWNlcy5qb2luKCfjgIEnKSxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3mm7TmlLnnm7jlhbPpgInpobnvvIzor7flj4Lop4FbW0g6VFcvUFJFRl1dJyxcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlgY/lpb3oqK3lrprkuK3mm7TmlLnnm7jpl5zpgbjpoIXvvIzoq4vlj4PopotbW0g6VFcvUFJFRl1dJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAocmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10gJiYgcmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10uYmFja2xpbmtzKSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65YmNJywgJ+mhr+ekuuWJjScpICtcblx0XHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGxpc3QubGVuZ3RoKSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuKrpk77lhaXjgIInLCAn5YCL6YCj5YWl44CCJyksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOmAiScsICflhajpgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS4jemAiScsICflhajkuI3pgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdiYWNrbGlua3MnLFxuXHRcdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGhhdmVjb250ZW50ID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw6ZO+5YWl44CCJywgJ+acquaJvuWIsOmAo+WFpeOAgicpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChoYXZlY29udGVudCkge1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYXBpb2JqLnBhcmFtcy5mb3JtLnJlbmRlcigpO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLldpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0XHRcdGZvciAoY29uc3QgbGluayBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAnYmFja2xpbmtzJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBsaW5rIG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICdpbWFnZXVzYWdlJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgb2xkdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZShvbGR0ZXh0KTtcblx0XHRcdGxldCBzdW1tYXJ5VGV4dCA9ICcnO1xuXHRcdFx0bGV0IHdhcm5pbmdTdHJpbmcgPSBmYWxzZTtcblx0XHRcdGxldCB0ZXh0O1xuXHRcdFx0Ly8gcmVtb3ZlIGltYWdlIHVzYWdlc1xuXHRcdFx0aWYgKHBhcmFtcy5kb0ltYWdldXNhZ2UpIHtcblx0XHRcdFx0dGV4dCA9IHlzYXJjaGl2ZXNfcGFnZVxuXHRcdFx0XHRcdC5jb21tZW50T3V0SW1hZ2UobXcuY29uZmlnLmdldCgnd2dUaXRsZScpLCB3aW5kb3cud2dVTFMoJ+azqOmHiicsICfms6jph4snKSlcblx0XHRcdFx0XHQuZ2V0VGV4dCgpO1xuXHRcdFx0XHQvLyBkaWQgd2UgYWN0dWFsbHkgbWFrZSBhbnkgY2hhbmdlcz9cblx0XHRcdFx0aWYgKHRleHQgPT09IG9sZHRleHQpIHtcblx0XHRcdFx0XHR3YXJuaW5nU3RyaW5nID0gd2luZG93LndnVUxTKCfmlofku7bkvb/nlKgnLCAn5qqU5qGI5L2/55SoJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSB3aW5kb3cud2dVTFMoJ+azqOmHiuaWh+S7tuS9v+eUqCcsICfms6jph4vmqpTmoYjkvb/nlKgnKTtcblx0XHRcdFx0XHRvbGR0ZXh0ID0gdGV4dDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gcmVtb3ZlIGJhY2tsaW5rc1xuXHRcdFx0aWYgKHBhcmFtcy5kb0JhY2tsaW5rcykge1xuXHRcdFx0XHR0ZXh0ID0geXNhcmNoaXZlc19wYWdlLnJlbW92ZUxpbmsoTW9yZWJpdHMucGFnZU5hbWVOb3JtKS5nZXRUZXh0KCk7XG5cdFx0XHRcdHRleHQgPSB5c2FyY2hpdmVzX3BhZ2UucmVtb3ZlVGVtcGxhdGUobXcuY29uZmlnLmdldCgnd2dUaXRsZScpKS5nZXRUZXh0KCk7XG5cdFx0XHRcdC8vIGRpZCB3ZSBhY3R1YWxseSBtYWtlIGFueSBjaGFuZ2VzP1xuXHRcdFx0XHRpZiAodGV4dCA9PT0gb2xkdGV4dCkge1xuXHRcdFx0XHRcdHdhcm5pbmdTdHJpbmcgPSB3YXJuaW5nU3RyaW5nXG5cdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+5YWl5oiW5paH5Lu25L2/55SoJywgJ+WPlua2iOmAo+WFpeaIluaqlOahiOS9v+eUqCcpXG5cdFx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+5YWlJywgJ+WPlua2iOmAo+WFpScpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gKHN1bW1hcnlUZXh0ID8gYCR7c3VtbWFyeVRleHR9IC8gYCA6ICcnKSArIHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+57uT5YiwJywgJ+WPlua2iOmAo+e1kOWIsCcpO1xuXHRcdFx0XHRcdG9sZHRleHQgPSB0ZXh0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAod2FybmluZ1N0cmluZykge1xuXHRcdFx0XHQvLyBub3RoaW5nIHRvIGRvIVxuXHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdC5lcnJvcihgJHt3aW5kb3cud2dVTFMoJ+acquiDveWcqOmhtemdouS4iuaJvuWIsCcsICfmnKrog73lnKjpoIHpnaLkuIrmib7liLAnKSArIHdhcm5pbmdTdHJpbmd944CCYCk7XG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0c3VtbWFyeVRleHQgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd77yaJywgJ+OAje+8micpICtcblx0XHRcdFx0XHRwYXJhbXMucmVhc29uXG5cdFx0XHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcywgcGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUudW5saW5rLCAndW5saW5rJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlZmx1ZmYuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlZmx1ZmYoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVmbHVmZi5qczogUmV2ZXJ0L3JvbGxiYWNrIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IExpbmtzIG9uIGNvbnRyaWJ1dGlvbnMsXG5cdCAqIHJlY2VudCBjaGFuZ2VzLCBoaXN0b3J5LCBhbmQgZGlmZiBwYWdlc1xuXHQgKiBBY3RpdmUgb246IERpZmYgcGFnZXMsIGhpc3RvcnkgcGFnZXMsXG5cdCAqIFNwZWNpYWw6UmVjZW50Q2hhbmdlcyhMaW5rZWQpLCBhbmQgU3BlY2lhbDpDb250cmlidXRpb25zXG5cdCAqL1xuXHQvKipcblx0ICogVHdpbmtsZWZsdWZmIHJldmVydCBhbmQgYW50aXZhbmRhbGlzbSB1dGlsaXR5XG5cdCAqL1xuXHRUd2lua2xlLmZsdWZmID0gKCkgPT4ge1xuXHRcdC8vIE9ubHkgcHJvY2VlZCBpZiB0aGUgdXNlciBjYW4gYWN0dWFsbHkgZWRpdCB0aGUgcGFnZSBpbiBxdWVzdGlvbi5cblx0XHQvLyB3Z0lzUHJvYmFibHlFZGl0YWJsZSBzaG91bGQgdGFrZVxuXHRcdC8vIGNhcmUgb2YgbmFtZXNwYWNlL2NvbnRlbnRNb2RlbCByZXN0cmljdGlvbnMgYXMgd2VsbCBhcyBleHBsaWNpdFxuXHRcdC8vIHByb3RlY3Rpb25zOyBpdCB3b24ndCB0YWtlIGNhcmUgb2YgY2FzY2FkaW5nIG9yIFRpdGxlQmxhY2tsaXN0LlxuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0lzUHJvYmFibHlFZGl0YWJsZScpKSB7XG5cdFx0XHQvLyB3Z0RpZmZPbGRJZCBpbmNsdWRlZCBmb3IgY2xhcml0eSBpbiBpZiBlbHNlIGxvb3Bcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpIHx8IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykpIHtcblx0XHRcdFx0Ly8gUmVsb2FkIGFsb25nc2lkZSB0aGUgcmV2aXNpb24gc2xpZGVyXG5cdFx0XHRcdG13Lmhvb2soJ3dpa2lwYWdlLmRpZmYnKS5hZGQoKCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MuZGlmZigpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICd2aWV3JyAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1JldmlzaW9uSWQnKSAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSAhPT0gbXcuY29uZmlnLmdldCgnd2dSZXZpc2lvbklkJylcblx0XHRcdCkge1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmFkZExpbmtzLm9sZGlkKCk7XG5cdFx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICdoaXN0b3J5Jykge1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmFkZExpbmtzLmhpc3RvcnkoKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IC0xKSB7XG5cdFx0XHRUd2lua2xlLmZsdWZmLnNraXBUYWxrID0gIVR3aW5rbGUuZ2V0UHJlZignb3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0Jyk7XG5cdFx0XHRUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSA9IFR3aW5rbGUuZ2V0UHJlZigncm9sbGJhY2tJblBsYWNlJyk7XG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ0NvbnRyaWJ1dGlvbnMnKSB7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MuY29udHJpYnV0aW9ucygpO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1JlY2VudGNoYW5nZXMnIHx8XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdSZWNlbnRjaGFuZ2VzbGlua2VkJ1xuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIFJlbG9hZCB3aXRoIHJlY2VudCBjaGFuZ2VzIHVwZGF0ZXNcblx0XHRcdFx0Ly8gc3RydWN0dXJlZENoYW5nZUZpbHRlcnMudWkuaW5pdGlhbGl6ZWQgaXMganVzdCBvbiBsb2FkXG5cdFx0XHRcdG13Lmhvb2soJ3dpa2lwYWdlLmNvbnRlbnQnKS5hZGQoKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRpZiAoaXRlbS5pcygnZGl2JykpIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MucmVjZW50Y2hhbmdlcygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyBBIGxpc3Qgb2YgdXNlcm5hbWVzLCB1c3VhbGx5IG9ubHkgYm90cywgdGhhdCB2YW5kYWxpc20gcmV2ZXJ0IGlzIGp1bXBlZFxuXHQvLyBvdmVyOyB0aGF0IGlzLCBpZiB2YW5kYWxpc20gcmV2ZXJ0IHdhcyBjaG9zZW4gb24gc3VjaCB1c2VybmFtZSwgdGhlbiBpdHNcblx0Ly8gdGFyZ2V0IGlzIG9uIHRoZSByZXZpc2lvbiBiZWZvcmUuICBUaGlzIGlzIGZvciBoYW5kbGluZyBxdWljayBib3RzIHRoYXRcblx0Ly8gbWFrZXMgZWRpdHMgc2Vjb25kcyBhZnRlciB0aGUgb3JpZ2luYWwgZWRpdCBpcyBtYWRlLiAgVGhpcyBvbmx5IGFmZmVjdHNcblx0Ly8gdmFuZGFsaXNtIHJvbGxiYWNrOyBmb3IgZ29vZCBmYWl0aCByb2xsYmFjaywgaXQgd2lsbCBzdG9wLCBpbmRpY2F0aW5nIGEgYm90XG5cdC8vIGhhcyBubyBmYWl0aCwgYW5kIGZvciBub3JtYWwgcm9sbGJhY2ssIGl0IHdpbGwgcm9sbGJhY2sgdGhhdCBlZGl0LlxuXHRUd2lua2xlLmZsdWZmLnRydXN0ZWRCb3RzID0gW107XG5cdFR3aW5rbGUuZmx1ZmYuc2tpcFRhbGsgPSBudWxsO1xuXHRUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSA9IG51bGw7XG5cdC8vIFN0cmluZyB0byBpbnNlcnQgd2hlbiBhIHVzZXJuYW1lIGlzIGhpZGRlblxuXHRUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWUgPSB3aW5kb3cud2dVTFMoJ+W3sumakOiXj+eahOeUqOaItycsICflt7LpmrHol4/nmoTkvb/nlKjogIUnKTtcblx0Ly8gQ29uc29saWRhdGVkIGNvbnN0cnVjdGlvbiBvZiBmbHVmZiBsaW5rc1xuXHRUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyID0ge1xuXHRcdHNwYW5UYWc6IChjb2xvciwgY29udGVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHNwYW4uc3R5bGUuY29sb3IgPSBjb2xvcjtcblx0XHRcdHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpO1xuXHRcdFx0cmV0dXJuIHNwYW47XG5cdFx0fSxcblx0XHRidWlsZExpbms6IChjb2xvciwgdGV4dCkgPT4ge1xuXHRcdFx0Y29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdGxpbmsuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5zcGFuVGFnKCdCbGFjaycsICdbJykpO1xuXHRcdFx0bGluay5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnNwYW5UYWcoY29sb3IsIHRleHQpKTtcblx0XHRcdGxpbmsuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5zcGFuVGFnKCdCbGFjaycsICddJykpO1xuXHRcdFx0bGluay5ocmVmID0gJyMnO1xuXHRcdFx0cmV0dXJuIGxpbms7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gW3ZhbmRhbD1udWxsXSAtIFVzZXJuYW1lIG9mIHRoZSBlZGl0b3IgYmVpbmcgcmV2ZXJ0ZWRcblx0XHQgKiBQcm92aWRlIGEgZmFsc2V5IHZhbHVlIGlmIHRoZSB1c2VybmFtZSBpcyBoaWRkZW4sIGRlZmF1bHRzIHRvIG51bGxcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IGlubGluZSAtIFRydWUgdG8gY3JlYXRlIHR3byBsaW5rcyBpbiBhIHNwYW4sIGZhbHNlXG5cdFx0ICogdG8gY3JlYXRlIHRocmVlIGxpbmtzIGluIGEgZGl2IChvcHRpb25hbClcblx0XHQgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IFtyZXY9d2dDdXJSZXZpc2lvbklkXSAtIFJldmlzaW9uIElEIGJlaW5nIHJldmVydGVkIChvcHRpb25hbClcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gW3BhZ2U9d2dQYWdlTmFtZV0gLSBQYWdlIGJlaW5nIHJldmVydGVkIChvcHRpb25hbClcblx0XHQgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gcmV2Tm9kZVxuXHRcdCAqL1xuXHRcdHJvbGxiYWNrTGlua3M6ICh2YW5kYWwsIGlubGluZSwgcmV2LCBwYWdlKSA9PiB7XG5cdFx0XHR2YW5kYWwgfHw9IG51bGw7XG5cdFx0XHRjb25zdCBlbGVtID0gaW5saW5lID8gJ3NwYW4nIDogJ2Rpdic7XG5cdFx0XHRjb25zdCByZXZOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtKTtcblx0XHRcdHJldiA9IE51bWJlci5wYXJzZUludChyZXYsIDEwKTtcblx0XHRcdGlmIChyZXYpIHtcblx0XHRcdFx0cmV2Tm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgYHR3LXJldmVydCR7cmV2fWApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV2Tm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R3LXJldmVydCcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgbm9ybU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcblx0XHRcdGNvbnN0IHZhbmROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Ryb25nJyk7XG5cdFx0XHRjb25zdCBub3JtTGluayA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuYnVpbGRMaW5rKCdTdGVlbEJsdWUnLCAn5Zue6YCAJyk7XG5cdFx0XHRjb25zdCB2YW5kTGluayA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuYnVpbGRMaW5rKCdSZWQnLCB3aW5kb3cud2dVTFMoJ+egtOWdjycsICfnoLTlo54nKSk7XG5cdFx0XHQkKG5vcm1MaW5rKS5vbignY2xpY2snLCAoZSkgPT4ge1xuXHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYucmV2ZXJ0KCdub3JtJywgdmFuZGFsLCByZXYsIHBhZ2UpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmRpc2FibGVMaW5rcyhyZXZOb2RlKTtcblx0XHRcdH0pO1xuXHRcdFx0JCh2YW5kTGluaykub24oJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLnJldmVydCgndmFuZCcsIHZhbmRhbCwgcmV2LCBwYWdlKTtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5kaXNhYmxlTGlua3MocmV2Tm9kZSk7XG5cdFx0XHR9KTtcblx0XHRcdHZhbmROb2RlLmFwcGVuZENoaWxkKHZhbmRMaW5rKTtcblx0XHRcdG5vcm1Ob2RlLmFwcGVuZENoaWxkKG5vcm1MaW5rKTtcblx0XHRcdGNvbnN0IHNlcGFyYXRvciA9IGlubGluZSA/ICcgJyA6ICcgfHwgJztcblx0XHRcdHJldk5vZGUuYXBwZW5kQ2hpbGQobm9ybU5vZGUpO1xuXHRcdFx0cmV2Tm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZXBhcmF0b3IpKTtcblx0XHRcdHJldk5vZGUuYXBwZW5kQ2hpbGQodmFuZE5vZGUpO1xuXHRcdFx0cmV0dXJuIHJldk5vZGU7XG5cdFx0fSxcblx0XHQvLyBCdWlsZCBbcmVzdG9yZSB0aGlzIHJldmlzaW9uXSBsaW5rc1xuXHRcdHJlc3RvcmVUaGlzUmV2aXNpb25MaW5rOiAocmV2aXNpb25SZWYsIGlubGluZSkgPT4ge1xuXHRcdFx0Ly8gSWYgbm90IGEgc3BlY2lmaWMgcmV2aXNpb24gbnVtYmVyLCBzaG91bGQgYmUgd2dEaWZmTmV3SWQvd2dEaWZmT2xkSWQvd2dSZXZpc2lvbklkXG5cdFx0XHRyZXZpc2lvblJlZiA9IHR5cGVvZiByZXZpc2lvblJlZiA9PT0gJ251bWJlcicgPyByZXZpc2lvblJlZiA6IG13LmNvbmZpZy5nZXQocmV2aXNpb25SZWYpO1xuXHRcdFx0Y29uc3QgZWxlbSA9IGlubGluZSA/ICdzcGFuJyA6ICdkaXYnO1xuXHRcdFx0Y29uc3QgcmV2ZXJ0VG9SZXZpc2lvbk5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW0pO1xuXHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbk5vZGUuc2V0QXR0cmlidXRlKCdpZCcsIGB0dy1yZXZlcnQtdG8tJHtyZXZpc2lvblJlZn1gKTtcblx0XHRcdHJldmVydFRvUmV2aXNpb25Ob2RlLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG5cdFx0XHRjb25zdCByZXZlcnRUb1JldmlzaW9uTGluayA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuYnVpbGRMaW5rKFxuXHRcdFx0XHQnU2FkZGxlQnJvd24nLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aBouWkjeatpOeJiOacrCcsICfmgaLlvqnmraTniYjmnKwnKVxuXHRcdFx0KTtcblx0XHRcdCQocmV2ZXJ0VG9SZXZpc2lvbkxpbmspLm9uKCdjbGljaycsIChlKSA9PiB7XG5cdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5yZXZlcnRUb1JldmlzaW9uKHJldmlzaW9uUmVmKTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKGlubGluZSkge1xuXHRcdFx0XHRyZXZlcnRUb1JldmlzaW9uTm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpKTtcblx0XHRcdH1cblx0XHRcdHJldmVydFRvUmV2aXNpb25Ob2RlLmFwcGVuZENoaWxkKHJldmVydFRvUmV2aXNpb25MaW5rKTtcblx0XHRcdHJldHVybiByZXZlcnRUb1JldmlzaW9uTm9kZTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmZsdWZmLmFkZExpbmtzID0ge1xuXHRcdGNvbnRyaWJ1dGlvbnM6ICgpID0+IHtcblx0XHRcdC8vICQoJ3NwLWNvbnRyaWJ1dGlvbnMtZm9vdGVyLWFub24tcmFuZ2UnKSByZWxpZXMgb24gdGhlIGZtYm94XG5cdFx0XHQvLyBpZCBpbiBbW01lZGlhV2lraTpTcC1jb250cmlidXRpb25zLWZvb3Rlci1hbm9uLXJhbmdlXV0gYW5kXG5cdFx0XHQvLyBpcyB1c2VkIHRvIHNob3cgcm9sbGJhY2svdmFuZGFsaXNtIGxpbmtzIGZvciBJUCByYW5nZXNcblx0XHRcdGNvbnN0IGlzUmFuZ2UgPSAhISRib2R5LmZpbmQoJyNzcC1jb250cmlidXRpb25zLWZvb3Rlci1hbm9uLXJhbmdlJylbMF07XG5cdFx0XHRpZiAobXcuY29uZmlnLmV4aXN0cygnd2dSZWxldmFudFVzZXJOYW1lJykgfHwgaXNSYW5nZSkge1xuXHRcdFx0XHQvLyBHZXQgdGhlIHVzZXJuYW1lIHRoZXNlIGNvbnRyaWJ1dGlvbnMgYXJlIGZvclxuXHRcdFx0XHRsZXQgdXNlcm5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnY29udHJpYnMnKSB8fFxuXHRcdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgIT09IHVzZXJuYW1lICYmXG5cdFx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3Nob3dSb2xsYmFja0xpbmtzJykuaW5jbHVkZXMoJ290aGVycycpKSB8fFxuXHRcdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgPT09IHVzZXJuYW1lICYmIFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnbWluZScpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCAkbGlzdCA9ICRib2R5XG5cdFx0XHRcdFx0XHQuZmluZCgnI213LWNvbnRlbnQtdGV4dCcpXG5cdFx0XHRcdFx0XHQuZmluZCgndWwgbGk6aGFzKHNwYW4ubXctdWN0b3ApOmhhcygubXctY2hhbmdlc2xpc3QtZGlmZiknKTtcblx0XHRcdFx0XHQkbGlzdC5lYWNoKChfa2V5LCBjdXJyZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQvLyByZXZpZCBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgaHJlZiBvZiBib3RoXG5cdFx0XHRcdFx0XHQvLyAubXctY2hhbmdlc2xpc3QtZGF0ZSBvciAubXctY2hhbmdlc2xpc3QtZGlmZlxuXHRcdFx0XHRcdFx0Y29uc3QgcGFnZSA9ICQoY3VycmVudCkuZmluZCgnLm13LWNvbnRyaWJ1dGlvbnMtdGl0bGUnKS50ZXh0KCk7XG5cdFx0XHRcdFx0XHQvLyBHZXQgdXNlcm5hbWUgZm9yIElQIHJhbmdlcyAod2dSZWxldmFudFVzZXJOYW1lIGlzIG51bGwpXG5cdFx0XHRcdFx0XHRpZiAoaXNSYW5nZSkge1xuXHRcdFx0XHRcdFx0XHQvLyBUaGUgOm5vdCBpcyBwb3NzaWJseSB1bm5lY2Vzc2FyeSwgYXMgaXQgYXBwZWFycyB0aGF0XG5cdFx0XHRcdFx0XHRcdC8vIC5tdy11c2VybGluayBpcyBzaW1wbHkgbm90IHByZXNlbnQgaWYgdGhlIHVzZXJuYW1lIGlzIGhpZGRlblxuXHRcdFx0XHRcdFx0XHR1c2VybmFtZSA9ICQoY3VycmVudCkuZmluZCgnLm13LXVzZXJsaW5rOm5vdCguaGlzdG9yeS1kZWxldGVkKScpLnRleHQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIEl0J3MgdW5saWtlbHksIGJ1dCB3ZSBjYW4ndCBlYXNpbHkgY2hlY2sgZm9yIHJldmRlbCdkIHVzZXJuYW1lc1xuXHRcdFx0XHRcdFx0Ly8gc2luY2Ugb25seSBhIHN0cm9uZyBlbGVtZW50IGlzIHByb3ZpZGVkLCB3aXRoIG5vIGVhc3kgc2VsZWN0b3Jcblx0XHRcdFx0XHRcdGN1cnJlbnQuYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucm9sbGJhY2tMaW5rcyh1c2VybmFtZSwgdHJ1ZSwgY3VycmVudC5kYXRhc2V0Lm13UmV2aWQsIHBhZ2UpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRyZWNlbnRjaGFuZ2VzOiAoKSA9PiB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUmVjZW50Y2hhbmdlcycgJiZcblx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3Nob3dSb2xsYmFja0xpbmtzJykuaW5jbHVkZXMoJ3JlY2VudGNoYW5nZXMnKSkgfHxcblx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdSZWNlbnRjaGFuZ2VzbGlua2VkJyAmJlxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygncmVjZW50Y2hhbmdlc2xpbmtlZCcpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIExhdGVzdCBhbmQgcmV2ZXJ0YWJsZSAobm90IHBhZ2UgY3JlYXRpb25zLCBsb2dzLCBjYXRlZ29yaXphdGlvbnMsIGV0Yy4pXG5cdFx0XHRcdGxldCAkbGlzdCA9ICRib2R5LmZpbmQoJy5tdy1jaGFuZ2VzbGlzdCAubXctY2hhbmdlc2xpc3QtbGFzdC5tdy1jaGFuZ2VzbGlzdC1zcmMtbXctZWRpdCcpO1xuXHRcdFx0XHQvLyBFeGNsdWRlIHRvcC1sZXZlbCBoZWFkZXIgaWYgXCJncm91cCBjaGFuZ2VzXCIgcHJlZmVyZW5jZSBpcyB1c2VkXG5cdFx0XHRcdC8vIGFuZCBmaW5kIG9ubHkgaW5kaXZpZHVhbCBsaW5lcyBvciBuZXN0ZWQgbGluZXNcblx0XHRcdFx0JGxpc3QgPSAkbGlzdFxuXHRcdFx0XHRcdC5ub3QoJy5tdy1yY2ZpbHRlcnMtdWktaGlnaGxpZ2h0cy1lbmhhbmNlZC10b3BsZXZlbCcpXG5cdFx0XHRcdFx0LmZpbmQoJy5tdy1jaGFuZ2VzbGlzdC1saW5lLWlubmVyLCB0ZC5tdy1lbmhhbmNlZC1yYy1uZXN0ZWQnKTtcblx0XHRcdFx0JGxpc3QuZWFjaCgoX2tleSwgY3VycmVudCkgPT4ge1xuXHRcdFx0XHRcdC8vIFRoZSA6bm90IGlzIHBvc3NpYmx5IHVubmVjZXNzYXJ5LCBhcyBpdCBhcHBlYXJzIHRoYXRcblx0XHRcdFx0XHQvLyAubXctdXNlcmxpbmsgaXMgc2ltcGx5IG5vdCBwcmVzZW50IGlmIHRoZSB1c2VybmFtZSBpcyBoaWRkZW5cblx0XHRcdFx0XHRjb25zdCB2YW5kYWwgPSAkKGN1cnJlbnQpLmZpbmQoJy5tdy11c2VybGluazpub3QoLmhpc3RvcnktZGVsZXRlZCknKS50ZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3QgaHJlZiA9ICQoY3VycmVudCkuZmluZCgnLm13LWNoYW5nZXNsaXN0LWRpZmYnKS5hdHRyKCdocmVmJyk7XG5cdFx0XHRcdFx0Y29uc3QgcmV2ID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdkaWZmJywgaHJlZik7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZSA9IGN1cnJlbnQuZGF0YXNldC50YXJnZXRQYWdlO1xuXHRcdFx0XHRcdGN1cnJlbnQuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yb2xsYmFja0xpbmtzKHZhbmRhbCwgdHJ1ZSwgcmV2LCBwYWdlKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aGlzdG9yeTogKCkgPT4ge1xuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnaGlzdG9yeScpKSB7XG5cdFx0XHRcdC8vIEFsbCByZXZzXG5cdFx0XHRcdGNvbnN0IGhpc3RMaXN0ID0gJGJvZHkuZmluZCgnI3BhZ2VoaXN0b3J5IGxpJykudG9BcnJheSgpO1xuXHRcdFx0XHQvLyBPbiBmaXJzdCBwYWdlIG9mIHJlc3VsdHMsIHNvIGFkZCByZXZlcnQvcm9sbGJhY2tcblx0XHRcdFx0Ly8gbGlua3MgdG8gdGhlIHRvcCByZXZpc2lvblxuXHRcdFx0XHRpZiAoISRib2R5LmZpbmQoJ2EubXctZmlyc3RsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3QgZmlyc3QgPSBoaXN0TGlzdC5zaGlmdCgpO1xuXHRcdFx0XHRcdGNvbnN0IHZhbmRhbCA9ICQoZmlyc3QpLmZpbmQoJy5tdy11c2VybGluazpub3QoLmhpc3RvcnktZGVsZXRlZCknKS50ZXh0KCk7XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZm9yIGZpcnN0IHVzZXJuYW1lIGRpZmZlcmVudCB0aGFuIHRoZSB0b3AgdXNlcixcblx0XHRcdFx0XHQvLyBvbmx5IGFwcGx5IHJvbGxiYWNrIGxpbmtzIGlmL3doZW4gZm91bmRcblx0XHRcdFx0XHQvLyBmb3IgZmFzdGVyIHRoYW4gZXZlcnlcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgaGlzdExpc3QpIHtcblx0XHRcdFx0XHRcdGlmICgkKGl0ZW0pLmZpbmQoJy5tdy11c2VybGluaycpLnRleHQoKSAhPT0gdmFuZGFsKSB7XG5cdFx0XHRcdFx0XHRcdGZpcnN0LmFwcGVuZENoaWxkKFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucm9sbGJhY2tMaW5rcyh2YW5kYWwsIHRydWUpKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIG9sZGlkXG5cdFx0XHRcdGZvciAoY29uc3QgcmV2IG9mIGhpc3RMaXN0KSB7XG5cdFx0XHRcdFx0Ly8gRnJvbSByZXN0b3JlVGhpc1JldmlzaW9uLCBub24tdHJhbnNmZXJhYmxlXG5cdFx0XHRcdFx0Ly8gSWYgdGhlIHRleHQgaGFzIGJlZW4gcmV2ZGVsJ2QsIGl0IGdldHMgd3JhcHBlZCBpbiBhIHNwYW4gd2l0aCAuaGlzdG9yeS1kZWxldGVkLFxuXHRcdFx0XHRcdC8vIGFuZCBocmVmIHdpbGwgYmUgdW5kZWZpbmVkIChhbmQgdGh1cyBvbGRpZCBpcyBOYU4pXG5cdFx0XHRcdFx0Y29uc3Qge2hyZWZ9ID0gcmV2LnF1ZXJ5U2VsZWN0b3IoJy5tdy1jaGFuZ2VzbGlzdC1kYXRlJyk7XG5cdFx0XHRcdFx0Y29uc3Qgb2xkaWQgPSBOdW1iZXIucGFyc2VJbnQobXcudXRpbC5nZXRQYXJhbVZhbHVlKCdvbGRpZCcsIGhyZWYpLCAxMCk7XG5cdFx0XHRcdFx0aWYgKCFOdW1iZXIuaXNOYU4ob2xkaWQpKSB7XG5cdFx0XHRcdFx0XHRyZXYuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluayhvbGRpZCwgdHJ1ZSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZGlmZjogKCkgPT4ge1xuXHRcdFx0Ly8gQXV0b2ZpbGwgdXNlciB0YWxrIGxpbmtzIG9uIGRpZmZzIHdpdGggdmFuYXJ0aWNsZSBmb3IgZWFzeSB3YXJuaW5nLCBidXQgZG9uJ3QgYXV0b3dhcm5cblx0XHRcdGNvbnN0IHdhcm5Gcm9tVGFsayA9ICh4dGl0bGUpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFsa0xpbmsgPSAkKGAjbXctZGlmZi0ke3h0aXRsZX0yIC5tdy11c2VydG9vbGxpbmtzIGFgKS5maXJzdCgpO1xuXHRcdFx0XHRpZiAodGFsa0xpbmsubGVuZ3RoKSB7XG5cdFx0XHRcdFx0bGV0IGV4dHJhUGFyYW1zID0gYHZhbmFydGljbGU9JHttdy51dGlsLnJhd3VybGVuY29kZShNb3JlYml0cy5wYWdlTmFtZU5vcm0pfSZub2F1dG93YXJuPXRydWVgO1xuXHRcdFx0XHRcdC8vIGRpZmZJRHMgZm9yIHZhbmFydGljbGVyZXZpZFxuXHRcdFx0XHRcdGV4dHJhUGFyYW1zICs9ICcmdmFuYXJ0aWNsZXJldmlkPSc7XG5cdFx0XHRcdFx0ZXh0cmFQYXJhbXMgKz0geHRpdGxlID09PSAnb3RpdGxlJyA/IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykgOiBtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpO1xuXHRcdFx0XHRcdGNvbnN0IGhyZWYgPSB0YWxrTGluay5hdHRyKCdocmVmJyk7XG5cdFx0XHRcdFx0aWYgKGhyZWYuaW5jbHVkZXMoJz8nKSkge1xuXHRcdFx0XHRcdFx0dGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9JiR7ZXh0cmFQYXJhbXN9YCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhbGtMaW5rLmF0dHIoJ2hyZWYnLCBgJHtocmVmfT8ke2V4dHJhUGFyYW1zfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdC8vIE9sZGVyIHJldmlzaW9uXG5cdFx0XHR3YXJuRnJvbVRhbGsoJ290aXRsZScpOyAvLyBBZGQgcXVpY2std2FybiBsaW5rIHRvIHVzZXIgdGFsayBsaW5rXG5cdFx0XHQvLyBEb24ndCBsb2FkIGlmIHRoZXJlJ3MgYSBzaW5nbGUgcmV2aXNpb24gb3Igd2VpcmQgZGlmZiAoY3VyIG9uIGxhdGVzdClcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpICYmIG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykgIT09IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykpIHtcblx0XHRcdFx0Ly8gQWRkIGEgW3Jlc3RvcmUgdGhpcyByZXZpc2lvbl0gbGluayB0byB0aGUgb2xkZXIgcmV2aXNpb25cblx0XHRcdFx0Y29uc3Qgb2xkVGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1vdGl0bGUxJykucGFyZW50Tm9kZTtcblx0XHRcdFx0Y29uc3QgcmV2ZXJ0VG9SZXZpc2lvbiA9IFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucmVzdG9yZVRoaXNSZXZpc2lvbkxpbmsoJ3dnRGlmZk9sZElkJyk7XG5cdFx0XHRcdG9sZFRpdGxlLmluc2VydEJlZm9yZShyZXZlcnRUb1JldmlzaW9uLCBvbGRUaXRsZS5maXJzdENoaWxkKTtcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmV2ZXJ0U3VtbWFyeScpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRyZXZlcnRUb1JldmlzaW9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgfHwgJykpO1xuXHRcdFx0XHRcdGNvbnN0IHJldmVydHN1bW1hcnkgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAncmV2ZXJ0c3VtbWFyeScsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV2ZXJ0c3VtbWFyeS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nlm57pgIDnkIbnlLEnLCAn6YG45pOH5Zue6YCA55CG55SxJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0JChUd2lua2xlLmdldFByZWYoJ2N1c3RvbVJldmVydFN1bW1hcnknKSkuZWFjaCgoXywgZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV2ZXJ0c3VtbWFyeS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IGUubGFiZWwsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBlLnZhbHVlLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbi5hcHBlbmRDaGlsZChyZXZlcnRzdW1tYXJ5LnJlbmRlcigpLmNoaWxkTm9kZXNbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBOZXdlciByZXZpc2lvblxuXHRcdFx0d2FybkZyb21UYWxrKCdudGl0bGUnKTsgLy8gQWRkIHF1aWNrLXdhcm4gbGluayB0byB1c2VyIHRhbGsgbGlua1xuXHRcdFx0Ly8gQWRkIGVpdGhlciByZXN0b3JlIG9yIHJvbGxiYWNrIGxpbmtzIHRvIHRoZSBuZXdlciByZXZpc2lvblxuXHRcdFx0Ly8gRG9uJ3Qgc2hvdyBpZiB0aGVyZSdzIGEgc2luZ2xlIHJldmlzaW9uIG9yIHdlaXJkIGRpZmYgKHByZXYgb24gZmlyc3QpXG5cdFx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RpZmZlcmVuY2VzLW5leHRsaW5rJykpIHtcblx0XHRcdFx0Ly8gTm90IGxhdGVzdCByZXZpc2lvbiwgYWRkIFtyZXN0b3JlIHRoaXMgcmV2aXNpb25dIGxpbmsgdG8gbmV3ZXIgcmV2aXNpb25cblx0XHRcdFx0Y29uc3QgbmV3VGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1udGl0bGUxJykucGFyZW50Tm9kZTtcblx0XHRcdFx0bmV3VGl0bGUuaW5zZXJ0QmVmb3JlKFxuXHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucmVzdG9yZVRoaXNSZXZpc2lvbkxpbmsoJ3dnRGlmZk5ld0lkJyksXG5cdFx0XHRcdFx0bmV3VGl0bGUuZmlyc3RDaGlsZFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdkaWZmJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSAmJlxuXHRcdFx0XHQobXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSAhPT0gbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKSB8fFxuXHRcdFx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkaWZmZXJlbmNlcy1wcmV2bGluaycpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIE5vcm1hbGx5IC5tdy11c2VybGluayBpcyBhIGxpbmssIGJ1dCBpZiB0aGVcblx0XHRcdFx0Ly8gdXNlcm5hbWUgaXMgaGlkZGVuLCBpdCB3aWxsIGJlIGEgc3BhbiB3aXRoXG5cdFx0XHRcdC8vIC5oaXN0b3J5LWRlbGV0ZWQgYXMgd2VsbC4gV2hlbiBhIHN5c29wIHZpZXdzIHRoZVxuXHRcdFx0XHQvLyBoaWRkZW4gY29udGVudCwgdGhlIHNwYW4gY29udGFpbnMgdGhlIHVzZXJuYW1lIGluIGFcblx0XHRcdFx0Ly8gbGluayBlbGVtZW50LCB3aGljaCB3aWxsICpqdXN0KiBoYXZlXG5cdFx0XHRcdC8vIC5tdy11c2VybGluay4gVGhlIGJlbG93IHRodXMgZmluZHMgdGhlIGZpcnN0XG5cdFx0XHRcdC8vIGluc3RhbmNlIG9mIHRoZSBjbGFzcywgd2hpY2ggaWYgaGlkZGVuIGlzIHRoZSBzcGFuXG5cdFx0XHRcdC8vIGFuZCB0aHVzIHRleHQgcmV0dXJucyB1bmRlZmluZWQuIFRlY2huaWNhbGx5LCB0aGlzXG5cdFx0XHRcdC8vIGlzIGEgcGxhY2Ugd2hlcmUgc3lzb3BzICpjb3VsZCogaGF2ZSBtb3JlXG5cdFx0XHRcdC8vIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0byB0aGVtIChhcyBhYm92ZSwgdmlhXG5cdFx0XHRcdC8vICZ1bmhpZGU9MSksIHNpbmNlIHRoZSB1c2VybmFtZSB3aWxsIGJlIGF2YWlsYWJsZSBieVxuXHRcdFx0XHQvLyBjaGVja2luZyBhLm13LXVzZXJsaW5rIGluc3RlYWQsIGJ1dCByZXZlcnQoKSB3aWxsXG5cdFx0XHRcdC8vIG5lZWQgcmV3b3JraW5nIGFyb3VuZCB1c2VySGlkZGVuXG5cdFx0XHRcdGNvbnN0IHZhbmRhbCA9ICRib2R5LmZpbmQoJyNtdy1kaWZmLW50aXRsZTInKS5maW5kKCcubXctdXNlcmxpbmsnKVswXS50ZXh0O1xuXHRcdFx0XHRjb25zdCBudGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctZGlmZi1udGl0bGUxJykucGFyZW50Tm9kZTtcblx0XHRcdFx0bnRpdGxlLmluc2VydEJlZm9yZShUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJvbGxiYWNrTGlua3ModmFuZGFsKSwgbnRpdGxlLmZpcnN0Q2hpbGQpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0b2xkaWQ6ICgpID0+IHtcblx0XHRcdC8vIEFkZCBhIFtyZXN0b3JlIHRoaXMgcmV2aXNpb25dIGxpbmsgb24gb2xkIHJldmlzaW9uc1xuXHRcdFx0Y29uc3QgdGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctcmV2aXNpb24taW5mbycpLnBhcmVudE5vZGU7XG5cdFx0XHR0aXRsZS5pbnNlcnRCZWZvcmUoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluaygnd2dSZXZpc2lvbklkJyksIHRpdGxlLmZpcnN0Q2hpbGQpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYuZGlzYWJsZUxpbmtzID0gKHBhcmVudE5vZGUpID0+IHtcblx0XHQvLyBBcnJheS5mcm9tIG5vdCBhdmFpbGFibGUgaW4gSUUxMSA6KFxuXHRcdCQocGFyZW50Tm9kZSlcblx0XHRcdC5jaGlsZHJlbigpXG5cdFx0XHQuZWFjaCgoX2ksIG5vZGUpID0+IHtcblx0XHRcdFx0bm9kZS5pbm5lckhUTUwgPSBub2RlLnRleHRDb250ZW50OyAvLyBGZWVscyBsaWtlIGNoZWF0aW5nXG5cdFx0XHRcdCQobm9kZSkuY3NzKCdmb250LXdlaWdodCcsICdub3JtYWwnKS5jc3MoJ2NvbG9yJywgJ2RhcmtncmF5Jyk7XG5cdFx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS5mbHVmZi5yZXZlcnQgPSAodHlwZSwgdmFuZGFsLCByZXYsIHBhZ2UpID0+IHtcblx0XHRpZiAobXcudXRpbC5pc0lQdjZBZGRyZXNzKHZhbmRhbCkpIHtcblx0XHRcdHZhbmRhbCA9IE1vcmViaXRzLnNhbml0aXplSVB2Nih2YW5kYWwpO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlbmFtZSA9IHBhZ2UgfHwgbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdGNvbnN0IHJldmlkID0gcmV2IHx8IG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpO1xuXHRcdGxldCBzdW1tYXJ5ID0gJyc7XG5cdFx0aWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdyZXZlcnRzdW1tYXJ5JylbMF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0c3VtbWFyeSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdyZXZlcnRzdW1tYXJ5JylbMF0udmFsdWU7XG5cdFx0fVxuXHRcdGlmIChUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSkge1xuXHRcdFx0Y29uc3Qgbm90aWZ5U3RhdHVzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0bXcubm90aWZ5KG5vdGlmeVN0YXR1cywge1xuXHRcdFx0XHRhdXRvSGlkZTogZmFsc2UsXG5cdFx0XHRcdHRpdGxlOiBg5Zue6YCAJHtwYWdlfWAsXG5cdFx0XHRcdHRhZzogYHR3aW5rbGVmbHVmZl8ke3Jldn1gLCAvLyBTaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGdpdmVuIGRpc2FibGVMaW5rXG5cdFx0XHR9KTtcblxuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQobm90aWZ5U3RhdHVzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWNvbnRlbnQtdGV4dCcpKTtcblx0XHRcdCRib2R5LmZpbmQoJyNjYXRsaW5rcycpLnJlbW92ZSgpO1xuXHRcdH1cblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR0eXBlLFxuXHRcdFx0dXNlcjogdmFuZGFsLFxuXHRcdFx0dXNlckhpZGRlbjogIXZhbmRhbCxcblx0XHRcdHBhZ2VuYW1lLFxuXHRcdFx0cmV2aWQsXG5cdFx0XHRzdW1tYXJ5LFxuXHRcdH07XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiBbJ2luZm8nLCAncmV2aXNpb25zJ10sXG5cdFx0XHR0aXRsZXM6IHBhZ2VuYW1lLFxuXHRcdFx0aW50ZXN0YWN0aW9uczogJ2VkaXQnLFxuXHRcdFx0cnZsaW1pdDogVHdpbmtsZS5nZXRQcmVmKCdyZXZlcnRNYXhSZXZpc2lvbnMnKSxcblx0XHRcdHJ2cHJvcDogWydpZHMnLCAndGltZXN0YW1wJywgJ3VzZXInXSxcblx0XHRcdGN1cnRpbWVzdGFtcDogJycsXG5cdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdHR5cGU6ICdjc3JmJyxcblx0XHR9O1xuXHRcdGNvbnN0IHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bovoPml6nkv67orqLniYjmnKzkv6Hmga8nLCAn5oqT5Y+W6LyD5pep5L+u6KiC54mI5pys6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUuZmx1ZmYuY2FsbGJhY2tzLm1haW5cblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYucmV2ZXJ0VG9SZXZpc2lvbiA9IChvbGRyZXYpID0+IHtcblx0XHRsZXQgc3VtbWFyeSA9ICcnO1xuXHRcdGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgncmV2ZXJ0c3VtbWFyeScpWzBdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHN1bW1hcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgncmV2ZXJ0c3VtbWFyeScpWzBdLnZhbHVlO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctY29udGVudC10ZXh0JykpO1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0cHJvcDogWydpbmZvJywgJ3JldmlzaW9ucyddLFxuXHRcdFx0dGl0bGVzOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRydmxpbWl0OiAxLFxuXHRcdFx0cnZzdGFydGlkOiBvbGRyZXYsXG5cdFx0XHRydnByb3A6IFsnaWRzJywgJ3VzZXInXSxcblx0XHRcdGZvcm1hdDogJ3htbCcsXG5cdFx0XHRjdXJ0aW1lc3RhbXA6ICcnLFxuXHRcdFx0bWV0YTogJ3Rva2VucycsXG5cdFx0XHR0eXBlOiAnY3NyZicsXG5cdFx0fTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5oqT5Y+W6L6D5pep5L+u6K6i54mI5pys5L+h5oGvJywgJ+aKk+WPlui8g+aXqeS/ruiogueJiOacrOizh+ioiicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy50b1JldmlzaW9uXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRyZXY6IG9sZHJldixcblx0XHRcdHN1bW1hcnksXG5cdFx0fTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYuY2FsbGJhY2tzID0ge1xuXHRcdHRvUmV2aXNpb246IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbERvYyA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGxhc3RyZXZpZCA9IE51bWJlci5wYXJzZUludCgkKHhtbERvYykuZmluZCgncGFnZScpLmF0dHIoJ2xhc3RyZXZpZCcpLCAxMCk7XG5cdFx0XHRjb25zdCB0b3VjaGVkID0gJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCd0b3VjaGVkJyk7XG5cdFx0XHRjb25zdCBsb2FkdGltZXN0YW1wID0gJCh4bWxEb2MpLmZpbmQoJ2FwaScpLmF0dHIoJ2N1cnRpbWVzdGFtcCcpO1xuXHRcdFx0Y29uc3QgY3NyZnRva2VuID0gJCh4bWxEb2MpLmZpbmQoJ3Rva2VucycpLmF0dHIoJ2NzcmZ0b2tlbicpO1xuXHRcdFx0Y29uc3QgcmV2ZXJ0VG9SZXZJRCA9IE51bWJlci5wYXJzZUludCgkKHhtbERvYykuZmluZCgncmV2JykuYXR0cigncmV2aWQnKSwgMTApO1xuXHRcdFx0Y29uc3QgcmV2ZXJ0VG9Vc2VyID0gJCh4bWxEb2MpLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXInKTtcblx0XHRcdGNvbnN0IHJldmVydFRvVXNlckhpZGRlbiA9IHR5cGVvZiAkKHhtbERvYykuZmluZCgncmV2JykuYXR0cigndXNlcmhpZGRlbicpID09PSAnc3RyaW5nJztcblx0XHRcdGlmIChyZXZlcnRUb1JldklEICE9PSBhcGlvYmoucGFyYW1zLnJldikge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aKk+WPluWIsOeahOS/ruiuoueJiOacrOS4juivt+axgueahOS/ruiuoueJiOacrOS4jeespu+8jOWPlua2iOOAgicsXG5cdFx0XHRcdFx0XHQn5oqT5Y+W5Yiw55qE5L+u6KiC54mI5pys6IiH6KuL5rGC55qE5L+u6KiC54mI5pys5LiN56ym77yM5Y+W5raI44CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3B0aW9uYWxfc3VtbWFyeSA9IHByb21wdChcblx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfor7fovpPlhaXlm57pgIDnkIbnlLHvvJonLCAn6KuL6Ly45YWl5Zue6YCA55CG55Sx77yaJyl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnN1bW1hcnlcblx0XHRcdCk7IC8vIHBhZGRlZCBvdXQgdG8gd2lkZW4gcHJvbXB0IGluIEZpcmVmb3hcblx0XHRcdGlmIChvcHRpb25hbF9zdW1tYXJ5ID09PSBudWxsKSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUseeUqOaIt+WPlua2iOOAgicsICfnlLHkvb/nlKjogIXlj5bmtojjgIInKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHN1bW1hcnkgPSBUd2lua2xlLmZsdWZmLmZvcm1hdFN1bW1hcnkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zue6YCA5Yiw55SxJFVTRVLlgZrlh7rnmoTkv67orqLniYjmnKwnLCAn5Zue6YCA5Yiw55SxJFVTRVLlgZrlh7rnmoTkv67oqILniYjmnKwnKSArIHJldmVydFRvUmV2SUQsXG5cdFx0XHRcdHJldmVydFRvVXNlckhpZGRlbiA/IG51bGwgOiByZXZlcnRUb1VzZXIsXG5cdFx0XHRcdG9wdGlvbmFsX3N1bW1hcnlcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAnZWRpdCcsXG5cdFx0XHRcdHRpdGxlOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRcdHN1bW1hcnksXG5cdFx0XHRcdHRhZ3M6IFR3aW5rbGUuY2hhbmdlVGFncyxcblx0XHRcdFx0dG9rZW46IGNzcmZ0b2tlbixcblx0XHRcdFx0dW5kbzogbGFzdHJldmlkLFxuXHRcdFx0XHR1bmRvYWZ0ZXI6IHJldmVydFRvUmV2SUQsXG5cdFx0XHRcdGJhc2V0aW1lc3RhbXA6IHRvdWNoZWQsXG5cdFx0XHRcdHN0YXJ0dGltZXN0YW1wOiBsb2FkdGltZXN0YW1wLFxuXHRcdFx0XHRtaW5vcjogVHdpbmtsZS5nZXRQcmVmKCdtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3InKS5pbmNsdWRlcygndG9yZXYnKSA/IHRydWUgOiB1bmRlZmluZWQsXG5cdFx0XHRcdGJvdDogdHJ1ZSxcblx0XHRcdH07XG5cdFx0XHQvLyBIYW5kbGUgd2F0Y2hpbmcsIHBvc3NpYmxlIGV4cGlyeVxuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hSZXZlcnRlZFBhZ2VzJykuaW5jbHVkZXMoJ3RvcmV2JykpIHtcblx0XHRcdFx0Y29uc3Qgd2F0Y2hPckV4cGlyeSA9IFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hSZXZlcnRlZEV4cGlyeScpO1xuXHRcdFx0XHRpZiAoIXdhdGNoT3JFeHBpcnkgfHwgd2F0Y2hPckV4cGlyeSA9PT0gJ25vJykge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICdub2NoYW5nZSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAod2F0Y2hPckV4cGlyeSA9PT0gJ2RlZmF1bHQnIHx8IHdhdGNoT3JFeHBpcnkgPT09ICdwcmVmZXJlbmNlcycpIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICd3YXRjaCc7XG5cdFx0XHRcdFx0Ly8gbnVtYmVyIGFsbG93ZWQgYnV0IG5vdCB1c2VkIGluIFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB3YXRjaE9yRXhwaXJ5ID09PSAnc3RyaW5nJyAmJiB3YXRjaE9yRXhwaXJ5ICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gd2F0Y2hPckV4cGlyeTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gJ+WbnumAgOWujOaIkCc7XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53lrZjlm57pgIDlhoXlrrknLCAn5YSy5a2Y5Zue6YCA5YWn5a65JyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy5jb21wbGV0ZSxcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gYXBpb2JqLnBhcmFtcztcblx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBvc3QoKTtcblx0XHR9LFxuXHRcdG1haW46IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbERvYyA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGlmICgkKHhtbERvYykuZmluZCgnYWN0aW9ucycpLmF0dHIoJ2VkaXQnKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5lcnJvcihcIlVuYWJsZSB0byBlZGl0IHRoZSBwYWdlLCBpdCdzIHByb2JhYmx5IHByb3RlY3RlZC5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGxhc3RyZXZpZCA9IE51bWJlci5wYXJzZUludCgkKHhtbERvYykuZmluZCgncGFnZScpLmF0dHIoJ2xhc3RyZXZpZCcpLCAxMCk7XG5cdFx0XHRjb25zdCB0b3VjaGVkID0gJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCd0b3VjaGVkJyk7XG5cdFx0XHRjb25zdCBsb2FkdGltZXN0YW1wID0gJCh4bWxEb2MpLmZpbmQoJ2FwaScpLmF0dHIoJ2N1cnRpbWVzdGFtcCcpO1xuXHRcdFx0Y29uc3QgY3NyZnRva2VuID0gJCh4bWxEb2MpLmZpbmQoJ3Rva2VucycpLmF0dHIoJ2NzcmZ0b2tlbicpO1xuXHRcdFx0Y29uc3QgcmV2cyA9ICQoeG1sRG9jKS5maW5kKCdyZXYnKTtcblx0XHRcdGNvbnN0IHtzdGF0ZWxlbX0gPSBhcGlvYmo7XG5cdFx0XHRjb25zdCB7cGFyYW1zfSA9IGFwaW9iajtcblx0XHRcdGlmIChyZXZzLmxlbmd0aCA8IDEpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfmsqHmnInlhbblroPkv67orqLniYjmnKzvvIzml6Dms5Xlm57pgIAnLCAn5rKS5pyJ5YW25a6D5L+u6KiC54mI5pys77yM54Sh5rOV5Zue6YCAJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBbdG9wXSA9IHJldnM7XG5cdFx0XHRjb25zdCBsYXN0dXNlciA9IHRvcC5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdGlmIChsYXN0cmV2aWQgPCBwYXJhbXMucmV2aWQpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0J+S7juacjeWKoeWZqOiOt+WPlueahOacgOaWsOS/ruiuoueJiOacrElEICcsXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0cmV2aWQpLFxuXHRcdFx0XHRcdFx0XHQnIOWwj+S6juebruWJjeaJgOaYvuekuueahOS/ruiuoueJiOacrElE44CC6L+Z5Y+v6IO95oSP5ZGz552A5b2T5YmN5L+u6K6i54mI5pys5bey6KKr5Yig6Zmk44CB5pyN5Yqh5Zmo5bu26L+f44CB5oiW5oqT5Y+W5Yiw5LqG5Z2P5o6J55qE5L+h5oGv44CC5Y+W5raI44CCJyxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdCflvp7kvLrmnI3lmajlj5blvpfnmoTmnIDmlrDkv67oqILniYjmnKxJRCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDlsI/mlrznm67liY3miYDpoa/npLrnmoTkv67oqILniYjmnKxJROOAgumAmeWPr+iDveaEj+WRs+iRl+eVtuWJjeS/ruiogueJiOacrOW3suiiq+WIqumZpOOAgeS8uuacjeWZqOW7tumBsuOAgeaIluaTt+WPluWIsOS6huWjnuaOieeahOizh+ioiuOAguWPlua2iOOAgicsXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBVc2VkIGZvciB1c2VyLWZhY2luZyBhbGVydHMsIG1lc3NhZ2VzLCBldGMuLCBub3QgZWRpdHMgb3Igc3VtbWFyaWVzXG5cdFx0XHRsZXQgdXNlck5vcm0gPSBwYXJhbXMudXNlciB8fCBUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWU7XG5cdFx0XHRsZXQgaW5kZXggPSAxO1xuXHRcdFx0aWYgKHBhcmFtcy5yZXZpZCA9PT0gbGFzdHJldmlkKSB7XG5cdFx0XHRcdC8vIEV4cGVjdGVkIHJldmlzaW9uIGlzIHRoZSBzYW1lLCBzbyB0aGUgdXNlcnMgbXVzdCBtYXRjaDtcblx0XHRcdFx0Ly8gdGhpcyBhbGxvd3Mgc3lzb3BzIHRvIGtub3cgd2hldGhlciB0aGUgdXNlcnMgYXJlIHRoZSBzYW1lXG5cdFx0XHRcdHBhcmFtcy51c2VyID0gbGFzdHVzZXI7XG5cdFx0XHRcdHVzZXJOb3JtID0gcGFyYW1zLnVzZXIgfHwgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0J+itpuWRiicsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6K6i54mI5pysICcsXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0cmV2aWQpLFxuXHRcdFx0XHRcdFx0XHQnIOS4juaIkeS7rOeahOS/ruiuoueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLnJldmlkKSxcblx0XHRcdFx0XHRcdFx0J+S4jeWQjCcsXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6KiC54mI5pysICcsXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0cmV2aWQpLFxuXHRcdFx0XHRcdFx0XHQnIOiIh+aIkeWAkeeahOS/ruiogueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLnJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDkuI3lkIwnLFxuXHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKGxhc3R1c2VyID09PSBwYXJhbXMudXNlcikge1xuXHRcdFx0XHRcdHN3aXRjaCAocGFyYW1zLnR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ3ZhbmQnOlxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyh3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSwgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyA5paw5L+u6K6i54mI5pys55SxICcsICfmnIDmlrDkv67oqILniYjmnKznlLEgJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOWboOaIkeS7rOWBh+WumuegtOWdj++8jOe7p+e7reWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOWboOaIkeWAkeWBh+WumuegtOWjnu+8jOe5vOe6jOWbnumAgOaTjeS9nOOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybign5o+Q56S6JywgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyA5paw5L+u6K6i54mI5pys55SxICcsICfmnIDmlrDkv67oqILniYjmnKznlLEgJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDlgZrlh7rvvIzkvYbmiJHku6zov5jmmK/kuI3lm57pgIDkuobjgIInLCAnIOWBmuWHuu+8jOS9huaIkeWAkemChOaYr+S4jeWbnumAgOS6huOAgicpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRwYXJhbXMudHlwZSA9PT0gJ3ZhbmQnICYmIC8vIE9rYXkgdG8gdGVzdCBvbiB1c2VyIHNpbmNlIGl0IHdpbGwgZWl0aGVyIGZhaWwgb3Igc3lzb3Agd2lsbCBjb3JyZWN0bHkgYWNjZXNzIGl0XG5cdFx0XHRcdFx0Ly8gQmVzaWRlcywgbm9uZSBvZiB0aGUgdHJ1c3RlZCBib3RzIGFyZSBnb2luZyB0byBiZSByZXZkZWwnZFxuXHRcdFx0XHRcdFR3aW5rbGUuZmx1ZmYudHJ1c3RlZEJvdHMuaW5jbHVkZXModG9wLmdldEF0dHJpYnV0ZSgndXNlcicpKSAmJlxuXHRcdFx0XHRcdHJldnMubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRcdHJldnNbMV0uZ2V0QXR0cmlidXRlKCdyZXZpZCcpID09PSBwYXJhbXMucmV2aWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67orqLniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCfvvIzkuIDkuKrlj6/kv6HnmoTmnLrlmajkurrlgZrlh7rvvIzkvYbkuYvliY3nmoTniYjmnKzooqvorqTkuLrmmK/noLTlnY/vvIznu6fnu63lm57pgIDmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdFx0J+acgOaWsOS/ruiogueJiOacrOeUsSAnLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBsYXN0dXNlciksXG5cdFx0XHRcdFx0XHRcdFx0J++8jOS4gOWAi+WPr+S/oeeahOapn+WZqOS6uuWBmuWHuu+8jOS9huS5i+WJjeeahOeJiOacrOiiq+iqjeeCuuaYr+egtOWjnu+8jOe5vOe6jOWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGluZGV4ID0gMjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67orqLniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCcg5YGa5Ye677yM5omA5Lul6L+Z5Liq5L+u6K6i54mI5pys5Y+v6IO95bey57uP6KKr5Zue6YCA5LqG77yM5Y+W5raI5Zue6YCA5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67oqILniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCcg5YGa5Ye677yM5omA5Lul6YCZ5YCL5L+u6KiC54mI5pys5Y+v6IO95bey57aT6KKr5Zue6YCA5LqG77yM5Y+W5raI5Zue6YCA5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5mbHVmZi50cnVzdGVkQm90cy5pbmNsdWRlcyhwYXJhbXMudXNlcikpIHtcblx0XHRcdFx0c3dpdGNoIChwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbmQnOlxuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8od2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksIFtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIblr7kgJywgJ+Wwh+WwjSAnKSxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCcg5omn6KGM56C05Z2P5Zue6YCA77yM6L+Z5piv5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq677yM5oiR5Lus5YGH5a6a5oKo6KaB5Zue6YCA5YmN5LiA5Liq5L+u6K6i54mI5pys44CCJyxcblx0XHRcdFx0XHRcdFx0XHQnIOWft+ihjOegtOWjnuWbnumAgO+8jOmAmeaYr+S4gOWAi+WPr+S/oeeahOapn+WZqOS6uu+8jOaIkeWAkeWBh+WumuaCqOimgeWbnumAgOWJjeS4gOWAi+S/ruiogueJiOacrOOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0aW5kZXggPSAyO1xuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXIgPSByZXZzWzFdLmdldEF0dHJpYnV0ZSgndXNlcicpO1xuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPSByZXZzWzFdLmdldEF0dHJpYnV0ZSgndXNlcmhpZGRlbicpID09PSAnJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8qIGNhc2UgJ25vcm0nOiAqL1xuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb250ID0gY29uZmlybShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpgInmi6nkuobluLjop4Tlm57pgIDvvIzkvYbmnIDmlrDkv67mlLnmmK/nlLHkuIDkuKrlj6/kv6HnmoTmnLrlmajkurrvvIgnLFxuXHRcdFx0XHRcdFx0XHRcdCfpgbjmk4fkuobluLjopo/lm57pgIDvvIzkvYbmnIDmlrDkv67mlLnmmK/nlLHkuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrvvIgnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdHVzZXJOb3JtICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn77yJ5YGa5Ye655qE44CC56Gu5a6a5Lul5Zue6YCA5YmN5LiA5Liq5L+u6K6i54mI5pys77yM5Y+W5raI5Lul5Zue6YCA5py65Zmo5Lq655qE5L+u5pS5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdCfvvInlgZrlh7rnmoTjgILnorrlrprku6Xlm57pgIDliY3kuIDlgIvkv67oqILniYjmnKzvvIzlj5bmtojku6Xlm57pgIDmqZ/lmajkurrnmoTkv67mlLknXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGlmIChjb250KSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLCBbXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIblr7kgJywgJ+Wwh+WwjSAnKSxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgdXNlck5vcm0pLFxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCcg5omn6KGM5bi46KeE5Zue6YCA77yM6L+Z5piv5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq677yM5Z+65LqO56Gu6K6k77yM5oiR5Lus5bCG5Zue6YCA5YmN5LiA5Liq5L+u6K6i54mI5pys44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCcg5Z+36KGM5bi46KaP5Zue6YCA77yM6YCZ5piv5LiA5YCL5Y+v5L+h55qE5qmf5Zmo5Lq677yM5Z+65pa856K66KqN77yM5oiR5YCR5bCH5Zue6YCA5YmN5LiA5YCL5L+u6KiC54mI5pys44CCJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0XHRpbmRleCA9IDI7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy51c2VyID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPSByZXZzWzFdLmdldEF0dHJpYnV0ZSgndXNlcmhpZGRlbicpID09PSAnJztcblx0XHRcdFx0XHRcdFx0dXNlck5vcm0gPSBwYXJhbXMudXNlciB8fCBUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWU7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybign5o+Q56S6JywgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5a+5ICcsICflsIflsI0gJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOaJp+ihjOW4uOinhOWbnumAgO+8jOi/meaYr+S4gOS4quWPr+S/oeeahOacuuWZqOS6uu+8jOWfuuS6juehruiupO+8jOaIkeS7rOS7jeWwhuWbnumAgOi/meS4quS/ruiuoueJiOacrOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWft+ihjOW4uOimj+WbnumAgO+8jOmAmeaYr+S4gOWAi+WPr+S/oeeahOapn+WZqOS6uu+8jOWfuuaWvOeiuuiqje+8jOaIkeWAkeS7jeWwh+WbnumAgOmAmeWAi+S/ruiogueJiOacrOOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0XHRsZXQgY291bnQgPSAwO1xuXHRcdFx0Zm9yIChsZXQgaSA9IGluZGV4OyBpIDwgcmV2cy5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHQrK2NvdW50O1xuXHRcdFx0XHRpZiAocmV2c1tpXS5nZXRBdHRyaWJ1dGUoJ3VzZXInKSAhPT0gcGFyYW1zLnVzZXIpIHtcblx0XHRcdFx0XHRmb3VuZCA9IGk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoW1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5LmL5YmN55qE5L+u6K6i54mI5pys77yM5Y+v6IO9ICcsICfmnKrmib7liLDkuYvliY3nmoTkv67oqILniYjmnKzvvIzlj6/og70gJyksXG5cdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQnIOaYr+WUr+S4gOi0oeeMruiAhe+8jOaIlui/meS4queUqOaIt+i/nue7reWBmuWHuuS6hui2hei/hyAnLFxuXHRcdFx0XHRcdFx0JyDmmK/llK/kuIDosqLnjbvogIXvvIzmiJbpgJnlgIvnlKjmiLbpgKPnuozlgZrlh7rkuobotoXpgY4gJ1xuXHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihUd2lua2xlLmdldFByZWYoJ3JldmVydE1heFJldmlzaW9ucycpKSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmrKHnvJbovpHjgIInLCAnIOasoee3qOi8r+OAgicpLFxuXHRcdFx0XHRdKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjb3VudCkge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfplJnor68nLCAn6Yyv6KqkJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aIkeS7rOWwhuimgeWbnumAgDDkuKrkv67orqLniYjmnKzvvIzov5nmsqHmnInmhI/kuYnvvIzmiYDku6Xlj5bmtojlm57pgIDmk43kvZzjgILlj6/og73mmK/lm6DkuLrov5nkuKrkv67orqLniYjmnKzlt7Lnu4/ooqvlm57pgIDvvIzkvYbkv67orqLniYjmnKxJROS7jeaYr+S4gOagt+eahOOAgicsXG5cdFx0XHRcdFx0XHQn5oiR5YCR5bCH6KaB5Zue6YCAMOWAi+S/ruiogueJiOacrO+8jOmAmeaykuacieaEj+e+qe+8jOaJgOS7peWPlua2iOWbnumAgOaTjeS9nOOAguWPr+iDveaYr+WboOeCuumAmeWAi+S/ruiogueJiOacrOW3sue2k+iiq+WbnumAgO+8jOS9huS/ruiogueJiOacrElE5LuN5piv5LiA5qij55qE44CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZ29vZF9yZXZpc2lvbiA9IHJldnNbZm91bmRdO1xuXHRcdFx0bGV0IHVzZXJIYXNBbHJlYWR5Q29uZmlybWVkQWN0aW9uID0gZmFsc2U7XG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgIT09ICd2YW5kJyAmJiBjb3VudCA+IDEpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0dXNlck5vcm0gK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDov57nu63lgZrlh7rkuoYgJywgJyDpgKPnuozlgZrlh7rkuoYgJykgK1xuXHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGNvdW50KSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOasoee8lui+ke+8jOaYr+WQpuimgeWFqOmDqOWbnumAgO+8nycsICcg5qyh57eo6Lyv77yM5piv5ZCm6KaB5YWo6YOo5Zue6YCA77yfJylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKCfmj5DnpLonLCB3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nCcsICfkvb/nlKjogIXlj5bmtojmk43kvZwnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHVzZXJIYXNBbHJlYWR5Q29uZmlybWVkQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhcmFtcy5jb3VudCA9IGNvdW50O1xuXHRcdFx0cGFyYW1zLmdvb2RpZCA9IGdvb2RfcmV2aXNpb24uZ2V0QXR0cmlidXRlKCdyZXZpZCcpO1xuXHRcdFx0cGFyYW1zLmdvb2R1c2VyID0gZ29vZF9yZXZpc2lvbi5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdHBhcmFtcy5nb29kdXNlckhpZGRlbiA9IGdvb2RfcmV2aXNpb24uZ2V0QXR0cmlidXRlKCd1c2VyaGlkZGVuJykgPT09ICcnO1xuXHRcdFx0c3RhdGVsZW0uc3RhdHVzKFtcblx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIoY291bnQpKSxcblx0XHRcdFx0d2luZG93LndnVUxTKCcg5Liq5L+u6K6i54mI5pys5LmL5YmN55SxICcsICcg5YCL5L+u6KiC54mI5pys5LmL5YmN55SxICcpLFxuXHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLmdvb2R1c2VySGlkZGVuID8gVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lIDogcGFyYW1zLmdvb2R1c2VyKSxcblx0XHRcdFx0d2luZG93LndnVUxTKCcg5YGa5Ye655qE5L+u6K6i54mI5pysICcsICcg5YGa5Ye655qE5L+u6KiC54mI5pysICcpLFxuXHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLmdvb2RpZCksXG5cdFx0XHRdKTtcblx0XHRcdGxldCBzdW1tYXJ5O1xuXHRcdFx0bGV0IGV4dHJhX3N1bW1hcnk7XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ3ZhbmQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSBUd2lua2xlLmZsdWZmLmZvcm1hdFN1bW1hcnkoXG5cdFx0XHRcdFx0XHRg5Zue6YCAJFVTRVLlgZrlh7rnmoQke3BhcmFtcy5jb3VudH0ke3dpbmRvdy53Z1VMUygn5qyh57yW6L6R77yM5Yiw55SxJywgJ+asoee3qOi8r++8jOWIsOeUsScpfSR7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5nb29kdXNlckhpZGRlbiA/IFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSA6IHBhcmFtcy5nb29kdXNlclxuXHRcdFx0XHRcdFx0fSR7d2luZG93LndnVUxTKCflgZrlh7rnmoTmnIDlkI7kv67orqLniYjmnKwgJywgJ+WBmuWHuueahOacgOW+jOS/ruiogueJiOacrCAnKX1gLFxuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPyBudWxsIDogcGFyYW1zLnVzZXJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvKiBjYXNlICdub3JtJzogKi9cblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ29mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQnKSkge1xuXHRcdFx0XHRcdFx0ZXh0cmFfc3VtbWFyeSA9IHByb21wdChcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCflj6/pgInnmoTnvJbovpHmkZjopoHvvJonLCAn5Y+v6YG455qE57eo6Lyv5pGY6KaB77yaJyl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCxcblx0XHRcdFx0XHRcdFx0cGFyYW1zLnN1bW1hcnlcblx0XHRcdFx0XHRcdCk7IC8vIHBhZGRlZCBvdXQgdG8gd2lkZW4gcHJvbXB0IGluIEZpcmVmb3hcblx0XHRcdFx0XHRcdGlmIChleHRyYV9zdW1tYXJ5ID09PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raI5pON5L2c44CCJywgJ+S9v+eUqOiAheWPlua2iOaTjeS9nOOAgicpKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dXNlckhhc0FscmVhZHlDb25maXJtZWRBY3Rpb24gPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzdW1tYXJ5ID0gVHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5KFxuXHRcdFx0XHRcdFx0YOWbnumAgCRVU0VS5YGa5Ye655qEJHtwYXJhbXMuY291bnR9JHt3aW5kb3cud2dVTFMoJ+asoee8lui+kScsICfmrKHnt6jovK8nKX1gLFxuXHRcdFx0XHRcdFx0cGFyYW1zLnVzZXJIaWRkZW4gPyBudWxsIDogcGFyYW1zLnVzZXIsXG5cdFx0XHRcdFx0XHRleHRyYV9zdW1tYXJ5XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdjb25maXJtT25GbHVmZicpICYmXG5cdFx0XHRcdCF1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiAmJlxuXHRcdFx0XHQhY29uZmlybSh3aW5kb3cud2dVTFMoJ+WbnumAgOmhtemdou+8muaCqOehruWumuWQl++8nycsICflm57pgIDpoIHpnaLvvJrmgqjnorrlrprll47vvJ8nKSlcblx0XHRcdCkge1xuXHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIERlY2lkZSB3aGV0aGVyIHRvIG5vdGlmeSB0aGUgdXNlciBvbiBzdWNjZXNzXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFUd2lua2xlLmZsdWZmLnNraXBUYWxrICYmXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignb3BlblRhbGtQYWdlJykuaW5jbHVkZXMocGFyYW1zLnR5cGUpICYmXG5cdFx0XHRcdCFwYXJhbXMudXNlckhpZGRlbiAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgIT09IHBhcmFtcy51c2VyXG5cdFx0XHQpIHtcblx0XHRcdFx0cGFyYW1zLm5vdGlmeVVzZXIgPSB0cnVlO1xuXHRcdFx0XHQvLyBQYXNzIGFsb25nIHRvIHRoZSB3YXJuIG1vZHVsZVxuXHRcdFx0XHRwYXJhbXMudmFudGltZXN0YW1wID0gdG9wLmdldEF0dHJpYnV0ZSgndGltZXN0YW1wJyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAnZWRpdCcsXG5cdFx0XHRcdHRpdGxlOiBwYXJhbXMucGFnZW5hbWUsXG5cdFx0XHRcdHN1bW1hcnksXG5cdFx0XHRcdHRhZ3M6IFR3aW5rbGUuY2hhbmdlVGFncyxcblx0XHRcdFx0dG9rZW46IGNzcmZ0b2tlbixcblx0XHRcdFx0dW5kbzogbGFzdHJldmlkLFxuXHRcdFx0XHR1bmRvYWZ0ZXI6IHBhcmFtcy5nb29kaWQsXG5cdFx0XHRcdGJhc2V0aW1lc3RhbXA6IHRvdWNoZWQsXG5cdFx0XHRcdHN0YXJ0dGltZXN0YW1wOiBsb2FkdGltZXN0YW1wLFxuXHRcdFx0XHRtaW5vcjogVHdpbmtsZS5nZXRQcmVmKCdtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3InKS5pbmNsdWRlcyhwYXJhbXMudHlwZSkgPyB0cnVlIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRib3Q6IHRydWUsXG5cdFx0XHR9O1xuXHRcdFx0Ly8gSGFuZGxlIHdhdGNoaW5nLCBwb3NzaWJsZSBleHBpcnlcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoUmV2ZXJ0ZWRQYWdlcycpLmluY2x1ZGVzKHBhcmFtcy50eXBlKSkge1xuXHRcdFx0XHRjb25zdCB3YXRjaE9yRXhwaXJ5ID0gVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFJldmVydGVkRXhwaXJ5Jyk7XG5cdFx0XHRcdGlmICghd2F0Y2hPckV4cGlyeSB8fCB3YXRjaE9yRXhwaXJ5ID09PSAnbm8nKSB7XG5cdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ID0gJ25vY2hhbmdlJztcblx0XHRcdFx0fSBlbHNlIGlmICh3YXRjaE9yRXhwaXJ5ID09PSAnZGVmYXVsdCcgfHwgd2F0Y2hPckV4cGlyeSA9PT0gJ3ByZWZlcmVuY2VzJykge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICdwcmVmZXJlbmNlcyc7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ID0gJ3dhdGNoJztcblx0XHRcdFx0XHQvLyBudW1iZXIgYWxsb3dlZCBidXQgbm90IHVzZWQgaW4gVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXNcblx0XHRcdFx0XHRpZiAodHlwZW9mIHdhdGNoT3JFeHBpcnkgPT09ICdzdHJpbmcnICYmIHdhdGNoT3JFeHBpcnkgIT09ICd5ZXMnKSB7XG5cdFx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3RleHBpcnkgPSB3YXRjaE9yRXhwaXJ5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFUd2lua2xlLmZsdWZmLnJvbGxiYWNrSW5QbGFjZSkge1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IHBhcmFtcy5wYWdlbmFtZTtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9ICflm57pgIDlrozmiJAnO1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2Y5Zue6YCA5YaF5a65JywgJ+WEsuWtmOWbnumAgOWFp+WuuScpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5jYWxsYmFja3MuY29tcGxldGUsXG5cdFx0XHRcdHN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdH0sXG5cdFx0Y29tcGxldGU6IChhcGlvYmopID0+IHtcblx0XHRcdC8vIFRPRE8gTW9zdCBvZiB0aGlzIGlzIGNvcHktcGFzdGVkIGZyb20gTW9yZWJpdHMud2lraS5wYWdlI2ZuU2F2ZVN1Y2Nlc3MuIFVuaWZ5IGl0XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmouZ2V0WE1MKCk7XG5cdFx0XHRjb25zdCAkZWRpdCA9ICQoeG1sKS5maW5kKCdlZGl0Jyk7XG5cdFx0XHRpZiAoJCh4bWwpLmZpbmQoJ2NhcHRjaGEnKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S4jeiDveWbnumAgO+8jOWboOacjeWKoeWZqOimgeaxguaCqOi+k+WFpemqjOivgeeggeOAgicsICfkuI3og73lm57pgIDvvIzlm6DkvLrmnI3lmajopoHmsYLmgqjovLjlhaXpqZforYnnorzjgIInKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmICgkZWRpdC5hdHRyKCdub2NoYW5nZScpID09PSAnJykge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+imgeWbnumAgOWIsOeahOeJiOacrOS4juW9k+WJjeeJiOacrOebuOWQjO+8jOayoeS7gOS5iOimgeWBmueahCcsXG5cdFx0XHRcdFx0XHQn6KaB5Zue6YCA5Yiw55qE54mI5pys6IiH55uu5YmN54mI5pys55u45ZCM77yM5rKS5LuA6bq86KaB5YGa55qEJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFwaW9iai5zdGF0ZWxlbS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0Y29uc3Qge3BhcmFtc30gPSBhcGlvYmo7XG5cdFx0XHRcdGlmIChwYXJhbXMubm90aWZ5VXNlciAmJiAhcGFyYW1zLnVzZXJIaWRkZW4pIHtcblx0XHRcdFx0XHQvLyBub3RpZnlVc2VyIG9ubHkgZnJvbSBtYWluLCBub3QgZnJvbSB0b1JldmlzaW9uXG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8od2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksIFtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5byA5ZCv55So5oi3ICcsICfplovllZ/kvb/nlKjogIUgJyksXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgcGFyYW1zLnVzZXIpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6K6o6K666aG1JywgJyDnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRjb25zdCB3aW5kb3dRdWVyeSA9IHtcblx0XHRcdFx0XHRcdHRpdGxlOiBgVXNlciB0YWxrOiR7cGFyYW1zLnVzZXJ9YCxcblx0XHRcdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHRcdFx0cHJldmlldzogJ3llcycsXG5cdFx0XHRcdFx0XHR2YW5hcnRpY2xlOiBwYXJhbXMucGFnZW5hbWUucmVwbGFjZSgvXy9nLCAnICcpLFxuXHRcdFx0XHRcdFx0dmFuYXJ0aWNsZXJldmlkOiBwYXJhbXMucmV2aWQsXG5cdFx0XHRcdFx0XHR2YW50aW1lc3RhbXA6IHBhcmFtcy52YW50aW1lc3RhbXAsXG5cdFx0XHRcdFx0XHR2YW5hcnRpY2xlZ29vZHJldmlkOiBwYXJhbXMuZ29vZGlkLFxuXHRcdFx0XHRcdFx0dHlwZTogcGFyYW1zLnR5cGUsXG5cdFx0XHRcdFx0XHRjb3VudDogcGFyYW1zLmNvdW50LFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0c3dpdGNoIChUd2lua2xlLmdldFByZWYoJ3VzZXJUYWxrUGFnZU1vZGUnKSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAndGFiJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4obXcudXRpbC5nZXRVcmwoJycsIHdpbmRvd1F1ZXJ5KSwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnYmxhbmsnOlxuXHRcdFx0XHRcdFx0XHR3aW5kb3cub3Blbihcblx0XHRcdFx0XHRcdFx0XHRtdy51dGlsLmdldFVybCgnJywgd2luZG93UXVlcnkpLFxuXHRcdFx0XHRcdFx0XHRcdCdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRcdCdub29wZW5lcixub3JlZmVycmVyLGxvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHQvKiBjYXNlICd3aW5kb3cnOiAqL1xuXHRcdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwoJycsIHdpbmRvd1F1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93JyA/ICdfYmxhbmsnIDogJ3R3aW5rbGV3YXJud2luZG93Jyxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cubmFtZSA9PT0gJ3R3aW5rbGV3YXJud2luZG93J1xuXHRcdFx0XHRcdFx0XHRcdFx0PyAnbm9vcGVuZXIsbm9yZWZlcnJlciwnXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICcnICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbG9jYXRpb249bm8sdG9vbGJhcj1ubyxzdGF0dXM9bm8sZGlyZWN0b3JpZXM9bm8sc2Nyb2xsYmFycz15ZXMsd2lkdGg9MTIwMCxoZWlnaHQ9ODAwJ1xuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHQvLyBJZiBidWlsdEluU3RyaW5nIGNvbnRhaW5zIHRoZSBzdHJpbmcgXCIkVVNFUlwiLCBpdCB3aWxsIGJlIHJlcGxhY2VkXG5cdC8vIGJ5IGFuIGFwcHJvcHJpYXRlIHVzZXIgbGluayBpZiBhIHVzZXIgbmFtZSBpcyBwcm92aWRlZFxuXHRUd2lua2xlLmZsdWZmLmZvcm1hdFN1bW1hcnkgPSAoYnVpbHRJblN0cmluZywgdXNlck5hbWUsIGN1c3RvbVN0cmluZykgPT4ge1xuXHRcdGxldCByZXN1bHQgPSBidWlsdEluU3RyaW5nO1xuXHRcdC8vIGFwcGVuZCB1c2VyJ3MgY3VzdG9tIHJlYXNvblxuXHRcdGlmIChjdXN0b21TdHJpbmcpIHtcblx0XHRcdHJlc3VsdCArPSBg77yaJHtNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoY3VzdG9tU3RyaW5nKX1gO1xuXHRcdH1cblx0XHQvLyBmaW5kIG51bWJlciBvZiBVVEYtOCBieXRlcyB0aGUgcmVzdWx0aW5nIHN0cmluZyB0YWtlcyB1cCwgYW5kIHBvc3NpYmx5IGFkZFxuXHRcdC8vIGEgY29udHJpYnV0aW9ucyBvciBjb250cmlidXRpb25zK3RhbGsgbGluayBpZiBpdCBkb2Vzbid0IHB1c2ggdGhlIGVkaXQgc3VtbWFyeVxuXHRcdC8vIG92ZXIgdGhlIDQ5OS1ieXRlIGxpbWl0XG5cdFx0aWYgKC9cXCRVU0VSLy50ZXN0KGJ1aWx0SW5TdHJpbmcpKSB7XG5cdFx0XHRpZiAodXNlck5hbWUpIHtcblx0XHRcdFx0Y29uc3QgcmVzdWx0TGVuID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHJlc3VsdC5yZXBsYWNlKCckVVNFUicsICcnKSkpLmxlbmd0aDtcblx0XHRcdFx0Y29uc3QgY29udHJpYnNMaW5rID0gYFtbU3BlY2lhbDpDb250cmlidXRpb25zLyR7dXNlck5hbWV9fCR7dXNlck5hbWV9XV1gO1xuXHRcdFx0XHRjb25zdCBjb250cmlic0xlbiA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjb250cmlic0xpbmspKS5sZW5ndGg7XG5cdFx0XHRcdGlmIChyZXN1bHRMZW4gKyBjb250cmlic0xlbiA8PSA0OTkpIHtcblx0XHRcdFx0XHRjb25zdCB0YWxrTGluayA9IGDvvIhbW1VzZXIgdGFsazoke3VzZXJOYW1lfSR7d2luZG93LndnVUxTKCd86K6o6K66XV3vvIknLCAnfOiojuirll1d77yJJyl9YDtcblx0XHRcdFx0XHRpZiAocmVzdWx0TGVuICsgY29udHJpYnNMZW4gKyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodGFsa0xpbmspKS5sZW5ndGggPD0gNDk5KSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBNb3JlYml0cy5zdHJpbmcuc2FmZVJlcGxhY2UocmVzdWx0LCAnJFVTRVInLCBjb250cmlic0xpbmsgKyB0YWxrTGluayk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShyZXN1bHQsICckVVNFUicsIGNvbnRyaWJzTGluayk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlc3VsdCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShyZXN1bHQsICckVVNFUicsIHVzZXJOYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVzdWx0ID0gTW9yZWJpdHMuc3RyaW5nLnNhZmVSZXBsYWNlKHJlc3VsdCwgJyRVU0VSJywgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5mbHVmZiwgJ2ZsdWZmJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmF0Y2hkZWxldGUuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlYmF0Y2hkZWxldGUoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGViYXRjaGRlbGV0ZS5qczogQmF0Y2ggZGVsZXRlIG1vZHVsZSAoc3lzb3BzIG9ubHkpXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkQtYmF0Y2hcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBub24tYXJ0aWNsZXMsIGFuZCBTcGVjaWFsOlByZWZpeEluZGV4XG5cdCAqL1xuXHRUd2lua2xlLmJhdGNoZGVsZXRlID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wICYmXG5cdFx0XHQoKG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpICYmIG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPiAwKSB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnIHx8XG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdCcm9rZW5SZWRpcmVjdHMnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmibnliKAnLCAn5om55YiqJyksXG5cdFx0XHRcdCd0dy1iYXRjaCcsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk5q2k5YiG57G75oiW6aG16Z2i5Lit55qE5omA5pyJ6ZO+5o6lJywgJ+WIqumZpOatpOWIhumhnuaIlumggemdouS4reeahOaJgOaciemAo+e1kCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZSA9IHt9O1xuXHQvLyBIYXMgdGhlIHN1YnBhZ2VzIGxpc3QgYmVlbiBsb2FkZWQ/XG5cdGxldCBzdWJwYWdlc0xvYWRlZDtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRzdWJwYWdlc0xvYWRlZCA9IGZhbHNlO1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCA0MDApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aJuemHj+WIoOmZpCcsICfmibnmrKHliKrpmaQnKSk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjYmF0Y2hkZWxldGUnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk6aG16Z2iJywgJ+WIqumZpOmggemdoicpLFxuXHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfcGFnZScsXG5cdFx0XHRcdFx0dmFsdWU6ICdkZWxldGUnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+WIoOmZpOWFs+iBlOeahOiuqOiuuumhte+8iOeUqOaIt+iuqOiuuumhtemZpOWklu+8iScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn5Yiq6Zmk6Zec6IGv55qE6KiO6KuW6aCB77yI5L2/55So6ICF6KiO6KuW6aCB6Zmk5aSW77yJJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZV90YWxrJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2RlbGV0ZV90YWxrJyxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5Yiw5bey5Yig6aG16Z2i55qE6YeN5a6a5ZCR6aG1JywgJ+WIqumZpOWIsOW3suWIqumggemdoueahOmHjeaWsOWwjuWQkemggemdoicpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfcmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2RlbGV0ZV9yZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTlt7LliKDpobXpnaLnmoTlrZDpobXpnaInLCAn5Yiq6Zmk5bey5Yiq6aCB6Z2i55qE5a2Q6aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZV9zdWJwYWdlcycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrLnRvZ2dsZVN1YnBhZ2VzLFxuXHRcdFx0XHRcdFx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5bey5Yig5a2Q6aG16Z2i55qE6K6o6K666aG1JywgJ+WIqumZpOW3suWIquWtkOmggemdoueahOiojuirlumggScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfc3VicGFnZV90YWxrcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfc3VicGFnZV90YWxrcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+WIoOmZpOWIsOW3suWIoOWtkOmhtemdoueahOmHjeWumuWQkemhtScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQn5Yiq6Zmk5Yiw5bey5Yiq5a2Q6aCB6Z2i55qE6YeN5paw5bCO5ZCR6aCB6Z2iJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfc3VicGFnZV9yZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflj5bmtojmiYDmnInlt7LliKDpobXpnaLnmoTpk77lhaXvvIjku4XlpITnkIbmnaHnm67lkb3lkI3nqbrpl7TvvIknLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+WPlua2iOaJgOacieW3suWIqumggemdoueahOmAo+WFpe+8iOWDheiZleeQhuaineebruWRveWQjeepuumWk++8iSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICd1bmxpbmtfc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAndW5saW5rX3N1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WPlua2iOmTvuWFpe+8iOS7heWkhOeQhuadoeebruWRveWQjeepuumXtO+8iScsICflj5bmtojpgKPlhaXvvIjlg4XomZXnkIbmop3nm67lkb3lkI3nqbrplpPvvIknKSxcblx0XHRcdFx0XHRuYW1lOiAndW5saW5rX3BhZ2UnLFxuXHRcdFx0XHRcdHZhbHVlOiAndW5saW5rJyxcblx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+mZpOaWh+S7tuS9v+eUqO+8iOaJgOacieWRveWQjeepuumXtO+8iScsICfnp7vpmaTmqpTmoYjkvb/nlKjvvIjmiYDmnInlkb3lkI3nqbrplpPvvIknKSxcblx0XHRcdFx0XHRuYW1lOiAndW5saW5rX2ZpbGUnLFxuXHRcdFx0XHRcdHZhbHVlOiAndW5saW5rX2ZpbGUnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NvbW1vbl9yZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfluLjnlKjnkIbnlLHvvJonLFxuXHRcdFx0c3R5bGU6ICd3aWR0aDogODUlOycsXG5cdFx0XHRsaXN0OiBUd2lua2xlLmJhdGNoZGVsZXRlLmRlbGV0ZXJlYXNvbmxpc3QsXG5cdFx0XHRldmVudDogVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay5jaGFuZ2VfY29tbW9uX3JlYXNvbixcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHRzaXplOiA3NSxcblx0XHR9KTtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdHByb3A6ICdyZXZpc2lvbnN8aW5mb3xpbWFnZWluZm8nLFxuXHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbicsXG5cdFx0XHRydnByb3A6ICdzaXplfHVzZXInLFxuXHRcdH07XG5cdFx0Ly8gT24gY2F0ZWdvcmllc1xuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxNCkge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ2NhdGVnb3J5bWVtYmVycyc7XG5cdFx0XHRxdWVyeS5nY210aXRsZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdHF1ZXJ5LmdjbWxpbWl0ID0gVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpO1xuXHRcdFx0Ly8gT24gU3BlY2lhbDpQcmVmaXhJbmRleFxuXHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1ByZWZpeGluZGV4Jykge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ2FsbHBhZ2VzJztcblx0XHRcdHF1ZXJ5LmdhcGxpbWl0ID0gVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpO1xuXHRcdFx0aWYgKG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncHJlZml4JykpIHtcblx0XHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCduYW1lc3BhY2UnKTtcblx0XHRcdFx0cXVlcnkuZ2FwcHJlZml4ID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdwcmVmaXgnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxldCBwYXRoU3BsaXQgPSBkZWNvZGVVUklDb21wb25lbnQobG9jYXRpb24ucGF0aG5hbWUpLnNwbGl0KCcvJyk7XG5cdFx0XHRcdGlmIChwYXRoU3BsaXQubGVuZ3RoIDwgMyB8fCBwYXRoU3BsaXRbMl0gIT09ICdTcGVjaWFsOuWJjee8gOe0ouW8lScpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgdGl0bGVTcGxpdCA9IHBhdGhTcGxpdFszXS5zcGxpdCgnOicpO1xuXHRcdFx0XHRxdWVyeS5nYXBuYW1lc3BhY2UgPSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpW3RpdGxlU3BsaXRbMF0udG9Mb3dlckNhc2UoKV07XG5cdFx0XHRcdGlmICh0aXRsZVNwbGl0Lmxlbmd0aCA8IDIgfHwgcXVlcnkuZ2FwbmFtZXNwYWNlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRxdWVyeS5nYXBuYW1lc3BhY2UgPSAwOyAvLyBhcnRpY2xlIG5hbWVzcGFjZVxuXHRcdFx0XHRcdHF1ZXJ5LmdhcHByZWZpeCA9IHBhdGhTcGxpdC5zcGxpY2UoMykuam9pbignLycpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhdGhTcGxpdCA9IHBhdGhTcGxpdC5zcGxpY2UoNCk7XG5cdFx0XHRcdFx0cGF0aFNwbGl0LnNwbGljZSgwLCAwLCB0aXRsZVNwbGl0LnNwbGljZSgxKS5qb2luKCc6JykpO1xuXHRcdFx0XHRcdHF1ZXJ5LmdhcHByZWZpeCA9IHBhdGhTcGxpdC5qb2luKCcvJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIE9uIFNwZWNpYWw6QnJva2VuUmVkaXJlY3RzXG5cdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQnJva2VuUmVkaXJlY3RzJykge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ3F1ZXJ5cGFnZSc7XG5cdFx0XHRxdWVyeS5ncXBwYWdlID0gJ0Jyb2tlblJlZGlyZWN0cyc7XG5cdFx0XHRxdWVyeS5ncXBsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHRcdC8vIE9uIG5vcm1hbCBwYWdlc1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnbGlua3MnO1xuXHRcdFx0cXVlcnkudGl0bGVzID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0cXVlcnkuZ3BsbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXR1c2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdHN0YXR1c2Rpdi5zdHlsZS5wYWRkaW5nID0gJzE1cHgnOyAvLyBqdXN0IHNvIGl0IGRvZXNuJ3QgbG9vayBicm9rZW5cblx0XHRXaW5kb3cuc2V0Q29udGVudChzdGF0dXNkaXYpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KHN0YXR1c2Rpdik7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzID0ge307XG5cdFx0Y29uc3Qgc3RhdGVsZW0gPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5oqT5Y+W6aG16Z2i5YiX6KGoJywgJ+aKk+WPlumggemdouWIl+ihqCcpKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCmJywgJ+i8ieWFpeS4reKApicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2UnKS5maWx0ZXIoJzpub3QoW21pc3NpbmddKScpOyAvLyA6bm90KFtpbWFnZXJlcG9zaXRvcnk9XCJzaGFyZWRcIl0pXG5cdFx0XHRcdCRwYWdlcy5lYWNoKChfaW5kZXgsIHBhZ2UpID0+IHtcblx0XHRcdFx0XHRjb25zdCAkcGFnZSA9ICQocGFnZSk7XG5cdFx0XHRcdFx0Y29uc3QgbnMgPSAkcGFnZS5hdHRyKCducycpO1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJHBhZ2UuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCBpc1JlZGlyID0gJHBhZ2UuYXR0cigncmVkaXJlY3QnKSA9PT0gJyc7XG5cdFx0XHRcdFx0Y29uc3QgJGVkaXRwcm90ID0gJHBhZ2UuZmluZCgncHJbdHlwZT1cImVkaXRcIl1bbGV2ZWw9XCJzeXNvcFwiXScpO1xuXHRcdFx0XHRcdGNvbnN0IGlzUHJvdGVjdGVkID0gJGVkaXRwcm90Lmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0Y29uc3Qgc2l6ZSA9ICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3NpemUnKTtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IFtdO1xuXHRcdFx0XHRcdGlmIChpc1JlZGlyKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKHdpbmRvdy53Z1VMUygn6YeN5a6a5ZCRJywgJ+mHjeaWsOWwjuWQkScpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGlzUHJvdGVjdGVkKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFqOS/neaKpO+8jCcsICflhajkv53orbfvvIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0KCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiBgJHtuZXcgTW9yZWJpdHMuZGF0ZSgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykpLmNhbGVuZGFyKCd1dGMnKX0gKFVUQylgKSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChucyA9PT0gJzYnKSB7XG5cdFx0XHRcdFx0XHQvLyBtaW1pYyB3aGF0IGRlbGltYWdlcyB1c2VkIHRvIHNob3cgZm9yIGZpbGVzXG5cdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S4iuS8oOiAhe+8micsICfkuIrlgrPogIXvvJonKSArICRwYWdlLmZpbmQoJ2lpJykuYXR0cigndXNlcicpLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjue8lui+ke+8micsICfmnIDlvoznt6jovK/vvJonKSArICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXInKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKHNpemUpICsgd2luZG93LndnVUxTKCflrZfoioInLCAn5L2N5YWD57WEJykpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzW3RpdGxlXSA9IHtcblx0XHRcdFx0XHRcdGxhYmVsOiB0aXRsZSArIChtZXRhZGF0YS5sZW5ndGggPyBg77yIJHttZXRhZGF0YS5qb2luKCfvvIwnKX3vvIlgIDogJycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgZm9ybV8gPSBhcGlvYmoucGFyYW1zLmZvcm07XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b6F5Yig6Zmk6aG16Z2iJywgJ+W+heWIqumZpOmggemdoicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybV8uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajpgIknLCAn5YWo6YG4JyksXG5cdFx0XHRcdFx0ZXZlbnQ6ICgpID0+IHtcblx0XHRcdFx0XHRcdCQocmVzdWx0KVxuXHRcdFx0XHRcdFx0XHQuZmluZCgnaW5wdXRbbmFtZT1wYWdlc106bm90KDpjaGVja2VkKScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfLCBlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZS5jbGljaygpOyAvLyBjaGVjayBpdCwgYW5kIGludm9rZSBjbGljayBldmVudCBzbyB0aGF0IHN1Ymdyb3VwIGNhbiBiZSBzaG93blxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdC8vIENoZWNrIGFueSB1bmNoZWNrZWQgc3VicGFnZXMgdG9vXG5cdFx0XHRcdFx0XHQkYm9keS5maW5kKCdpbnB1dFtuYW1lPVwicGFnZXMuc3VicGFnZXNcIl0nKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo5LiN6YCJJywgJ+WFqOS4jemBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHQkKHJlc3VsdClcblx0XHRcdFx0XHRcdFx0LmZpbmQoJ2lucHV0W25hbWU9cGFnZXNdOmNoZWNrZWQnKVxuXHRcdFx0XHRcdFx0XHQuZWFjaCgoXywgZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGUuY2xpY2soKTsgLy8gdW5jaGVjayBpdCwgYW5kIGludm9rZSBjbGljayBldmVudCBzbyB0aGF0IHN1Ymdyb3VwIGNhbiBiZSBoaWRkZW5cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Zm9ybV8uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlcycsXG5cdFx0XHRcdFx0aWQ6ICd0dy1kYmF0Y2gtcGFnZXMnLFxuXHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdGxpc3Q6IE9iamVjdC52YWx1ZXMoVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcykubWFwKChlKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBmb3JtXy5yZW5kZXIoKTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5XaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICdwYWdlcycpKSB7XG5cdFx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHN0YXRlbGVtXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRjb25zdCBnZW5lcmF0ZUFycm93TGlua3MgPSAoY2hlY2tib3gpID0+IHtcblx0XHRjb25zdCBsaW5rID0gTW9yZWJpdHMuaHRtbE5vZGUoJ2EnLCAnID4nKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndHctZGJhdGNoLXBhZ2UtbGluaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgbXcudXRpbC5nZXRVcmwoY2hlY2tib3gudmFsdWUpKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdGNoZWNrYm94Lm5leHRFbGVtZW50U2libGluZy5hcHBlbmQobGluayk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdCA9IChmb3JtKSA9PiB7XG5cdFx0Ly8gVXBkYXRlIHRoZSBsaXN0IG9mIGNoZWNrZWQgcGFnZXMgaW4gVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcyBvYmplY3Rcblx0XHRjb25zdCBlbGVtZW50cyA9IGZvcm0uZWxlbWVudHMucGFnZXM7XG5cdFx0aWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHtcblx0XHRcdC8vIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBwYWdlc1xuXHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG5cdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXNbZWxlbWVudC52YWx1ZV0uY2hlY2tlZCA9IGVsZW1lbnQuY2hlY2tlZDtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuXHRcdFx0Ly8gaWYgdGhlcmUgaXMganVzdCBvbmUgcGFnZVxuXHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1tlbGVtZW50cy52YWx1ZV0uY2hlY2tlZCA9IGVsZW1lbnRzLmNoZWNrZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdG5hbWU6ICdwYWdlcycsXG5cdFx0XHRpZDogJ3R3LWRiYXRjaC1wYWdlcycsXG5cdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdGxpc3Q6IE9iamVjdC52YWx1ZXMoVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcykubWFwKChlKSA9PiB7XG5cdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0fSksXG5cdFx0fSkucmVuZGVyKCk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuZGVsZXRlcmVhc29ubGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fpgInmi6knLCAn6KuL6YG45pOHJyksXG5cdFx0XHR2YWx1ZTogJycsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnRzbvvJrljp/kvZzogIXmj5Dor7fliKDpmaTmiJbmuIXnqbrpobXpnaLvvIzkuJTpobXpnaLljp/kvZzogIXku4XmnInkuIDkuronLFxuXHRcdFx0XHQnRzbvvJrljp/kvZzogIXmj5Doq4vliKrpmaTmiJbmuIXnqbrpoIHpnaLvvIzkuJTpoIHpnaLljp/kvZzogIXlg4XmnInkuIDkuronXG5cdFx0XHQpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNTRCNHNnxHNl1d77ya5Y6f5L2c6ICF5o+Q6K+35Yig6Zmk5oiW5riF56m66aG16Z2i77yM5LiU6aG16Z2i5Y6f5L2c6ICF5LuF5pyJ5LiA5Lq6Jyxcblx0XHRcdFx0J1tbTElCOkNTRCNHNnxHNl1d77ya5Y6f5L2c6ICF5o+Q6KuL5Yiq6Zmk5oiW5riF56m66aCB6Z2i77yM5LiU6aCB6Z2i5Y6f5L2c6ICF5YOF5pyJ5LiA5Lq6J1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdHOe+8muWtpOeri+mhtemdou+8jOavlOWmguayoeacieS4u+mhtemdoueahOiuqOiuuumhteOAgeaMh+WQkeepuumhtemdoueahOmHjeWumuWQkeetiScsXG5cdFx0XHRcdCdHOe+8muWtpOeri+mggemdou+8jOavlOWmguaykuacieS4u+mggemdoueahOiojuirlumggeOAgeaMh+WQkeepuumggemdoueahOmHjeaWsOWwjuWQkeetiSdcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCdbW0xJQjpDU0QjRzl8RzldXe+8muWtpOeri+mhtemdoicsICdbW0xJQjpDU0QjRzl8RzldXe+8muWtpOeri+mggemdoicpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnUjHvvJrkuI3og73lj5HmjKXlrp7pmYXkvZznlKjnmoTph43lrprlkJHjgIInLCAnUjHvvJrkuI3og73nmbzmj67lr6bpmpvkvZznlKjnmoTph43lrprlkJHjgIInKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW0xJQjpDU0QjUjF8UjFdXe+8muS4jeiDveWPkeaMpeWunumZheS9nOeUqOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdbW0xJQjpDU0QjUjF8UjFdXe+8muS4jeiDveeZvOaPruWvpumam+S9nOeUqOeahOmHjeWumuWQkeOAgidcblx0XHRcdCksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnUjLvvJrlkI3np7DkuI7lr7zlkJHnm67moIfku6PooajkuovniankuI3kuIDoh7TmiJbkuI3lrozlhajkuIDoh7TnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHQnUjLvvJrlkI3nqLHoiIflsI7lkJHnm67mqJnku6PooajkuovniankuI3kuIDoh7TmiJbkuI3lrozlhajkuIDoh7TnmoTph43lrprlkJHjgIInXG5cdFx0XHQpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNTRCNSMnxSMl1d77ya5ZCN56ew5LiO5a+85ZCR55uu5qCH5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJyxcblx0XHRcdFx0J1tbTElCOkNTRCNSMnxSMl1d77ya5ZCN56ix6IiH5bCO5ZCR55uu5qiZ5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5paH5Lu2JywgJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5qqU5qGIJyksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tMSUI6Q1NEI0Y0fEY0XV3vvJrlj6/ooqvmm7/ku6PnmoTlkIjnkIbkvb/nlKjmlofku7YnLFxuXHRcdFx0XHQnW1tMSUI6Q1NEI0Y0fEY0XV3vvJrlj6/ooqvmm7/ku6PnmoTlkIjnkIbkvb/nlKjmqpTmoYgnXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J0Y177ya5rKh5pyJ6KKr5p2h55uu5L2/55So55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu244CB5rKh5pyJ5aGr5YaZ5Lu75L2V5ZCI55CG5L2/55So5L6d5o2u55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu2Jyxcblx0XHRcdFx0J0Y177ya5rKS5pyJ6KKr5qKd55uu5L2/55So55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGI44CB5rKS5pyJ5aGr5a+r5Lu75L2V5ZCI55CG5L2/55So5L6d5pOa55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGIJ1xuXHRcdFx0KSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW0xJQjpDU0QjRjV8RjVdXe+8muayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tuOAgeayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7ticsXG5cdFx0XHRcdCdbW0xJQjpDU0QjRjV8RjVdXe+8muaykuacieiiq+aineebruS9v+eUqOeahOmdnuiHqueUseeJiOasiuaqlOahiOOAgeaykuacieWhq+Wvq+S7u+S9leWQiOeQhuS9v+eUqOS+neaTmueahOmdnuiHqueUseeJiOasiuaqlOahiCdcblx0XHRcdCksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnTzHvvJrnlKjmiLfor7fmsYLliKDpmaToh6rlt7HnmoTnlKjmiLfpobXmiJblhbblrZDpobXpnaInLFxuXHRcdFx0XHQnTzHvvJrkvb/nlKjogIXoq4vmsYLliKrpmaToh6rlt7HnmoTkvb/nlKjogIXpoIHpnaLmiJblhbblrZDpoIHpnaInXG5cdFx0XHQpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J1tbTElCOkNTRCNPMXxPMV1d77ya55So5oi36K+35rGC5Yig6Zmk6Ieq5bex55qEW1tIZWxwOueUqOaIt+mhtXznlKjmiLfpobVdXeaIluWFtuWtkOmhtemdouOAgicsXG5cdFx0XHRcdCdbW0xJQjpDU0QjTzF8TzFdXe+8muS9v+eUqOiAheiri+axguWIqumZpOiHquW3seeahFtbSGVscDrnlKjmiLfpobV85L2/55So6ICF6aCB6Z2iXV3miJblhbblrZDpoIHpnaLjgIInXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnTzLvvJrnqbrnmoTliIbnsbvvvIjmsqHmnInmnaHnm67kuZ/msqHmnInlrZDliIbnsbvvvIknLCAnTzLvvJrnqbrnmoTliIbpoZ7vvIjmspLmnInmop3nm67kuZ/mspLmnInlrZDliIbpoZ7vvIknKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW0xJQjpDU0QjTzJ8TzJdXe+8muepuueahOWIhuexu++8iOayoeacieadoeebruS5n+ayoeacieWtkOWIhuexu++8ieOAgicsXG5cdFx0XHRcdCdbW0xJQjpDU0QjTzJ8TzJdXe+8muepuueahOWIhumhnu+8iOaykuacieaineebruS5n+aykuacieWtkOWIhumhnu+8ieOAgidcblx0XHRcdCksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCdPM++8muW6n+W8g+iNieeovycsICdPM++8muW7ouajhOiNieeovycpLFxuXHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygnW1tMSUI6Q1NEI08zfE8zXV3vvJrlup/lvIPojYnnqL/jgIInLCAnW1tMSUI6Q1NEI08zfE8zXV3vvJrlu6Lmo4TojYnnqL/jgIInKSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrLmNoYW5nZV9jb21tb25fcmVhc29uID0gKGUpID0+IHtcblx0XHRpZiAoZS50YXJnZXQuZm9ybS5yZWFzb24udmFsdWUgIT09ICcnKSB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnJlYXNvbi52YWx1ZSA9IE1vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihlLnRhcmdldC5mb3JtLnJlYXNvbi52YWx1ZSk7XG5cdFx0fVxuXHRcdGUudGFyZ2V0LmZvcm0ucmVhc29uLnZhbHVlICs9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdGUudGFyZ2V0LnZhbHVlID0gJyc7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2sudG9nZ2xlU3VicGFnZXMgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGxldCBuZXdQYWdlTGlzdDtcblx0XHRpZiAoZS50YXJnZXQuY2hlY2tlZCkge1xuXHRcdFx0Zm9ybS5kZWxldGVfc3VicGFnZV9yZWRpcmVjdHMuY2hlY2tlZCA9IGZvcm0uZGVsZXRlX3JlZGlyZWN0cy5jaGVja2VkO1xuXHRcdFx0Zm9ybS5kZWxldGVfc3VicGFnZV90YWxrcy5jaGVja2VkID0gZm9ybS5kZWxldGVfdGFsay5jaGVja2VkO1xuXHRcdFx0Zm9ybS51bmxpbmtfc3VicGFnZXMuY2hlY2tlZCA9IGZvcm0udW5saW5rX3BhZ2UuY2hlY2tlZDtcblx0XHRcdC8vIElmIGxpc3RzIG9mIHN1YnBhZ2VzIHdlcmUgYWxyZWFkeSBsb2FkZWQgb25jZSwgdGhleSBhcmVcblx0XHRcdC8vIGF2YWlsYWJsZSB3aXRob3V0IHVzZSBvZiBhbnkgQVBJIGNhbGxzXG5cdFx0XHRpZiAoc3VicGFnZXNMb2FkZWQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBlbCBvZiBUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IGJhY2sgdGhlIHN1Ymdyb3VwIGZyb20gc3ViZ3JvdXBfLCB3aGVyZSB3ZSBzYXZlZCBpdFxuXHRcdFx0XHRcdGlmIChlbC5zdWJncm91cCA9PT0gbnVsbCAmJiBlbC5zdWJncm91cF8pIHtcblx0XHRcdFx0XHRcdGVsLnN1Ymdyb3VwID0gZWwuc3ViZ3JvdXBfO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRuZXdQYWdlTGlzdCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdChmb3JtKTtcblx0XHRcdFx0JGJvZHkuZmluZCgnI3R3LWRiYXRjaC1wYWdlcycpLnJlcGxhY2VXaXRoKG5ld1BhZ2VMaXN0KTtcblx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMobmV3UGFnZUxpc3QsICdwYWdlcycpKSB7XG5cdFx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzLnN1YnBhZ2VzJykpIHtcblx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIFByb2NlZWQgd2l0aCBBUEkgY2FsbHMgdG8gZ2V0IGxpc3Qgb2Ygc3VicGFnZXNcblx0XHRcdGNvbnN0IGxvYWRpbmdUZXh0ID0gYDxzdHJvbmcgaWQ9XCJkYmF0Y2gtc3VicGFnZS1sb2FkaW5nXCI+JHt3aW5kb3cud2dVTFMoJ+WKoOi9veS4rS4uLicsICfovInlhaXkuK0uLi4nKX08L3N0cm9uZz5gO1xuXHRcdFx0JChlLnRhcmdldCkuYWZ0ZXIobG9hZGluZ1RleHQpO1xuXHRcdFx0Y29uc3QgcGFnZXMgPSAkKGZvcm0ucGFnZXMpXG5cdFx0XHRcdC5tYXAoKF9pLCBlbCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBlbC52YWx1ZTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmdldCgpO1xuXHRcdFx0Y29uc3Qgc3VicGFnZUxpc3RlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbigpO1xuXHRcdFx0c3VicGFnZUxpc3Rlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHRzdWJwYWdlTGlzdGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHN1YnBhZ2VMaXN0ZXIucnVuKFxuXHRcdFx0XHQocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBwYWdlVGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYWdlTmFtZSk7XG5cdFx0XHRcdFx0Ly8gTm8gbmVlZCB0byBsb29rIGZvciBzdWJwYWdlcyBpbiBtYWluL2ZpbGUvbWVkaWF3aWtpIHNwYWNlXG5cdFx0XHRcdFx0aWYgKFswLCA2LCA4XS5pbmNsdWRlcyhwYWdlVGl0bGUubmFtZXNwYWNlKSkge1xuXHRcdFx0XHRcdFx0c3VicGFnZUxpc3Rlci53b3JrZXJTdWNjZXNzKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjojrflj5YgJywgJ+ato+WcqOWPluW+lyAnKSArIHBhZ2VOYW1lICsgd2luZG93LndnVUxTKCcg55qE5a2Q6aG16Z2iJywgJyDnmoTlrZDpoIHpnaInKSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdFx0XHRcdFx0Z2VuZXJhdG9yOiAnYWxscGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRydnByb3A6ICdzaXplJyxcblx0XHRcdFx0XHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbicsXG5cdFx0XHRcdFx0XHRcdGdhcHByZWZpeDogYCR7cGFnZVRpdGxlLnRpdGxlfS9gLFxuXHRcdFx0XHRcdFx0XHRnYXBuYW1lc3BhY2U6IHBhZ2VUaXRsZS5uYW1lc3BhY2UsXG5cdFx0XHRcdFx0XHRcdGdhcGxpbWl0OiAnbWF4Jyxcblx0XHRcdFx0XHRcdFx0cGFnZU5hbWVGdWxsOiBwYWdlTmFtZSwgLy8gTm90IHVzZWQgYnkgQVBJLCBidXQgYWRkZWQgZm9yIGFjY2VzcyBpbiBvblN1Y2Nlc3MoKVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLnJlc3BvbnNlWE1MO1xuXHRcdFx0XHRcdFx0XHRjb25zdCAkcGFnZXMgPSAkKHhtbCkuZmluZCgncGFnZScpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdWJwYWdlTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHQkcGFnZXMuZWFjaCgoX2luZGV4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgJHBhZ2UgPSAkKHBhZ2UpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5zID0gJHBhZ2UuYXR0cignbnMnKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aXRsZSA9ICRwYWdlLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNSZWRpciA9ICRwYWdlLmF0dHIoJ3JlZGlyZWN0JykgPT09ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0ICRlZGl0cHJvdCA9ICRwYWdlLmZpbmQoJ3ByW3R5cGU9XCJlZGl0XCJdW2xldmVsPVwic3lzb3BcIl0nKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBpc1Byb3RlY3RlZCA9ICRlZGl0cHJvdC5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNpemUgPSAkcGFnZS5maW5kKCdyZXYnKS5hdHRyKCdzaXplJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbWV0YWRhdGEgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNSZWRpcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaCgncmVkaXJlY3QnKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGlzUHJvdGVjdGVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFqOS/neaKpO+8jCcsICflhajkv53orbfvvIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBgJHtuZXcgTW9yZWJpdHMuZGF0ZSgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykpLmNhbGVuZGFyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1dGMnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9IChVVEMpYCkgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+H5pyfJywgJ+mBjuacnycpXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAobnMgPT09ICc2Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gbWltaWMgd2hhdCBkZWxpbWFnZXMgdXNlZCB0byBzaG93IGZvciBmaWxlc1xuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuIrkvKDogIXvvJonLCAn5LiK5YKz6ICF77yaJykgKyAkcGFnZS5maW5kKCdpaScpLmF0dHIoJ3VzZXInKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnIDlkI7nvJbovpHvvJonLCAn5pyA5b6M57eo6Lyv77yaJykgKyAkcGFnZS5maW5kKCdyZXYnKS5hdHRyKCd1c2VyJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhLnB1c2gobXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihzaXplKSArIHdpbmRvdy53Z1VMUygn5a2X6IqCJywgJ+S9jeWFg+e1hCcpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0c3VicGFnZUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogdGl0bGUgKyAobWV0YWRhdGEubGVuZ3RoID8gYCAoJHttZXRhZGF0YS5qb2luKCc7ICcpfSlgIDogJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGlmIChzdWJwYWdlTGlzdC5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBwYWdlTmFtZV8gPSBhcGlvYmoucXVlcnkucGFnZU5hbWVGdWxsO1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXNbcGFnZU5hbWVfXS5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnZGJhdGNoLXN1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdDogc3VicGFnZUxpc3QsXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRzdWJwYWdlTGlzdGVyLndvcmtlclN1Y2Nlc3MoKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRudWxsIC8qIHN0YXR1c0VsZW1lbnQgKi8sXG5cdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHN1YnBhZ2VMaXN0ZXIud29ya2VyRmFpbHVyZSgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gTGlzdCAnZW0gb24gdGhlIGludGVyZmFjZVxuXHRcdFx0XHRcdG5ld1BhZ2VMaXN0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0KGZvcm0pO1xuXHRcdFx0XHRcdCRib2R5LmZpbmQoJyN0dy1kYmF0Y2gtcGFnZXMnKS5yZXBsYWNlV2l0aChuZXdQYWdlTGlzdCk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMobmV3UGFnZUxpc3QsICdwYWdlcycpKSB7XG5cdFx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzLnN1YnBhZ2VzJykpIHtcblx0XHRcdFx0XHRcdGdlbmVyYXRlQXJyb3dMaW5rcyhjaGVja2JveCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN1YnBhZ2VzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHQvLyBSZW1vdmUgXCJMb2FkaW5nLi4uIFwiIHRleHRcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjZGJhdGNoLXN1YnBhZ2UtbG9hZGluZycpLnJlbW92ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdGZvciAoY29uc3QgZWwgb2YgVHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcykge1xuXHRcdFx0XHRpZiAoZWwuc3ViZ3JvdXApIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgc3ViZ3JvdXAgYWZ0ZXIgc2F2aW5nIGl0cyBjb250ZW50cyBpbiBzdWJncm91cF9cblx0XHRcdFx0XHQvLyBzbyB0aGF0IGl0IGNhbiBiZSByZXRyaWV2ZWQgZWFzaWx5IGlmIHVzZXIgZGVjaWRlcyB0b1xuXHRcdFx0XHRcdC8vIGRlbGV0ZSB0aGUgc3VicGFnZXMgYWdhaW5cblx0XHRcdFx0XHRlbC5zdWJncm91cF8gPSBlbC5zdWJncm91cDtcblx0XHRcdFx0XHRlbC5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG5ld1BhZ2VMaXN0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0KGZvcm0pO1xuXHRcdFx0JGJvZHkuZmluZCgnI3R3LWRiYXRjaC1wYWdlcycpLnJlcGxhY2VXaXRoKG5ld1BhZ2VMaXN0KTtcblx0XHRcdGZvciAoY29uc3QgY2hlY2tib3ggb2YgTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKG5ld1BhZ2VMaXN0LCAncGFnZXMnKSkge1xuXHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5om56YeP5Yig6Zmk5bey5a6M5oiQJywgJ+aJueasoeWIqumZpOW3suWujOaIkCcpO1xuXHRcdGNvbnN0IGZvcm0gPSBldmVudC50YXJnZXQ7XG5cdFx0Y29uc3QgbnVtUHJvdGVjdGVkID0gJChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ3BhZ2VzJykpLmZpbHRlcigoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRyZXR1cm4gZWxlbWVudC5jaGVja2VkICYmIGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmNvbG9yID09PSAncmVkJztcblx0XHR9KS5sZW5ndGg7XG5cdFx0aWYgKFxuXHRcdFx0bnVtUHJvdGVjdGVkID4gMCAmJlxuXHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5q2j6KaB5Yig6ZmkICcsICfmgqjmraPopoHliKrpmaQgJykgK1xuXHRcdFx0XHRcdG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIobnVtUHJvdGVjdGVkKSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5Liq5YWo5L+d5oqk6aG16Z2i77yM5oKo56Gu5a6a5ZCX77yfJywgJyDlgIvlhajkv53orbfpoIHpnaLvvIzmgqjnorrlrprll47vvJ8nKVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlcyA9IGZvcm0uZ2V0Q2hlY2tlZCgncGFnZXMnKTtcblx0XHRjb25zdCBzdWJwYWdlcyA9IGZvcm0uZ2V0Q2hlY2tlZCgncGFnZXMuc3VicGFnZXMnKTtcblx0XHRjb25zdCByZWFzb24gPSBmb3JtLnJlYXNvbi52YWx1ZTtcblx0XHRjb25zdCBkZWxldGVfcGFnZSA9IGZvcm0uZGVsZXRlX3BhZ2UuY2hlY2tlZDtcblx0XHRsZXQgZGVsZXRlX3RhbGs7XG5cdFx0bGV0IGRlbGV0ZV9yZWRpcmVjdHM7XG5cdFx0bGV0IGRlbGV0ZV9zdWJwYWdlcztcblx0XHRsZXQgZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzO1xuXHRcdGxldCBkZWxldGVfc3VicGFnZV90YWxrcztcblx0XHRsZXQgdW5saW5rX3N1YnBhZ2VzO1xuXHRcdGlmIChkZWxldGVfcGFnZSkge1xuXHRcdFx0ZGVsZXRlX3RhbGsgPSBmb3JtLmRlbGV0ZV90YWxrLmNoZWNrZWQ7XG5cdFx0XHRkZWxldGVfcmVkaXJlY3RzID0gZm9ybS5kZWxldGVfcmVkaXJlY3RzLmNoZWNrZWQ7XG5cdFx0XHRkZWxldGVfc3VicGFnZXMgPSBmb3JtLmRlbGV0ZV9zdWJwYWdlcy5jaGVja2VkO1xuXHRcdFx0aWYgKGRlbGV0ZV9zdWJwYWdlcykge1xuXHRcdFx0XHRkZWxldGVfc3VicGFnZV9yZWRpcmVjdHMgPSBmb3JtLmRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cy5jaGVja2VkO1xuXHRcdFx0XHRkZWxldGVfc3VicGFnZV90YWxrcyA9IGZvcm0uZGVsZXRlX3N1YnBhZ2VfdGFsa3MuY2hlY2tlZDtcblx0XHRcdFx0dW5saW5rX3N1YnBhZ2VzID0gZm9ybS51bmxpbmtfc3VicGFnZXMuY2hlY2tlZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgdW5saW5rX3BhZ2UgPSBmb3JtLnVubGlua19wYWdlLmNoZWNrZWQ7XG5cdFx0Y29uc3QgdW5saW5rX2ZpbGUgPSBmb3JtLnVubGlua19maWxlLmNoZWNrZWQ7XG5cdFx0aWYgKCFyZWFzb24pIHtcblx0XHRcdG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOmcgOimgee7meWHuuS4gOS4queQhueUsScsICfmgqjpnIDopoHntablh7rkuIDlgIvnkIbnlLEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGViYXRjaGRlbGV0ZScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRpZiAoIXBhZ2VzKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeacieimgeWIoOmZpOeahOWGheWuue+8jOS4reatoicsICfmspLmnInopoHliKrpmaTnmoTlhaflrrnvvIzkuK3mraInKVxuXHRcdFx0KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZURlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRkZWxldGVfcGFnZVxuXHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iJywgJ+ato+WcqOWIqumZpOmggemdoicpXG5cdFx0XHRcdDogd2luZG93LndnVUxTKCfmraPlnKjlkK/liqjopoHmsYLnmoTku7vliqEnLCAn5q2j5Zyo5ZWf5YuV6KaB5rGC55qE5Lu75YuZJylcblx0XHQpO1xuXHRcdHBhZ2VEZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHQvLyB3ZSBvbmx5IG5lZWQgdGhlIGluaXRpYWwgc3RhdHVzIGxpbmVzIGlmIHdlJ3JlIGRlbGV0aW5nIHRoZSBwYWdlcyBpbiB0aGUgcGFnZXMgYXJyYXlcblx0XHRwYWdlRGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgZGVsZXRlX3BhZ2UpO1xuXHRcdHBhZ2VEZWxldGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRwYWdlRGVsZXRlci5ydW4oXG5cdFx0XHQocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdHBhZ2U6IHBhZ2VOYW1lLFxuXHRcdFx0XHRcdGRlbGV0ZV9wYWdlLFxuXHRcdFx0XHRcdGRlbGV0ZV90YWxrLFxuXHRcdFx0XHRcdGRlbGV0ZV9yZWRpcmVjdHMsXG5cdFx0XHRcdFx0dW5saW5rX3BhZ2UsXG5cdFx0XHRcdFx0dW5saW5rX2ZpbGU6IHVubGlua19maWxlICYmIG5ldyBSZWdFeHAoYF4ke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpgLCAnaScpLnRlc3QocGFnZU5hbWUpLFxuXHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHRwYWdlRGVsZXRlcixcblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOmhtemdoiAnLCAn5q2j5Zyo5Yiq6Zmk6aCB6Z2iICcpICsgcGFnZU5hbWVcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRpZiAoZGVsZXRlX3BhZ2UpIHtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufe+8iOaJuemHj++8iWApO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnN1cHByZXNzUHJvdGVjdFdhcm5pbmcoKTtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UuZGVsZXRlUGFnZShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kb0V4dHJhcywgcGFnZURlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMoeXNhcmNoaXZlc19wYWdlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0aWYgKGRlbGV0ZV9zdWJwYWdlcykge1xuXHRcdFx0XHRcdGNvbnN0IHN1YnBhZ2VEZWxldGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjliKDpmaTlrZDpobXpnaInLCAn5q2j5Zyo5Yiq6Zmk5a2Q6aCB6Z2iJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHN1YnBhZ2VEZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdFx0XHRzdWJwYWdlRGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgdHJ1ZSk7XG5cdFx0XHRcdFx0c3VicGFnZURlbGV0ZXIuc2V0UGFnZUxpc3Qoc3VicGFnZXMpO1xuXHRcdFx0XHRcdHN1YnBhZ2VEZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0XHRcdFx0cGFnZTogcGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZV9wYWdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRkZWxldGVfdGFsazogZGVsZXRlX3N1YnBhZ2VfdGFsa3MsXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZV9yZWRpcmVjdHM6IGRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cyxcblx0XHRcdFx0XHRcdFx0dW5saW5rX3BhZ2U6IHVubGlua19zdWJwYWdlcyxcblx0XHRcdFx0XHRcdFx0dW5saW5rX2ZpbGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRyZWFzb24sXG5cdFx0XHRcdFx0XHRcdHBhZ2VEZWxldGVyOiBzdWJwYWdlRGVsZXRlcixcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjliKDpmaTlrZDpobXpnaIgJywgJ+ato+WcqOWIqumZpOWtkOmggemdoiAnKSArIHBhZ2VOYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEVkaXRTdW1tYXJ5KGAke3JlYXNvbn3vvIjmibnph4/vvIlgKTtcblx0XHRcdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc3VwcHJlc3NQcm90ZWN0V2FybmluZygpO1xuXHRcdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmRlbGV0ZVBhZ2UoVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMsIHBhZ2VEZWxldGVyLndvcmtlckZhaWx1cmUpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MgPSB7XG5cdFx0Ly8gdGhpcyBzdHVwaWQgcGFyYW1ldGVyIG5hbWUgaXMgYSB0ZW1wb3JhcnkgdGhpbmcgdW50aWwgSSBpbXBsZW1lbnQgYW4gb3ZlcmhhdWxcblx0XHQvLyBvZiBNb3JlYml0cy53aWtpLiogY2FsbGJhY2sgcGFyYW1ldGVyc1xuXHRcdGRvRXh0cmFzOiAodGhpbmdXaXRoUGFyYW1ldGVycykgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gdGhpbmdXaXRoUGFyYW1ldGVycy5wYXJlbnRcblx0XHRcdFx0PyB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudC5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKVxuXHRcdFx0XHQ6IHRoaW5nV2l0aFBhcmFtZXRlcnMuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyB0aGUgaW5pdGlhbCBiYXRjaCBvcGVyYXRpb24ncyBqb2IgaXMgdG8gZGVsZXRlIHRoZSBwYWdlLCBhbmQgdGhhdCBoYXNcblx0XHRcdC8vIHN1Y2NlZWRlZCBieSBub3dcblx0XHRcdHBhcmFtcy5wYWdlRGVsZXRlci53b3JrZXJTdWNjZXNzKHRoaW5nV2l0aFBhcmFtZXRlcnMpO1xuXHRcdFx0bGV0IHF1ZXJ5O1xuXHRcdFx0bGV0IHlzYXJjaGl2ZXNfYXBpO1xuXHRcdFx0aWYgKHBhcmFtcy51bmxpbmtfcGFnZSkge1xuXHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlID0ge307XG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRsaXN0OiAnYmFja2xpbmtzJyxcblx0XHRcdFx0XHRibGZpbHRlcnJlZGlyOiAnbm9ucmVkaXJlY3RzJyxcblx0XHRcdFx0XHRibG5hbWVzcGFjZTogWzBdLFxuXHRcdFx0XHRcdGJsdGl0bGU6IHBhcmFtcy5wYWdlLFxuXHRcdFx0XHRcdGJsbGltaXQ6ICdtYXgnLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6ZO+5YWlJywgJ+ato+WcqOWPluW+l+mAo+WFpScpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLnVubGlua0JhY2tsaW5rc01haW5cblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLnVubGlua19maWxlKSB7XG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRsaXN0OiAnaW1hZ2V1c2FnZScsXG5cdFx0XHRcdFx0aXV0aXRsZTogcGFyYW1zLnBhZ2UsXG5cdFx0XHRcdFx0aXVsaW1pdDogJ21heCcsIC8vIDUwMCBpcyBtYXggZm9yIG5vcm1hbCB1c2VycywgNTAwMCBmb3IgYm90cyBhbmQgc3lzb3BzXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0eXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjojrflj5bmlofku7bpk77lhaUnLCAn5q2j5Zyo5Y+W5b6X5qqU5qGI6YCj5YWlJyksXG5cdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MudW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5kZWxldGVfcGFnZSkge1xuXHRcdFx0XHRpZiAocGFyYW1zLmRlbGV0ZV9yZWRpcmVjdHMpIHtcblx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHRpdGxlczogcGFyYW1zLnBhZ2UsXG5cdFx0XHRcdFx0XHRwcm9wOiAncmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdHJkbGltaXQ6ICdtYXgnLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6YeN5a6a5ZCRJywgJ+ato+WcqOWPluW+l+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kZWxldGVSZWRpcmVjdHNNYWluXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMuZGVsZXRlX3RhbGspIHtcblx0XHRcdFx0XHRjb25zdCBwYWdlVGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYXJhbXMucGFnZSk7XG5cdFx0XHRcdFx0aWYgKHBhZ2VUaXRsZSAmJiBwYWdlVGl0bGUubmFtZXNwYWNlICUgMiA9PT0gMCAmJiBwYWdlVGl0bGUubmFtZXNwYWNlICE9PSAyKSB7XG5cdFx0XHRcdFx0XHRwYWdlVGl0bGUubmFtZXNwYWNlKys7IC8vIG5vdyBwYWdlVGl0bGUgaXMgdGhlIHRhbGsgcGFnZSB0aXRsZSFcblx0XHRcdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRcdHRpdGxlczogcGFnZVRpdGxlLnRvVGV4dCgpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHlzYXJjaGl2ZXNfYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOajgOafpeiuqOiuuumhtemdouaYr+WQpuWtmOWcqCcsICfmraPlnKjmqqLmn6XoqI7oq5bpoIHpnaLmmK/lkKblrZjlnKgnKSxcblx0XHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLmRlbGV0ZVRhbGtcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMudGFsa1BhZ2UgPSBwYWdlVGl0bGUudG9UZXh0KCk7XG5cdFx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkZWxldGVSZWRpcmVjdHNNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgncmQnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWRpcmVjdERlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk5YiwICcsICfmraPlnKjliKrpmaTliLAgJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6YeN5a6a5ZCRJywgJyDnmoTph43mlrDlsI7lkJEnKVxuXHRcdFx0KTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpCAnLCAn5q2j5Zyo5Yiq6ZmkICcpICsgcGFnZU5hbWVcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdGBbW0xJQjpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+aMh+WQkeW3suWIoOmhtemdouKAnCcsICfmjIflkJHlt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfigJ3nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0J+OAjeeahOmHjeaWsOWwjuWQkSdcblx0XHRcdFx0XHQpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLmRlbGV0ZVBhZ2UocmVkaXJlY3REZWxldGVyLndvcmtlclN1Y2Nlc3MsIHJlZGlyZWN0RGVsZXRlci53b3JrZXJGYWlsdXJlKTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0ZGVsZXRlVGFsazogKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLnJlc3BvbnNlWE1MO1xuXHRcdFx0Y29uc3QgZXhpc3RzID0gJCh4bWwpLmZpbmQoJ3BhZ2U6bm90KFttaXNzaW5nXSknKS5sZW5ndGggPiAwO1xuXHRcdFx0aWYgKCFleGlzdHMpIHtcblx0XHRcdFx0Ly8gbm8gdGFsayBwYWdlOyBmb3JnZXQgYWJvdXQgaXRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdGFwaW9iai5wYXJhbXMudGFsa1BhZ2UsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iICcsICfmraPlnKjliKrpmaTpoIHpnaIgJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6K6o6K666aG1JywgJyDnmoToqI7oq5bpoIEnKVxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdGBbW0xJQjpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+W3suWIoOmhtemdouKAnCcsICflt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn4oCd55qEW1tIZWxwOuiuqOiuuumhtXzorqjorrrpobVdXScsXG5cdFx0XHRcdFx0J+OAjeeahFtbSGVscDroqI7oq5bpoIF86KiO6KuW6aCBXV0nXG5cdFx0XHRcdCl9YFxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS5kZWxldGVQYWdlKCk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3NNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgnYmwnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdFx0YOato+WcqOWPlua2iOWIsCAke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOmTvuWFpScsICcg55qE6YCj5YWlJyl9YFxuXHRcdFx0KTtcblx0XHRcdHVubGlua2VyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHVubGlua2VyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRg5q2j5Zyo5Y+W5raIICR7cGFnZU5hbWV9JHt3aW5kb3cud2dVTFMoJyDkuIrnmoTpk77lhaUnLCAnIOS4iueahOmAo+WFpScpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdC4uLmFwaW9iai5wYXJhbXMsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHBhcmFtcy50aXRsZSA9IHBhZ2VOYW1lO1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIgPSB1bmxpbmtlcjtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy51bmxpbmtCYWNrbGlua3MpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdC8vIHdlIHByb2JhYmx5IGp1c3QgZGVsZXRlZCBpdCwgYXMgYSByZWN1cnNpdmUgYmFja2xpbmtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCB0ZXh0O1xuXHRcdFx0aWYgKHBhcmFtcy50aXRsZSBpbiBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlKSB7XG5cdFx0XHRcdHRleHQgPSBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlW3BhcmFtcy50aXRsZV07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb2xkX3RleHQgPSB0ZXh0O1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UodGV4dCk7XG5cdFx0XHR0ZXh0ID0geXNhcmNoaXZlc19wYWdlLnJlbW92ZUxpbmsocGFyYW1zLnBhZ2UpLmdldFRleHQoKTtcblx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGVbcGFyYW1zLnRpdGxlXSA9IHRleHQ7XG5cdFx0XHRpZiAodGV4dCA9PT0gb2xkX3RleHQpIHtcblx0XHRcdFx0Ly8gTm90aGluZyB0byBkbywgcmV0dXJuXG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJTdWNjZXNzKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOWIsOW3suWIoOmhtemdoicsICflj5bmtojliLDlt7LliKrpoIHpnaInKSArIHBhcmFtcy5wYWdlICsgd2luZG93LndnVUxTKCfnmoTpk77lhaUnLCAn55qE6YCj5YWlJylcblx0XHRcdCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2V0TWF4Q29uZmxpY3RSZXRyaWVzKDEwKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcywgcGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUpO1xuXHRcdH0sXG5cdFx0dW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgnaXUnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdFx0YOato+WcqOWPlua2iOWIsCAke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOmTvuWFpScsICcg55qE6YCj5YWlJyl9YFxuXHRcdFx0KTtcblx0XHRcdHVubGlua2VyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHVubGlua2VyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRg5Y+W5raIICR7cGFnZU5hbWV9JHt3aW5kb3cud2dVTFMoJyDnmoTmlofku7bkvb/nlKgnLCAnIOeahOaqlOahiOS9v+eUqCcpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdC4uLmFwaW9iai5wYXJhbXMsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHBhcmFtcy50aXRsZSA9IHBhZ2VOYW1lO1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIgPSB1bmxpbmtlcjtcblx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy51bmxpbmtJbWFnZUluc3RhbmNlcyk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHVubGlua0ltYWdlSW5zdGFuY2VzOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGlmICghcGFnZW9iai5leGlzdHMoKSkge1xuXHRcdFx0XHQvLyB3ZSBwcm9iYWJseSBqdXN0IGRlbGV0ZWQgaXQsIGFzIGEgcmVjdXJzaXZlIGJhY2tsaW5rXG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJTdWNjZXNzKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBpbWFnZSA9IHBhcmFtcy5wYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OmApLCAnJyk7XG5cdFx0XHRsZXQgdGV4dDtcblx0XHRcdGlmIChwYXJhbXMudGl0bGUgaW4gVHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZSkge1xuXHRcdFx0XHR0ZXh0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZVtwYXJhbXMudGl0bGVdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG9sZF90ZXh0ID0gdGV4dDtcblx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0dGV4dCA9IHlzYXJjaGl2ZXNfcGFnZVxuXHRcdFx0XHQuY29tbWVudE91dEltYWdlKGltYWdlLCB3aW5kb3cud2dVTFMoJ+WboOaWh+S7tuW3suWIoO+8jOaVheazqOinoycsICflm6DmqpTmoYjlt7LliKrvvIzmlYXoqLvop6MnKSlcblx0XHRcdFx0LmdldFRleHQoKTtcblx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGVbcGFyYW1zLnRpdGxlXSA9IHRleHQ7XG5cdFx0XHRpZiAodGV4dCA9PT0gb2xkX3RleHQpIHtcblx0XHRcdFx0cGFnZW9ialxuXHRcdFx0XHRcdC5nZXRTdGF0dXNFbGVtZW50KClcblx0XHRcdFx0XHQuZXJyb3IoXG5cdFx0XHRcdFx0XHRg5ZyoICR7cGFnZW9iai5nZXRQYWdlTmFtZSgpfSDkuIrlj5bmtoggJHtpbWFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOaWh+S7tuS9v+eUqOWksei0pScsICcg55qE5qqU5qGI5L2/55So5aSx5pWXJyl9YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKHBhZ2VvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOS9v+eUqOW3suiiq+WIoOmZpOaWh+S7ticsICflj5bmtojkvb/nlKjlt7LooqvliKrpmaTmqpTmoYgnKSArXG5cdFx0XHRcdFx0aW1hZ2UgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn77yM5Zug5Li677yaJywgJ++8jOWboOeCuu+8micpICtcblx0XHRcdFx0XHRwYXJhbXMucmVhc29uXG5cdFx0XHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNldE1heENvbmZsaWN0UmV0cmllcygxMCk7XG5cdFx0XHRwYWdlb2JqLnNhdmUocGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MsIHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmJhdGNoZGVsZXRlLCAnYmF0Y2hkZWxldGUnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmF0Y2h1bmRlbGV0ZS5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGViYXRjaHVuZGVsZXRlKCQpIHtcblx0LyoqXG5cdCAqIHR3aW5rbGViYXRjaHVuZGVsZXRlLmpzOiBCYXRjaCB1bmRlbGV0ZSBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiVW5kLWJhdGNoXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcgdXNlciBhbmQgcHJvamVjdCBwYWdlc1xuXHQgKi9cblx0VHdpbmtsZS5iYXRjaHVuZGVsZXRlID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdCFNb3JlYml0cy51c2VySXNTeXNvcCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnVzZXIgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSAhPT0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKS5wcm9qZWN0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS5iYXRjaHVuZGVsZXRlLmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfmibnlpI0nLCAn5om55b6pJyksXG5cdFx0XHQndHctYmF0Y2gtdW5kZWwnLFxuXHRcdFx0d2luZG93LndnVUxTKCflj43liKDpmaTpobXpnaInLCAn5Y+N5Yiq6Zmk6aCB6Z2iJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQwMCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmibnph4/lj43liKDpmaQnLCAn5om55qyh5Y+N5Yiq6ZmkJykpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyNiYXRjaHVuZGVsZXRlJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5iYXRjaHVuZGVsZXRlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Iul5a2Y5Zyo5bey5Yig6Zmk55qE6K6o6K666aG177yM5Lmf5oGi5aSNJywgJ+iLpeWtmOWcqOW3suWIqumZpOeahOiojuirlumgge+8jOS5n+aBouW+qScpLFxuXHRcdFx0XHRcdG5hbWU6ICd1bmRlbF90YWxrJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3VuZGVsX3RhbGsnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdGxhYmVsOiAn55CG55Sx77yaJyxcblx0XHRcdHNpemU6IDYwLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHN0YXR1c2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdHN0YXR1c2Rpdi5zdHlsZS5wYWRkaW5nID0gJzE1cHgnOyAvLyBqdXN0IHNvIGl0IGRvZXNuJ3QgbG9vayBicm9rZW5cblx0XHRXaW5kb3cuc2V0Q29udGVudChzdGF0dXNkaXYpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KHN0YXR1c2Rpdik7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGdlbmVyYXRvcjogJ2xpbmtzJyxcblx0XHRcdHByb3A6ICdpbmZvJyxcblx0XHRcdGlucHJvcDogJ3Byb3RlY3Rpb24nLFxuXHRcdFx0dGl0bGVzOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG5cdFx0XHRncGxsaW1pdDogVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpLFxuXHRcdH07XG5cdFx0Y29uc3Qgc3RhdGVsZW0gPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5oqT5Y+W6aG16Z2i5YiX6KGoJywgJ+aKk+WPlumggemdouWIl+ihqCcpKTtcblx0XHRjb25zdCB5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCmJywgJ+i8ieWFpeS4reKApicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2VbbWlzc2luZ10nKTtcblx0XHRcdFx0Y29uc3QgbGlzdCA9IFtdO1xuXHRcdFx0XHQkcGFnZXMuZWFjaCgoX2luZGV4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgJHBhZ2UgPSAkKHBhZ2UpO1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJHBhZ2UuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCAkZWRpdHByb3QgPSAkcGFnZS5maW5kKCdwclt0eXBlPVwiY3JlYXRlXCJdW2xldmVsPVwic3lzb3BcIl0nKTtcblx0XHRcdFx0XHRjb25zdCBpc1Byb3RlY3RlZCA9ICRlZGl0cHJvdC5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdGxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRsYWJlbDpcblx0XHRcdFx0XHRcdFx0dGl0bGUgK1xuXHRcdFx0XHRcdFx0XHQoaXNQcm90ZWN0ZWRcblx0XHRcdFx0XHRcdFx0XHQ/IGDvvIgke3dpbmRvdy53Z1VMUygn5YWo5L+d5oqk77yMJywgJ+WFqOS/neitt++8jCcpfSR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGAke25ldyBNb3JlYml0cy5kYXRlKCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSkuY2FsZW5kYXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1dGMnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfSAoVVRDKSR7d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJyl9YFxuXHRcdFx0XHRcdFx0XHRcdFx0fe+8iWBcblx0XHRcdFx0XHRcdFx0XHQ6ICcnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiB0aXRsZSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRzdHlsZTogaXNQcm90ZWN0ZWQgPyAnY29sb3I6ICNmMDAnIDogJycsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvoXmgaLlpI3pobXpnaInLCAn5b6F5oGi5b6p6aCB6Z2iJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajpgIknLCAn5YWo6YG4JyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAncGFnZXMnKSkucHJvcCgnY2hlY2tlZCcsIHRydWUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajkuI3pgIknLCAn5YWo5LiN6YG4JyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAncGFnZXMnKSkucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZXMnLFxuXHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdGxpc3QsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGFwaW9iai5wYXJhbXMuZm9ybS5yZW5kZXIoKTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5XaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFx0fSxcblx0XHRcdHN0YXRlbGVtXG5cdFx0KTtcblx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOW3suWujOaIkCcsICflj43liKrpmaTlt7LlrozmiJAnKTtcblx0XHRjb25zdCBudW1Qcm90ZWN0ZWQgPSAkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQsICdwYWdlcycpKS5maWx0ZXIoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQuY2hlY2tlZCAmJiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZy5zdHlsZS5jb2xvciA9PT0gJ3JlZCc7XG5cdFx0fSkubGVuZ3RoO1xuXHRcdGlmIChcblx0XHRcdG51bVByb3RlY3RlZCA+IDAgJiZcblx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOato+imgeWPjeWIoOmZpCAnLCAn5oKo5q2j6KaB5Y+N5Yiq6ZmkICcpICtcblx0XHRcdFx0XHRudW1Qcm90ZWN0ZWQgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOS4quWFqOS/neaKpOmhtemdou+8jOaCqOehruWumuWQl++8nycsICcg5YCL5YWo5L+d6K236aCB6Z2i77yM5oKo56K65a6a5ZeO77yfJylcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZXMgPSBldmVudC50YXJnZXQuZ2V0Q2hlY2tlZCgncGFnZXMnKTtcblx0XHRjb25zdCByZWFzb24gPSBldmVudC50YXJnZXQucmVhc29uLnZhbHVlO1xuXHRcdGNvbnN0IHVuZGVsX3RhbGsgPSBldmVudC50YXJnZXQucmVhc29uLnZhbHVlO1xuXHRcdGlmICghcmVhc29uKSB7XG5cdFx0XHRtdy5ub3RpZnkoJ+aCqOmcgOimgeaMh+WumueQhueUseOAgicsIHtcblx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHR0YWc6ICd0d2lua2xlYmF0Y2h1bmRlbGV0ZScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChldmVudC50YXJnZXQpO1xuXHRcdGlmICghcGFnZXMpIHtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0d2luZG93LndnVUxTKCfplJnor68nLCAn6Yyv6KqkJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5rKh5LuA5LmI6KaB5Y+N5Yig6Zmk55qE77yM5Y+W5raI5pON5L2cJywgJ+aykuS7gOm6vOimgeWPjeWIqumZpOeahO+8jOWPlua2iOaTjeS9nCcpXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlVW5kZWxldGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKHdpbmRvdy53Z1VMUygn5Y+N5Yig6Zmk6aG16Z2iJywgJ+WPjeWIqumZpOmggemdoicpKTtcblx0XHRwYWdlVW5kZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRwYWdlVW5kZWxldGVyLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHRwYWdlVW5kZWxldGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRwYWdlVW5kZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0cGFnZTogcGFnZU5hbWUsXG5cdFx0XHRcdHVuZGVsX3RhbGssXG5cdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0cGFnZVVuZGVsZXRlcixcblx0XHRcdH07XG5cdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflj43liKDpmaTpobXpnaInLCAn5Y+N5Yiq6Zmk6aCB6Z2iJykgKyBwYWdlTmFtZVxuXHRcdFx0KTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRFZGl0U3VtbWFyeShgJHtyZWFzb259ICjmibnph48pYCk7XG5cdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0eXNhcmNoaXZlc19wYWdlLnN1cHByZXNzUHJvdGVjdFdhcm5pbmcoKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRNYXhSZXRyaWVzKDMpOyAvLyB0ZW1wb3JhcnkgaW5jcmVhc2UgZnJvbSAyIHRvIG1ha2UgYmF0Y2h1bmRlbGV0ZSBtb3JlIGxpa2VseSB0byBzdWNjZWVkXG5cdFx0XHR5c2FyY2hpdmVzX3BhZ2UudW5kZWxldGVQYWdlKFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMsIHBhZ2VVbmRlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MgPSB7XG5cdFx0Ly8gdGhpcyBzdHVwaWQgcGFyYW1ldGVyIG5hbWUgaXMgYSB0ZW1wb3JhcnkgdGhpbmcgdW50aWwgSSBpbXBsZW1lbnQgYW4gb3ZlcmhhdWxcblx0XHQvLyBvZiBNb3JlYml0cy53aWtpLiogY2FsbGJhY2sgcGFyYW1ldGVyc1xuXHRcdGRvRXh0cmFzOiAodGhpbmdXaXRoUGFyYW1ldGVycykgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gdGhpbmdXaXRoUGFyYW1ldGVycy5wYXJlbnRcblx0XHRcdFx0PyB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudC5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKVxuXHRcdFx0XHQ6IHRoaW5nV2l0aFBhcmFtZXRlcnMuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyB0aGUgaW5pdGlhbCBiYXRjaCBvcGVyYXRpb24ncyBqb2IgaXMgdG8gZGVsZXRlIHRoZSBwYWdlLCBhbmQgdGhhdCBoYXNcblx0XHRcdC8vIHN1Y2NlZWRlZCBieSBub3dcblx0XHRcdHBhcmFtcy5wYWdlVW5kZWxldGVyLndvcmtlclN1Y2Nlc3ModGhpbmdXaXRoUGFyYW1ldGVycyk7XG5cdFx0XHRsZXQgcXVlcnk7XG5cdFx0XHRsZXQgeXNhcmNoaXZlc19hcGk7XG5cdFx0XHRpZiAocGFyYW1zLnVuZGVsX3RhbGspIHtcblx0XHRcdFx0Y29uc3QgdGFsa3BhZ2VuYW1lID0gbmV3IG13LlRpdGxlKHBhcmFtcy5wYWdlKS5nZXRUYWxrUGFnZSgpLmdldFByZWZpeGVkVGV4dCgpO1xuXHRcdFx0XHRpZiAodGFsa3BhZ2VuYW1lICE9PSBwYXJhbXMucGFnZSkge1xuXHRcdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0cHJvcDogJ2RlbGV0ZWRyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdFx0ZHJ2cHJvcDogJ2lkcycsXG5cdFx0XHRcdFx0XHRkcnZsaW1pdDogMSxcblx0XHRcdFx0XHRcdHRpdGxlczogdGFsa3BhZ2VuYW1lLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ajgOafpeiuqOiuuumhteeahOW3suWIoOeJiOacrCcsICfmqqLmn6XoqI7oq5bpoIHnmoTlt7LliKrniYjmnKwnKSxcblx0XHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFx0VHdpbmtsZS5iYXRjaHVuZGVsZXRlLmNhbGxiYWNrcy51bmRlbGV0ZVRhbGtcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHR5c2FyY2hpdmVzX2FwaS5wYXJhbXMudGFsa1BhZ2UgPSB0YWxrcGFnZW5hbWU7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR1bmRlbGV0ZVRhbGs6IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGV4aXN0cyA9ICQoeG1sKS5maW5kKCdwYWdlOm5vdChbbWlzc2luZ10pJykubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGRlbHJldnMgPSAkKHhtbCkuZmluZCgncmV2JykuYXR0cigncmV2aWQnKTtcblx0XHRcdGlmIChleGlzdHMgfHwgIWRlbHJldnMpIHtcblx0XHRcdFx0Ly8gcGFnZSBleGlzdHMgb3IgaGFzIG5vIGRlbGV0ZWQgcmV2aXNpb25zOyBmb3JnZXQgYWJvdXQgaXRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdGFwaW9iai5wYXJhbXMudGFsa1BhZ2UsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Y+N5Yig6ZmkJywgJ+ato+WcqOWPjeWIqumZpCcpICsgYXBpb2JqLnBhcmFtcy5wYWdlICsgd2luZG93LndnVUxTKCfnmoTorqjorrrpobUnLCAn55qE6KiO6KuW6aCBJylcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOKAnCcsICflj43liKrpmaTjgIwnKSArXG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5wYWdlICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+KAneeahFtbSGVscDrorqjorrrpobV86K6o6K666aG1XV0nLCAn44CN55qEW1tIZWxwOuiojuirlumggXzoqI7oq5bpoIFdXScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlLnVuZGVsZXRlUGFnZSgpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZSwgJ2JhdGNodW5kZWxldGUnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGViYXRjaHByb3RlY3QuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlYmF0Y2hwcm90ZWN0KCQpIHtcblx0LyoqXG5cdCAqIHR3aW5rbGViYXRjaHByb3RlY3QuanM6IEJhdGNoIHByb3RlY3QgbW9kdWxlIChzeXNvcHMgb25seSlcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiUC1iYXRjaFwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nIHByb2plY3QgcGFnZXMgYW5kIHVzZXIgcGFnZXM7XG5cdCAqIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgY2F0ZWdvcmllczsgU3BlY2lhbDpQcmVmaXhJbmRleFxuXHQgKi9cblx0VHdpbmtsZS5iYXRjaHByb3RlY3QgPSAoKSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgJiZcblx0XHRcdCgobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSA+IDAgJiYgWzIsIDRdLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpKSB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxNCB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFjaywgJ+aJueS/nScsICd0dy1wYmF0Y2gnLCAn5om56YeP5L+d5oqk6ZO+5Ye66aG16Z2iJyk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC51bmxpbmtDYWNoZSA9IHt9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoJ+aJueS/nScpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3RlckxpbmsoJ+S/neaKpOadoeS+iycsICdMSUI6UFJPVCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5biu5Yqp5paH5qGjJywgJ+W5q+WKqeaWh+aqlCcpLCAnSDpUVy9ET0Mj5L+d5oqkJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfpl67popjlj43ppognLCAn5ZWP6aGM5Y+N6aWLJyksICdIVDpUVycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUuee8lui+keS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdlZGl0bW9kaWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnZWRpdG1vZGlmeScsXG5cdFx0XHRcdFx0dG9vbHRpcDogJ+S7hemZkOeOsOaciemhtemdouOAgicsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRuYW1lOiAnZWRpdGxldmVsJyxcblx0XHRcdGxhYmVsOiAn57yW6L6R5p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bGV2ZWwsXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdlZGl0ZXhwaXJ5Jyxcblx0XHRcdGxhYmVsOiAn57uI5q2i5pe26Ze077yaJyxcblx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3RocywgLy8gRGVmYXVsdCAoMiBkYXlzKSBzZXQgYWZ0ZXIgcmVuZGVyXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbW9kaWZ5LFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICfkv67mlLnnp7vliqjkv53miqQnLFxuXHRcdFx0XHRcdHZhbHVlOiAnbW92ZW1vZGlmeScsXG5cdFx0XHRcdFx0bmFtZTogJ21vdmVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDnjrDmnInpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVsZXZlbCcsXG5cdFx0XHRsYWJlbDogJ+enu+WKqOadg+mZkO+8micsXG5cdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZWxldmVsLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHQvLyBBdXRvY29uZmlybWVkIGlzIHJlcXVpcmVkIGZvciBhIG1vdmUsIHJlZHVuZGFudFxuXHRcdFx0XHQocHJvdExldmVsKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHByb3RMZXZlbC52YWx1ZSAhPT0gJ2F1dG9jb25maXJtZWQnO1xuXHRcdFx0XHR9XG5cdFx0XHQpLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVleHBpcnknLFxuXHRcdFx0bGFiZWw6ICfnu4jmraLml7bpl7TvvJonLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZW5ndGhzLCAvLyBEZWZhdWx0ICgyIGRheXMpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5kaXNhYmxlZCA9ICFldmVudC50YXJnZXQuY2hlY2tlZDtcblx0XHRcdFx0ZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlZXhwaXJ5LmRpc2FibGVkID1cblx0XHRcdFx0XHQhZXZlbnQudGFyZ2V0LmNoZWNrZWQgfHwgZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlbGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5zdHlsZS5jb2xvciA9IGV2ZW50LnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVleHBpcnkuc3R5bGUuY29sb3IgPSBldmVudC50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUueWIm+W7uuS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDkuI3lrZjlnKjnmoTpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWxldmVsJyxcblx0XHRcdGxhYmVsOiAn5Yib5bu65p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5jcmVhdGVsZXZlbCxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWV4cGlyeScsXG5cdFx0XHRsYWJlbDogJ+e7iOatouaXtumXtO+8micsXG5cdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudC50YXJnZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmRvQ3VzdG9tRXhwaXJ5KGV2ZW50LnRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsIC8vIERlZmF1bHQgKGluZGVmaW5pdGUpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdGxhYmVsOiAnJywgLy8gaG9yaXpvbnRhbCBydWxlXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvIjkv53miqTml6Xlv5fvvIknLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdHJ2cHJvcDogJ3NpemV8dXNlcicsXG5cdFx0XHRpbnByb3A6ICdwcm90ZWN0aW9uJyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH07XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDE0KSB7XG5cdFx0XHQvLyBjYXRlZ29yaWVzXG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnY2F0ZWdvcnltZW1iZXJzJztcblx0XHRcdHF1ZXJ5LmdjbXRpdGxlID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0cXVlcnkuZ2NtbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnKSB7XG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnYWxscGFnZXMnO1xuXHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID1cblx0XHRcdFx0bXcudXRpbC5nZXRQYXJhbVZhbHVlKCduYW1lc3BhY2UnKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbbmFtZT1uYW1lc3BhY2VdJylbMF0udmFsdWU7XG5cdFx0XHRxdWVyeS5nYXBwcmVmaXggPVxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ByZWZpeCcpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9cHJlZml4XScpWzBdLnZhbHVlO1xuXHRcdFx0cXVlcnkuZ2FwbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdsaW5rcyc7XG5cdFx0XHRxdWVyeS50aXRsZXMgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRxdWVyeS5ncGxsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdHVzZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0c3RhdHVzZGl2LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdFdpbmRvdy5zZXRDb250ZW50KHN0YXR1c2Rpdik7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoc3RhdHVzZGl2KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdGNvbnN0IHN0YXRlbGVtID0gbmV3IE1vcmViaXRzLnN0YXR1cygn5oqT5Y+W6aG16Z2i5YiX6KGoJyk7XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHQn5Yqg6L295Lit4oCm4oCmJyxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0KGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0XHRjb25zdCBwYWdlcyA9IChyZXNwb25zZS5xdWVyeSAmJiByZXNwb25zZS5xdWVyeS5wYWdlcykgfHwgW107XG5cdFx0XHRcdGNvbnN0IGxpc3QgPSBbXTtcblx0XHRcdFx0cGFnZXMuc29ydChUd2lua2xlLnNvcnRCeU5hbWVzcGFjZSk7XG5cdFx0XHRcdGZvciAoY29uc3QgcGFnZSBvZiBwYWdlcykge1xuXHRcdFx0XHRcdGNvbnN0IG1ldGFkYXRhID0gW107XG5cdFx0XHRcdFx0Y29uc3QgbWlzc2luZyA9ICEhcGFnZS5taXNzaW5nO1xuXHRcdFx0XHRcdGxldCBlZGl0UHJvdDtcblx0XHRcdFx0XHRpZiAobWlzc2luZykge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaCgn6aG16Z2i5LiN5a2Y5ZyoJyk7XG5cdFx0XHRcdFx0XHRlZGl0UHJvdCA9IHBhZ2UucHJvdGVjdGlvblxuXHRcdFx0XHRcdFx0XHQuZmlsdGVyKChwcm90ZWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHByb3RlY3Rpb24udHlwZSA9PT0gJ2NyZWF0ZScgJiYgcHJvdGVjdGlvbi5sZXZlbCA9PT0gJ3N5c29wJztcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0LnBvcCgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAocGFnZS5yZWRpcmVjdCkge1xuXHRcdFx0XHRcdFx0XHRtZXRhZGF0YS5wdXNoKCfph43lrprlkJEnKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChwYWdlLm5zID09PSA2KSB7XG5cdFx0XHRcdFx0XHRcdG1ldGFkYXRhLnB1c2goYOS4iuS8oOiAhe+8miR7cGFnZS5pbWFnZWluZm9bMF0udXNlcn1gLCBg5pyA5ZCO57yW6L6R6ICF77yaJHtwYWdlLnJldmlzaW9uc1swXS51c2VyfWApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChgJHttdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKHBhZ2UucmV2aXNpb25zWzBdLnNpemUpfeWtl+iKgmApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWRpdFByb3QgPSBwYWdlLnByb3RlY3Rpb25cblx0XHRcdFx0XHRcdFx0LmZpbHRlcigocHJvdGVjdGlvbikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwcm90ZWN0aW9uLnR5cGUgPT09ICdlZGl0JyAmJiBwcm90ZWN0aW9uLmxldmVsID09PSAnc3lzb3AnO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQucG9wKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChlZGl0UHJvdCkge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGEucHVzaChcblx0XHRcdFx0XHRcdFx0YCR7bWlzc2luZyA/ICfnmb3nurgnIDogJyd95YWo5L+d5oqkJHtcblx0XHRcdFx0XHRcdFx0XHRlZGl0UHJvdC5leHBpcnkgPT09ICdpbmZpbml0eSdcblx0XHRcdFx0XHRcdFx0XHRcdD8gJ++8iOawuOS5he+8iSdcblx0XHRcdFx0XHRcdFx0XHRcdDogYO+8iCR7bmV3IE1vcmViaXRzLmRhdGUoZWRpdFByb3QuZXhwaXJ5KS5jYWxlbmRhcigndXRjJyl9IChVVEMp6L+H5pyf77yJYFxuXHRcdFx0XHRcdFx0XHR9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3Qge3RpdGxlfSA9IHBhZ2U7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdGxhYmVsOiB0aXRsZSArIChtZXRhZGF0YS5sZW5ndGggPiAwID8gYCAoJHttZXRhZGF0YS5qb2luKCc7ICcpfSlgIDogJycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHN0eWxlOiBlZGl0UHJvdCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6ICflvoXkv53miqTpobXpnaInLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YWo6YCJJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YWo5LiN6YCJJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlcycsXG5cdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0bGlzdCxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0XHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0XHRcdC8vIFNldCBkZWZhdWx0c1xuXHRcdFx0XHRyZXN1bHQuZWRpdGV4cGlyeS52YWx1ZSA9ICcyIGRheXMnO1xuXHRcdFx0XHRyZXN1bHQubW92ZWV4cGlyeS52YWx1ZSA9ICcyIGRheXMnO1xuXHRcdFx0XHRyZXN1bHQuY3JlYXRlZXhwaXJ5LnZhbHVlID0gJ2luZmluaXR5Jztcblx0XHRcdFx0Zm9yIChjb25zdCBsaW5rcyBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAn5Liq6aG16Z2iJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQXJyb3dMaW5rcyhsaW5rcyk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRzdGF0ZWxlbVxuXHRcdCk7XG5cdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jdXJyZW50UHJvdGVjdENvdW50ZXIgPSAwO1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jdXJyZW50cHJvdGVjdG9yID0gMDtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5om56YeP5L+d5oqk5a6M5oiQJztcblx0XHRjb25zdCBmb3JtID0gZXZlbnQudGFyZ2V0O1xuXHRcdGNvbnN0IG51bVByb3RlY3RlZCA9ICQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGZvcm0sICfkuKrpobXpnaInKSkuZmlsdGVyKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBlbGVtZW50LmNoZWNrZWQgJiYgZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcuc3R5bGUuY29sb3IgPT09ICcjZjAwJztcblx0XHR9KS5sZW5ndGg7XG5cdFx0aWYgKFxuXHRcdFx0bnVtUHJvdGVjdGVkID4gMCAmJlxuXHRcdFx0IWNvbmZpcm0oYOaCqOWNs+WwhuWvuSR7bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihudW1Qcm90ZWN0ZWQpfeS4quWFqOS/neaKpOmhtemdoui/m+ihjOaTjeS9nOOAguaCqOehruWumuWQl++8n2ApXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRpZiAoIWlucHV0LnJlYXNvbikge1xuXHRcdFx0bXcubm90aWZ5KCfmgqjlv4Xpobvnu5nlh7rkuIDkuKrnkIbnlLHjgIInLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJhdGNocHJvdGVjdCcsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRpZiAoaW5wdXQucGFnZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoJ0Vycm9yJywgJ+W+heS/neaKpOmhtemdouS4jeWtmOWcqO+8jOeoi+W6j+e7iOatoicpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBiYXRjaE9wZXJhdGlvbiA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbign5bqU55So5L+d5oqk6K6+572uJyk7XG5cdFx0YmF0Y2hPcGVyYXRpb24uc2V0T3B0aW9uKCdjaHVua1NpemUnLCBUd2lua2xlLmdldFByZWYoJ2JhdGNoQ2h1bmtzJykpO1xuXHRcdGJhdGNoT3BlcmF0aW9uLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHRiYXRjaE9wZXJhdGlvbi5zZXRQYWdlTGlzdChpbnB1dC5wYWdlcyk7XG5cdFx0YmF0Y2hPcGVyYXRpb24ucnVuKChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0dGl0bGVzOiBwYWdlTmFtZSxcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdGDmraPlnKjmo4Dmn6XpobXpnaLigJwke3BhZ2VOYW1lfeKAneaYr+WQpuWtmOWcqGAsXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFja3MubWFpbixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0YmF0Y2hPcGVyYXRpb24ud29ya2VyRmFpbHVyZVxuXHRcdFx0KTtcblx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHtcblx0XHRcdFx0cGFnZTogcGFnZU5hbWUsXG5cdFx0XHRcdGJhdGNoT3BlcmF0aW9uLFxuXHRcdFx0XHQuLi5pbnB1dCxcblx0XHRcdH07XG5cdFx0XHR5c2FyY2hpdmVzX2FwaS5wb3N0KCk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmNhbGxiYWNrcyA9IHtcblx0XHRtYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0aWYgKHJlc3BvbnNlLnF1ZXJ5Lm5vcm1hbGl6ZWQpIHtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5wYWdlID0gcmVzcG9uc2UucXVlcnkubm9ybWFsaXplZFswXS50bztcblx0XHRcdH1cblx0XHRcdGNvbnN0IGV4aXN0cyA9ICFyZXNwb25zZS5xdWVyeS5wYWdlc1swXS5taXNzaW5nO1xuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoYXBpb2JqLnBhcmFtcy5wYWdlLCBg5q2j5Zyo5L+d5oqkJHthcGlvYmoucGFyYW1zLnBhZ2V9YCk7XG5cdFx0XHRsZXQgdGFrZW5BY3Rpb24gPSBmYWxzZTtcblx0XHRcdGlmIChleGlzdHMgJiYgYXBpb2JqLnBhcmFtcy5lZGl0bW9kaWZ5KSB7XG5cdFx0XHRcdHBhZ2Uuc2V0RWRpdFByb3RlY3Rpb24oYXBpb2JqLnBhcmFtcy5lZGl0bGV2ZWwsIGFwaW9iai5wYXJhbXMuZWRpdGV4cGlyeSk7XG5cdFx0XHRcdHRha2VuQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChleGlzdHMgJiYgYXBpb2JqLnBhcmFtcy5tb3ZlbW9kaWZ5KSB7XG5cdFx0XHRcdHBhZ2Uuc2V0TW92ZVByb3RlY3Rpb24oYXBpb2JqLnBhcmFtcy5tb3ZlbGV2ZWwsIGFwaW9iai5wYXJhbXMubW92ZWV4cGlyeSk7XG5cdFx0XHRcdHRha2VuQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmICghZXhpc3RzICYmIGFwaW9iai5wYXJhbXMuY3JlYXRlbW9kaWZ5KSB7XG5cdFx0XHRcdHBhZ2Uuc2V0Q3JlYXRlUHJvdGVjdGlvbihhcGlvYmoucGFyYW1zLmNyZWF0ZWxldmVsLCBhcGlvYmoucGFyYW1zLmNyZWF0ZWV4cGlyeSk7XG5cdFx0XHRcdHRha2VuQWN0aW9uID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmICghdGFrZW5BY3Rpb24pIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0YOato+WcqOS/neaKpOKAnCR7YXBpb2JqLnBhcmFtcy5wYWdlfWAsXG5cdFx0XHRcdFx0YOKAnemhtemdoiR7ZXhpc3RzID8gJ+WtmOWcqCcgOiAn5LiN5a2Y5ZyoJ33vvJvml6Dkuovlj6/lgZrvvIzot7Pov4dgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuYmF0Y2hPcGVyYXRpb24ud29ya2VyRmFpbHVyZShhcGlvYmopO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KGFwaW9iai5wYXJhbXMucmVhc29uKTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS5wcm90ZWN0KGFwaW9iai5wYXJhbXMuYmF0Y2hPcGVyYXRpb24ud29ya2VyU3VjY2VzcywgYXBpb2JqLnBhcmFtcy5iYXRjaE9wZXJhdGlvbi53b3JrZXJGYWlsdXJlKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmJhdGNocHJvdGVjdCwgJ2JhdGNocHJvdGVjdCcpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWNsb3NlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWNsb3NlKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiB0d2lua2xlY2xvc2UuanM6IFhGRCBjbG9zaW5nIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IExpbmtzIGFmdGVyIHNlY3Rpb24gaGVhZGluZ1xuXHQgKiBBY3RpdmUgb246IEFmRCBkYXRlZCBhcmNoaXZlIHBhZ2VzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBUd2lua2xlQ29uZmlnXG5cdCAqL1xuXHRUd2lua2xlLmNsb3NlID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdFR3aW5rbGUuZ2V0UHJlZignWGZkQ2xvc2UnKSA9PT0gJ2hpZGUnIHx8XG5cdFx0XHQhL17mnInlhb3moaPmoYjppoYoW18gXXRhbGspPzrlrZjlup/orqjorrpcXC/orrDlvZUoPzpcXC9cXGQrKXszfSQvLnRlc3QobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRtdy5ob29rKCd3aWtpcGFnZS5jb250ZW50JykuYWRkKChpdGVtKSA9PiB7XG5cdFx0XHRpZiAoaXRlbS5hdHRyKCdpZCcpID09PSAnbXctY29udGVudC10ZXh0Jykge1xuXHRcdFx0XHRUd2lua2xlLmNsb3NlLmFkZExpbmtzKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuYWRkTGlua3MgPSAoKSA9PiB7XG5cdFx0Y29uc3Qgc3BhblRhZyA9IChjb2xvciwgY29udGVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHNwYW4uc3R5bGUuY29sb3IgPSBjb2xvcjtcblx0XHRcdHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpO1xuXHRcdFx0cmV0dXJuIHNwYW47XG5cdFx0fTtcblx0XHQkYm9keVxuXHRcdFx0LmZpbmQoXG5cdFx0XHRcdCdoMTpoYXMoLm13LWhlYWRsaW5lKSxoMjpoYXMoLm13LWhlYWRsaW5lKSxoMzpoYXMoLm13LWhlYWRsaW5lKSxoNDpoYXMoLm13LWhlYWRsaW5lKSxoNTpoYXMoLm13LWhlYWRsaW5lKSxoNjpoYXMoLm13LWhlYWRsaW5lKScsXG5cdFx0XHRcdCcjYm9keUNvbnRlbnQnXG5cdFx0XHQpXG5cdFx0XHQuZWFjaCgoaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0ZWxlbWVudC5kYXRhc2V0LnNlY3Rpb24gPSBpbmRleCArIDE7XG5cdFx0XHR9KTtcblx0XHRjb25zdCBzZWxlY3RvciA9ICc6aGFzKC5tdy1oZWFkbGluZSBhOm9ubHktb2YtdHlwZSk6bm90KDpoYXMoKyBkaXYuTmF2RnJhbWUpKSc7XG5cdFx0Y29uc3QgdGl0bGVzID0gJGJvZHkuZmluZCgnI2JvZHlDb250ZW50JykuZmluZChgaDIke3NlbGVjdG9yfTpub3QoOmhhcygrIHAgKyBoMykpLCBoMyR7c2VsZWN0b3J9YCk7IC8vIHJlYWxseSBuZWVkcyB0byB3b3JrIG9uXG5cdFx0Y29uc3QgZGVsTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0cm9uZycpO1xuXHRcdGNvbnN0IGRlbExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0ZGVsTGluay5hcHBlbmRDaGlsZChzcGFuVGFnKCdCbGFjaycsICdbJykpO1xuXHRcdGRlbExpbmsuYXBwZW5kQ2hpbGQoc3BhblRhZygnUmVkJywgd2luZG93LndnVUxTKCflhbPpl63orqjorronLCAn6Zec6ZaJ6KiO6KuWJykpKTtcblx0XHRkZWxMaW5rLmFwcGVuZENoaWxkKHNwYW5UYWcoJ0JsYWNrJywgJ10nKSk7XG5cdFx0ZGVsTm9kZS5hcHBlbmRDaGlsZChkZWxMaW5rKTtcblx0XHRmb3IgKGNvbnN0IGN1cnJlbnQgb2YgdGl0bGVzKSB7XG5cdFx0XHRjb25zdCBoZWFkbGluZWhyZWYgPSAkKGN1cnJlbnQpLmZpbmQoJy5tdy1oZWFkbGluZSBhJykuYXR0cignaHJlZicpO1xuXHRcdFx0aWYgKGhlYWRsaW5laHJlZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGxldCB0aXRsZSA9IG51bGw7XG5cdFx0XHRcdGlmIChoZWFkbGluZWhyZWYuaW5jbHVkZXMoJ3JlZGxpbms9MScpKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBoZWFkbGluZWhyZWYuc2xpY2UoMTksIC0yMik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgbSA9IGhlYWRsaW5laHJlZi5tYXRjaCgvXFwvd2lraVxcLyhbXj9dKykvLCAnJDEnKTtcblx0XHRcdFx0XHRpZiAobSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0WywgdGl0bGVdID0gbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRpdGxlICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBkZWNvZGVVUklDb21wb25lbnQodGl0bGUpO1xuXHRcdFx0XHRcdHRpdGxlID0gdGl0bGUucmVwbGFjZSgvXy9nLCAnICcpOyAvLyBOb3JtYWxpemUgZm9yIHVzaW5nIGluIGludGVyZmFjZSBhbmQgc3VtbWFyeVxuXHRcdFx0XHRcdGNvbnN0IHBhZ2Vub3RleGlzdCA9ICQoY3VycmVudCkuZmluZCgnLm13LWhlYWRsaW5lIGEnKS5oYXNDbGFzcygnbmV3Jyk7XG5cdFx0XHRcdFx0Y29uc3Qge3NlY3Rpb259ID0gY3VycmVudC5kYXRhc2V0O1xuXHRcdFx0XHRcdGNvbnN0IFtub2RlXSA9IGN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCgnLm13LWhlYWRsaW5lJyk7XG5cdFx0XHRcdFx0bm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpKTtcblx0XHRcdFx0XHRjb25zdCB0bXBOb2RlID0gZGVsTm9kZS5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRcdFx0dG1wTm9kZS5maXJzdENoaWxkLmhyZWYgPSBgIyR7c2VjdGlvbn1gO1xuXHRcdFx0XHRcdCQodG1wTm9kZS5maXJzdENoaWxkKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrKHRpdGxlLCBzZWN0aW9uLCBwYWdlbm90ZXhpc3QpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQodG1wTm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdC8vIEtlZXAgdGhpcyBzeW5jaHJvbml6ZWQgd2l0aCB7e2RlbGh9fVxuXHRUd2lua2xlLmNsb3NlLmNvZGVzID0gW1xuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfor7fmsYLml6DmlYgnLCAn6KuL5rGC54Sh5pWIJyksXG5cdFx0XHR2YWx1ZToge1xuXHRcdFx0XHRpcjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+axguaXoOaViCcsICfoq4vmsYLnhKHmlYgnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0cmVwOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YeN5aSN5o+Q5Ye677yM5peg5pWIJywgJ+mHjeikh+aPkOWHuu+8jOeEoeaViCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuZToge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ebruagh+mhtemdouaIluaWh+S7tuS4jeWtmOWcqO+8jOaXoOaViCcsICfnm67mqJnpoIHpnaLmiJbmqpTmoYjkuI3lrZjlnKjvvIznhKHmlYgnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bnE6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DliKDogIXmnKrojrflj5bmj5DliKDotYTmoLzvvIzml6DmlYgnLCAn5o+Q5Yiq6ICF5pyq5Y+W5b6X5o+Q5Yiq6LOH5qC877yM54Sh5pWIJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiAn5L+d55WZJyxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGs6IHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/neeVmScsXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzazoge1xuXHRcdFx0XHRcdGxhYmVsOiAn5b+r6YCf5L+d55WZJyxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0dGs6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmoLml7bkv53nlZnvvIzmlLnmjILnu7TmiqTmqKHmnb/vvIjlhbPms6jluqbnrYnvvIknLCAn5pqr5pmC5L+d55WZ77yM5pS55o6b57at6K235qih5p2/77yI6Zec5rOo5bqm562J77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5pqC5pe25L+d55WZJywgJ+aaq+aZguS/neeVmScpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRycjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+axgueQhueUsea2iOWksScsICfoq4vmsYLnkIbnlLHmtojlpLEnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpID09PSAnbm9uYWRtaW5vbmx5Jyxcblx0XHRcdFx0fSxcblx0XHRcdFx0ZGFuOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig5ZCO6YeN5bu6JywgJ+WIquW+jOmHjeW7uicpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0ZDoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdkZWwnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpID09PSAnYWxsJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0aWM6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm77lg4/lm6DkvrXmnYPooqvliKAnLCAn5ZyW5YOP5Zug5L615qyK6KKr5YiqJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpCcsICflv6vpgJ/liKrpmaQnKSxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdHNkOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b+r6YCf5Yig6ZmkJywgJ+W/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxzc2Q6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DmnaXmupDmiJbokZfkvZzmnYPkv6Hmga/vvIzlv6vpgJ/liKDpmaQnLCAn54Sh5L6G5rqQ5oiW54mI5qyK6LOH6KiK77yM5b+r6YCf5Yiq6ZmkJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0c3ZnOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey5pS555SoU1ZH5Zu+5b2i77yM5b+r6YCf5Yig6ZmkJywgJ+W3suaUueeUqFNWR+WcluW9ou+8jOW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRyZXA6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpJrmrKHooqvliKDpmaTvvIzmnaHnm67plIHlrponLCAn5aSa5qyh6KKr5Yiq6Zmk77yM5qKd55uu6Y6W5a6aJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WFtuS7luWkhOeQhuaWueazlScsICflhbbku5bomZXnkIbmlrnms5UnKSxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGM6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazkuqTkvrXmnYMnLCAn6L2J5Lqk5L615qyKJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnbm9vcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHI6IHtcblx0XHRcdFx0XHRsYWJlbDogJ+mHjeWumuWQkScsXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjcjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIhuexu+mHjeWumuWQkScsICfliIbpoZ7ph43lrprlkJEnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG06IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vliqgnLCAn56e75YuVJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtZXJnZToge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W5tuWFpScsICfkvbXlhaUnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1lcmdlYXBwcm92ZWQ6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhYHorrjlubblhaUnLCAn5YWB6Kix5L215YWlJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuYzoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoOWFseivhuaaguaXtuS/neeVmScsICfnhKHlhbHorZjmmqvmmYLkv53nlZknKSxcblx0XHRcdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCfml6DlhbHor4YnLCAn54Sh5YWx6K2YJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2sgPSAodGl0bGUsIHNlY3Rpb24sIG5vb3ApID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDQxMCwgMjAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoYOWFs+mXreWtmOW6n+iuqOiuuiBcXHUwMEI3ICR7dGl0bGV9YCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluaygn5a2Y5bqf6K6o6K666K6+572uJywgJ0g6VFcvUFJFRiPlhbPpl63lrZjlup/orqjorronKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluaygnVHdpbmtsZeW4ruWKqScsICdIOlRXL0RPQyPlhbPpl63lrZjlup/orqjorronKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdGxhYmVsOiAn5aSE55CG57uT5p6c77yaJyxcblx0XHRcdG5hbWU6ICdzdWJfZ3JvdXAnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suY2hhbmdlX2NvZGUsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdzZHJlYXNvbicsXG5cdFx0XHRsYWJlbDogJ+mAn+WIoOeQhueUse+8micsXG5cdFx0XHR0b29sdGlwOiAn55So5LqO5Yig6Zmk5pel5b+X77yM5L2/55Soe3tkZWxldGV9feeahOWPguaVsOagvOW8j++8jOS+i+WmgiBBMSDmiJYgQTF8RzEnLFxuXHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAncmVtYXJrJyxcblx0XHRcdGxhYmVsOiAn6KGl5YWF6K+05piO77yaJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICflj6rlhbPpl63orqjorrrvvIzkuI3ov5vooYzlhbbku5bmk43kvZwnLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm9vcCcsXG5cdFx0XHRcdFx0bmFtZTogJ25vb3AnLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9vcGVyYXRpb24sXG5cdFx0XHRcdFx0Y2hlY2tlZDogbm9vcCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0aWYgKG5ldyBtdy5UaXRsZSh0aXRsZSkubmFtZXNwYWNlICUgMiA9PT0gMCAmJiBuZXcgbXcuVGl0bGUodGl0bGUpLm5hbWVzcGFjZSAhPT0gMikge1xuXHRcdFx0Ly8gaGlkZSBvcHRpb24gZm9yIHVzZXIgcGFnZXMsIHRvIGF2b2lkIGFjY2lkZW50YWxseSBkZWxldGluZyB1c2VyIHRhbGsgcGFnZVxuXHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfliKDpmaTlhbPogZTnmoTorqjorrrpobUnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICd0YWxrcGFnZScsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogJ+WIoOmZpOaXtumZhOW4puWIoOmZpOatpOmhtemdoueahOiuqOiuuumhteOAgicsXG5cdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAn5Yig6Zmk6YeN5a6a5ZCR6aG1Jyxcblx0XHRcdFx0XHR2YWx1ZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0bmFtZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0dG9vbHRpcDogJ+WIoOmZpOWIsOatpOmhteeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRldmVudDogKGUpID0+IHtcblx0XHRcdFx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Y29uc3QgW3N1Yl9ncm91cF0gPSByZXN1bHQucXVlcnlTZWxlY3RvckFsbCgnc2VsZWN0Jyk7IC8vIGhhY2tcblx0XHRjb25zdCByZXN1bHREYXRhID0ge1xuXHRcdFx0dGl0bGUsXG5cdFx0XHRzZWN0aW9uOiBOdW1iZXIucGFyc2VJbnQoc2VjdGlvbiwgMTApLFxuXHRcdFx0bm9vcCxcblx0XHR9O1xuXHRcdCQocmVzdWx0KS5kYXRhKCdyZXN1bHREYXRhJywgcmVzdWx0RGF0YSk7XG5cdFx0Ly8gd29ya2VyIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgY29tYm8gYm94IGVudHJpZXNcblx0XHRjb25zdCBjcmVhdGVFbnRyaWVzID0gKGNvbnRlbnRzLCBjb250YWluZXIpID0+IHtcblx0XHRcdGZvciAoY29uc3QgW2l0ZW1LZXksIGl0ZW1Qcm9wZXJ0aWVzXSBvZiBPYmplY3QuZW50cmllcyhjb250ZW50cykpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gdHlwZW9mIGl0ZW1LZXkgPT09ICdzdHJpbmcnID8gaXRlbUtleSA6IGl0ZW1Qcm9wZXJ0aWVzLnZhbHVlO1xuXHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogYCR7a2V5fe+8miR7aXRlbVByb3BlcnRpZXMubGFiZWx9YCxcblx0XHRcdFx0XHR2YWx1ZToga2V5LFxuXHRcdFx0XHRcdHNlbGVjdGVkOiBpdGVtUHJvcGVydGllcy5zZWxlY3RlZCxcblx0XHRcdFx0XHRkaXNhYmxlZDpcblx0XHRcdFx0XHRcdChUd2lua2xlLmdldFByZWYoJ1hmZENsb3NlJykgIT09ICdhbGwnICYmIGl0ZW1Qcm9wZXJ0aWVzLmFkbWlub25seSkgfHwgaXRlbVByb3BlcnRpZXMuZGlzYWJsZWQsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBlbGVtUmVuZGVyZWQgPSBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWxlbS5yZW5kZXIoKSk7XG5cdFx0XHRcdCQoZWxlbVJlbmRlcmVkKS5kYXRhKCdtZXNzYWdlRGF0YScsIGl0ZW1Qcm9wZXJ0aWVzKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS5jbG9zZS5jb2Rlcykge1xuXHRcdFx0bGV0IG9wdGdyb3VwID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0bGFiZWw6IGdyb3VwLmtleSxcblx0XHRcdH0pO1xuXHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5yZW5kZXIoKTtcblx0XHRcdHN1Yl9ncm91cC5hcHBlbmRDaGlsZChvcHRncm91cCk7XG5cdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdGNyZWF0ZUVudHJpZXMoZ3JvdXAudmFsdWUsIG9wdGdyb3VwKTtcblx0XHR9XG5cdFx0Y29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldmVudC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5zdWJfZ3JvdXAuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suY2hhbmdlX29wZXJhdGlvbiA9IChlKSA9PiB7XG5cdFx0Y29uc3Qgbm9vcCA9IGUudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0Y29uc3QgY29kZSA9IGUudGFyZ2V0LmZvcm0uc3ViX2dyb3VwLnZhbHVlO1xuXHRcdGNvbnN0IG1lc3NhZ2VEYXRhID0gJChlLnRhcmdldC5mb3JtLnN1Yl9ncm91cCkuZmluZChgb3B0aW9uW3ZhbHVlPVwiJHtjb2RlfVwiXWApLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0Y29uc3Qge3RhbGtwYWdlfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3Qge3JlZGlyZWN0c30gPSBlLnRhcmdldC5mb3JtO1xuXHRcdGlmIChub29wIHx8IG1lc3NhZ2VEYXRhLmFjdGlvbiA9PT0gJ2tlZXAnKSB7XG5cdFx0XHRpZiAodGFsa3BhZ2UpIHtcblx0XHRcdFx0dGFsa3BhZ2UuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZWRpcmVjdHMuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRhbGtwYWdlKSB7XG5cdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9jb2RlID0gKGUpID0+IHtcblx0XHRjb25zdCByZXN1bHREYXRhID0gJChlLnRhcmdldC5mb3JtKS5kYXRhKCdyZXN1bHREYXRhJyk7XG5cdFx0Y29uc3QgbWVzc2FnZURhdGEgPSAkKGUudGFyZ2V0KS5maW5kKGBvcHRpb25bdmFsdWU9XCIke2UudGFyZ2V0LnZhbHVlfVwiXWApLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0Y29uc3Qge25vb3B9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRjb25zdCB7dGFsa3BhZ2V9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRjb25zdCB7cmVkaXJlY3RzfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0aWYgKHJlc3VsdERhdGEubm9vcCB8fCBtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdub29wJykge1xuXHRcdFx0bm9vcC5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdG5vb3AuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKHRhbGtwYWdlKSB7XG5cdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0dGFsa3BhZ2UuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdHJlZGlyZWN0cy5kaXNhYmxlZCA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG5vb3AuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0bm9vcC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKG1lc3NhZ2VEYXRhLmFjdGlvbiA9PT0gJ2tlZXAnKSB7XG5cdFx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRhbGtwYWdlLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRyZWRpcmVjdHMuZGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmIChlLnRhcmdldC52YWx1ZSA9PT0gJ3NkJykge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnNkcmVhc29uLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suZXZhbHVhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IGNvZGUgPSBlLnRhcmdldC5zdWJfZ3JvdXAudmFsdWU7XG5cdFx0Y29uc3QgcmVzdWx0RGF0YSA9ICQoZS50YXJnZXQpLmRhdGEoJ3Jlc3VsdERhdGEnKTtcblx0XHRjb25zdCBtZXNzYWdlRGF0YSA9ICQoZS50YXJnZXQuc3ViX2dyb3VwKS5maW5kKGBvcHRpb25bdmFsdWU9XCIke2NvZGV9XCJdYCkuZGF0YSgnbWVzc2FnZURhdGEnKTtcblx0XHRjb25zdCBub29wID0gZS50YXJnZXQubm9vcC5jaGVja2VkO1xuXHRcdGNvbnN0IHRhbGtwYWdlID0gZS50YXJnZXQudGFsa3BhZ2UgJiYgZS50YXJnZXQudGFsa3BhZ2UuY2hlY2tlZDtcblx0XHRjb25zdCByZWRpcmVjdHMgPSBlLnRhcmdldC5yZWRpcmVjdHMuY2hlY2tlZDtcblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR0aXRsZTogcmVzdWx0RGF0YS50aXRsZSxcblx0XHRcdGNvZGUsXG5cdFx0XHRyZW1hcms6IGUudGFyZ2V0LnJlbWFyay52YWx1ZSxcblx0XHRcdHNkcmVhc29uOiBlLnRhcmdldC5zZHJlYXNvbi52YWx1ZSxcblx0XHRcdHNlY3Rpb246IHJlc3VsdERhdGEuc2VjdGlvbixcblx0XHRcdHBhcmVudFNlY3Rpb246IHJlc3VsdERhdGEucGFyZW50U2VjdGlvbixcblx0XHRcdG1lc3NhZ2VEYXRhLFxuXHRcdFx0dGFsa3BhZ2UsXG5cdFx0XHRyZWRpcmVjdHMsXG5cdFx0fTtcblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5pON5L2c5a6M5oiQJztcblx0XHRpZiAobm9vcCB8fCBtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdub29wJykge1xuXHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzd2l0Y2ggKG1lc3NhZ2VEYXRhLmFjdGlvbikge1xuXHRcdFx0XHRjYXNlICdkZWwnOlxuXHRcdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmRlbChwYXJhbXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdrZWVwJzoge1xuXHRcdFx0XHRcdGNvbnN0IHlzYXJjaGl2ZXNfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFyYW1zLnRpdGxlLCAn56e76Zmk5a2Y5bqf6K6o6K665qih5p2/Jyk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmtlZXApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0bXcubm90aWZ5KGDlhbPpl63lrZjlup/orqjorrrvvJrmnKrlrprkuYkgJHtjb2RlfWAsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjbG9zZScsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcyA9IHtcblx0XHRkZWw6IChwYXJhbXMpID0+IHtcblx0XHRcdGxldCBxdWVyeTtcblx0XHRcdGxldCB5c2FyY2hpdmVzX2FwaTtcblx0XHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFyYW1zLnRpdGxlLCAn5Yig6Zmk6aG16Z2iJyk7XG5cdFx0XHRpZiAocGFyYW1zLmNvZGUgPT09ICdzZCcpIHtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnBhcnNlV2lraXRleHQocGFyYW1zLnRpdGxlLCBge3tkZWxldGV8JHtwYXJhbXMuc2RyZWFzb259fX1gLCAocmVhc29uKSA9PiB7XG5cdFx0XHRcdFx0cmVhc29uID0gcHJvbXB0KCfovpPlhaXliKDpmaTnkIbnlLHvvIzmiJbngrnlh7vnoa7lrprku6XmjqXlj5foh6rliqjnlJ/miJDnmoTvvJonLCByZWFzb24pO1xuXHRcdFx0XHRcdGlmIChyZWFzb24gPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdHBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLndhcm4oJ+ayoeacieaJp+ihjOWIoOmZpCcpO1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KHJlYXNvbik7XG5cdFx0XHRcdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdHBhZ2UuZGVsZXRlUGFnZSgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy50YWxrZW5kKHBhcmFtcyk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShg5a2Y5bqf6K6o6K666YCa6L+H77yaW1ske213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX0jJHtwYXJhbXMudGl0bGV9XV1gKTtcblx0XHRcdFx0cGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2UuZGVsZXRlUGFnZSgoKSA9PiB7XG5cdFx0XHRcdFx0cGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMucmVkaXJlY3RzKSB7XG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHR0aXRsZXM6IHBhcmFtcy50aXRsZSxcblx0XHRcdFx0XHRwcm9wOiAncmVkaXJlY3RzJyxcblx0XHRcdFx0XHRyZGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0fTtcblxuXHRcdFx0XHR5c2FyY2hpdmVzX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHQn5q2j5Zyo6I635Y+W6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5kZWxldGVSZWRpcmVjdHNNYWluXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWxrUGFnZSkge1xuXHRcdFx0XHRjb25zdCBwYWdlVGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYXJhbXMudGl0bGUpO1xuXHRcdFx0XHRpZiAocGFnZVRpdGxlICYmIHBhZ2VUaXRsZS5uYW1lc3BhY2UgJSAyID09PSAwICYmIHBhZ2VUaXRsZS5uYW1lc3BhY2UgIT09IDIpIHtcblx0XHRcdFx0XHRwYWdlVGl0bGUubmFtZXNwYWNlKys7IC8vIG5vdyBwYWdlVGl0bGUgaXMgdGhlIHRhbGsgcGFnZSB0aXRsZSFcblx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHRpdGxlczogcGFnZVRpdGxlLnRvVGV4dCgpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHQn5q2j5Zyo5qOA5p+l6K6o6K666aG16Z2i5piv5ZCm5a2Y5ZyoJyxcblx0XHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MuZGVsZXRlVGFsa1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHRcdHlzYXJjaGl2ZXNfYXBpLmFwaW9iai5wYXJhbXMudGFsa1BhZ2UgPSBwYWdlVGl0bGUudG9UZXh0KCk7XG5cdFx0XHRcdFx0eXNhcmNoaXZlc19hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHR9LFxuXHRcdGRlbGV0ZVJlZGlyZWN0c01haW46IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IHBhZ2VzID0gJCh4bWwpXG5cdFx0XHRcdC5maW5kKCdyZCcpXG5cdFx0XHRcdC5tYXAoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5nZXQoKTtcblx0XHRcdGlmIChwYWdlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmVkaXJlY3REZWxldGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOWIsCAnLCAn5q2j5Zyo5Yiq6Zmk5YiwICcpICtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLnRpdGxlICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDnmoTph43lrprlkJEnLCAnIOeahOmHjeaWsOWwjuWQkScpXG5cdFx0XHQpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaGRlbGV0ZUNodW5rcycpKTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIucnVuKChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHBhZ2VOYW1lLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6ZmkICcsICfmraPlnKjliKrpmaQgJykgKyBwYWdlTmFtZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR5c2FyY2hpdmVzX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdFx0YFtbTElCOkNTRCNHNXxHNV1d77yaJHt3aW5kb3cud2dVTFMoJ+aMh+WQkeW3suWIoOmhtemdouKAnCcsICfmjIflkJHlt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMudGl0bGV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn4oCd55qE6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRcdCfjgI3nmoTph43mlrDlsI7lkJEnXG5cdFx0XHRcdFx0KX1gXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5kZWxldGVQYWdlKHJlZGlyZWN0RGVsZXRlci53b3JrZXJTdWNjZXNzLCByZWRpcmVjdERlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGRlbGV0ZVRhbGs6IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGV4aXN0cyA9ICQoeG1sKS5maW5kKCdwYWdlOm5vdChbbWlzc2luZ10pJykubGVuZ3RoID4gMDtcblx0XHRcdGlmICghZXhpc3RzKSB7XG5cdFx0XHRcdC8vIG5vIHRhbGsgcGFnZTsgZm9yZ2V0IGFib3V0IGl0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnRhbGtQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOmhtemdoiAnLCAn5q2j5Zyo5Yiq6Zmk6aCB6Z2iICcpICtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLnRpdGxlICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDnmoTorqjorrrpobUnLCAnIOeahOiojuirlumggScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0YFtbTElCOkNTRCNHNXxHNV1d77yaJHt3aW5kb3cud2dVTFMoJ+W3suWIoOmhtemdouKAnCcsICflt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMudGl0bGV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+KAneeahFtbSGVscDrorqjorrrpobV86K6o6K666aG1XV0nLFxuXHRcdFx0XHRcdCfjgI3nmoRbW0hlbHA66KiO6KuW6aCBfOiojuirlumggV1dJ1xuXHRcdFx0XHQpfWBcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2UuZGVsZXRlUGFnZSgpO1xuXHRcdH0sXG5cdFx0a2VlcDogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRpZiAoIXBhZ2VvYmouZXhpc3RzKCkpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoJ+mhtemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIoOmZpCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IHBhZ2V0aXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhcmFtcy50aXRsZSk7XG5cdFx0XHRpZiAocGFnZXRpdGxlLmdldE5hbWVzcGFjZUlkKCkgJSAyID09PSAwKSB7XG5cdFx0XHRcdGNvbnN0IHRhbGtwYWdldGl0bGUgPSBuZXcgbXcuVGl0bGUocGFnZXRpdGxlLmdldE1haW5UZXh0KCksIHBhZ2V0aXRsZS5nZXROYW1lc3BhY2VJZCgpICsgMSk7XG5cdFx0XHRcdGNvbnN0IHRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHR0YWxrcGFnZXRpdGxlLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDorqjorrrpobUnLCAn5qiZ6KiY6KiO6KuW6aCBJylcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcmVhc29uID0gcGFyYW1zLm1lc3NhZ2VEYXRhLnZhbHVlIHx8IHBhcmFtcy5tZXNzYWdlRGF0YS5sYWJlbDtcblx0XHRcdFx0Y29uc3QgdmZka2VwdCA9IGB7e09sZCB2ZmQgbXVsdGl8JHttdy5jb25maWdcblx0XHRcdFx0XHQuZ2V0KCd3Z1BhZ2VOYW1lJylcblx0XHRcdFx0XHQuc3BsaXQoJy8nKVxuXHRcdFx0XHRcdC5zbGljZSgyKVxuXHRcdFx0XHRcdC5qb2luKCcvJyl9fCR7cmVhc29ufX19XFxuYDtcblx0XHRcdFx0dGFsa3BhZ2Uuc2V0UHJlcGVuZFRleHQodmZka2VwdCk7XG5cdFx0XHRcdHRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KGBbWyR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX1dXe+8miR7cmVhc29ufWApO1xuXHRcdFx0XHR0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0dGFsa3BhZ2UucHJlcGVuZCgpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IG5ld3RleHQgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdC88bm9pbmNsdWRlPlxccypcXHtcXHsoW3JzYWlmdGNtdl1mZCkoXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyo8XFwvbm9pbmNsdWRlPlxccyovZ2ksXG5cdFx0XHRcdCcnXG5cdFx0XHQpO1xuXHRcdFx0bmV3dGV4dCA9IG5ld3RleHQucmVwbGFjZSgvXFx7XFx7KFtyc2FpZnRjbXZdZmQpKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2dpLCAnJyk7XG5cdFx0XHRpZiAocGFyYW1zLmNvZGUgIT09ICd0aycpIHtcblx0XHRcdFx0bmV3dGV4dCA9IG5ld3RleHQucmVwbGFjZShcblx0XHRcdFx0XHQve3sobm90YWJpbGl0eXxmYW1lfG1haXJ855+l5ZCN5bqmfOmHjeimgeaAp3zmmL7okZfmgKd86aGv6JGX5oCnfOefpeWQjeW6puS4jei2s3zkurrnianph43opoHmgKd86YeN6KaB5oCn5LiN6LazfG5vdGFibGV85YWz5rOo5bqmfOWFs+azqOW6puS4jei2s3zpl5zms6jluqZ86Zec5rOo5bqm5LiN6LazfOmHjeimgXzph43opoHluqYpKFxcfCg/Ont7W157fV0qfX18W157fV0pKik/fX1cXG4qL2dpLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdG5ld3RleHQgPSBuZXd0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L3t7KHN1YnN0dWJ85bCP5bCP5L2c5ZOBfGNvZHzlsI/lsI/mop3nm6585bCP5bCP5p2h55uuKShcXHwoPzp7e1tee31dKn19fFtee31dKSopP319XFxuKi9naSxcblx0XHRcdFx0XHQnJ1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5jb2RlID09PSAnbWVyZ2VhcHByb3ZlZCcpIHtcblx0XHRcdFx0Y29uc3QgdGFnID0gJ3t7J1xuXHRcdFx0XHRcdC5jb25jYXQoJ3N1YnN0OicpXG5cdFx0XHRcdFx0LmNvbmNhdChgTWVyZ2UgYXBwcm92ZWQvYXV0b3xkaXNjdXNzPSR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX19fVxcbmApO1xuXHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlc1xuXHRcdFx0XHRjb25zdCB5c2FyY2hpdmVzX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZShuZXd0ZXh0KTtcblx0XHRcdFx0bmV3dGV4dCA9IHlzYXJjaGl2ZXNfcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAobmV3dGV4dCA9PT0gdGV4dCkge1xuXHRcdFx0XHRzdGF0ZWxlbS53YXJuKCfmnKrmib7liLDlrZjlup/orqjorrrmqKHmnb/vvIzlj6/og73lt7Looqvnp7vpmaQnKTtcblx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBlZGl0c3VtbWFyeSA9IGDlrZjlup/orqjorrrlhbPpl63vvJpbWyR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX1dXWA7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KG5ld3RleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShlZGl0c3VtbWFyeSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmtlZXBDb21wbGV0ZSk7XG5cdFx0fSxcblx0XHRrZWVwQ29tcGxldGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdH0sXG5cdFx0dGFsa2VuZDogKHBhcmFtcykgPT4ge1xuXHRcdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksICflhbPpl63orqjorronKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRQYWdlU2VjdGlvbihwYXJhbXMuc2VjdGlvbik7XG5cdFx0XHR5c2FyY2hpdmVzX3BhZ2UubG9hZChUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5zYXZlVGFsayk7XG5cdFx0fSxcblx0XHRzYXZlVGFsazogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRpZiAodGV4dC5pbmNsdWRlcygne3tkZWxoJykpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoJ+iuqOiuuuW3suiiq+WFs+mXrScpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzYmVnaW4gPSB0ZXh0LmluY2x1ZGVzKCc8c2VjdGlvbiBiZWdpbj1iYWNrbG9nIC8+Jyk7XG5cdFx0XHRjb25zdCBzZW5kID0gdGV4dC5pbmNsdWRlcygnPHNlY3Rpb24gZW5kPWJhY2tsb2cgLz4nKTtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1xcbjxzZWN0aW9uIGJlZ2luPWJhY2tsb2cgLz4nLCAnJyk7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCdcXG48c2VjdGlvbiBlbmQ9YmFja2xvZyAvPicsICcnKTtcblx0XHRcdGNvbnN0IGJhciA9IHRleHQuc3BsaXQoJ1xcbi0tLS1cXG4nKTtcblx0XHRcdGNvbnN0IHNwbGl0ID0gYmFyWzBdLnNwbGl0KCdcXG4nKTtcblx0XHRcdHRleHQgPSBgJHtzcGxpdFswXX1cXG57e2RlbGh8JHtwYXJhbXMuY29kZX19fVxcbmA7XG5cdFx0XHR0ZXh0ICs9IHNwbGl0LnNsaWNlKDEpLmpvaW4oJ1xcbicpO1xuXHRcdFx0Y29uc3QgcmVhc29uID0gcGFyYW1zLm1lc3NhZ2VEYXRhLnZhbHVlIHx8IHBhcmFtcy5tZXNzYWdlRGF0YS5sYWJlbDtcblx0XHRcdHRleHQgKz0gYFxcbjxocj5cXG46ICR7cmVhc29ufWA7XG5cdFx0XHRpZiAocGFyYW1zLnJlbWFyaykge1xuXHRcdFx0XHR0ZXh0ICs9IGDvvJoke01vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihwYXJhbXMucmVtYXJrKX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGV4dCArPSAn44CCJztcblx0XHRcdH1cblx0XHRcdGlmICghTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0dGV4dCArPSAne3snLmNvbmNhdCgnc3Vic3Q6JykuY29uY2F0KCdOQUN9fScpO1xuXHRcdFx0fVxuXHRcdFx0dGV4dCArPSAnLS1+ficuY29uY2F0KCd+ficsICdcXG57e2RlbGZ9fScpO1xuXHRcdFx0aWYgKGJhclsxXSkge1xuXHRcdFx0XHR0ZXh0ICs9IGBcXG4tLS0tXFxuJHtiYXIuc2xpY2UoMSkuam9pbignXFxuLS0tLVxcbicpfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2VuZCkge1xuXHRcdFx0XHR0ZXh0ICs9ICdcXG48c2VjdGlvbiBlbmQ9YmFja2xvZyAvPic7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2JlZ2luKSB7XG5cdFx0XHRcdC8vIGd1YXJhbnRlZWQgdG8gYmUgYXQgdG5lIGVuZD9cblx0XHRcdFx0dGV4dCArPSAnXFxuPHNlY3Rpb24gYmVnaW49YmFja2xvZyAvPic7XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShgLyogJHtwYXJhbXMudGl0bGV9ICovICR7cmVhc29ufWApO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5kaXNhYmxlTGluayk7XG5cdFx0fSxcblx0XHRkaXNhYmxlTGluazogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQkKGBzdHJvbmcgYVtocmVmPSMke3BhcmFtcy5zZWN0aW9ufV0gc3BhbmApLmNzcygnY29sb3InLCAnIzgwODA4MCcpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuY2xvc2UsICdjbG9zZScpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWNvbmZpZy5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjb25maWcoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVjb25maWcuanM6IFByZWZlcmVuY2VzIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IEFkZHMgY29uZmlndXJhdGlvbiBmb3JtIHRvIEhlbHA6VHdpbmtsZS/lj4LmlbDorr7nva4sXG5cdCAqIGFuZCBhZGRzIGFuIGFkIGJveCB0byB0aGUgdG9wIG9mIHVzZXIgc3VicGFnZXMgYmVsb25naW5nIHRvIHRoZVxuXHQgKiBjdXJyZW50bHkgbG9nZ2VkLWluIHVzZXIgd2hpY2ggZW5kIGluICcuanMnXG5cdCAqIEFjdGl2ZSBvbjogV2hhdCBJIGp1c3Qgc2FpZC4gWWVhaC5cblx0ICovXG5cdFR3aW5rbGUuY29uZmlnID0ge307XG5cdFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zID0ge1xuXHRcdHllczogd2luZG93LndnVUxTKCfmsLjkuYXliqDlhaXliLDnm5Hop4bliJfooagnLCAn5rC45LmF5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0bm86IHdpbmRvdy53Z1VMUygn5LiN5Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+S4jeWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdGRlZmF1bHQ6IHdpbmRvdy53Z1VMUygn6YG15a6I56uZ54K56K6+572uJywgJ+mBteWuiOermem7nuioreWumicpLFxuXHRcdCcxIHdlZWsnOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWIsOebkeinhuWIl+ihqDHlkagnLCAn5Yqg5YWl5Yiw55uj6KaW5riF5ZauMemAsScpLFxuXHRcdCcxIG1vbnRoJzogd2luZG93LndnVUxTKCfliqDlhaXliLDnm5Hop4bliJfooagx5Liq5pyIJywgJ+WKoOWFpeWIsOebo+imlua4heWWrjHlgIvmnIgnKSxcblx0XHQnMyBtb250aHMnOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWIsOebkeinhuWIl+ihqDPkuKrmnIgnLCAn5Yqg5YWl5Yiw55uj6KaW5riF5ZauM+WAi+aciCcpLFxuXHRcdCc2IG1vbnRocyc6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5Yiw55uR6KeG5YiX6KGoNuS4quaciCcsICfliqDlhaXliLDnm6PoppbmuIXllq425YCL5pyIJyksXG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMgPSB7XG5cdFx0Y3NkQ3JpdGVyaWE6IHtcblx0XHRcdGRiOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdGcxOiAnRzEnLFxuXHRcdFx0ZzI6ICdHMicsXG5cdFx0XHRnMzogJ0czJyxcblx0XHRcdGc0OiAnRzQnLFxuXHRcdFx0ZzU6ICdHNScsXG5cdFx0XHRnNjogJ0c2Jyxcblx0XHRcdGc3OiAnRzcnLFxuXHRcdFx0Zzg6ICdHOCcsXG5cdFx0XHRnOTogJ0c5Jyxcblx0XHRcdGExOiAnQTEnLFxuXHRcdFx0YTI6ICdBMicsXG5cdFx0XHRhMzogJ0EzJyxcblx0XHRcdG8xOiAnTzEnLFxuXHRcdFx0bzI6ICdPMicsXG5cdFx0XHRvMzogJ08zJyxcblx0XHRcdGYxOiAnRjEnLFxuXHRcdFx0ZjI6ICdGMicsXG5cdFx0XHRmMzogJ0YzJyxcblx0XHRcdGY0OiAnRjQnLFxuXHRcdFx0ZjU6ICdGNScsXG5cdFx0XHRyMTogJ1IxJyxcblx0XHRcdHIyOiAnUjInLFxuXHRcdH0sXG5cdFx0Y3NkQ3JpdGVyaWFEaXNwbGF5T3JkZXI6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdF0sXG5cdFx0Y3NkQ3JpdGVyaWFOb3RpZmljYXRpb246IHtcblx0XHRcdGRiOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdGcxOiAnRzEnLFxuXHRcdFx0ZzI6ICdHMicsXG5cdFx0XHRnMzogJ0czJyxcblx0XHRcdGc0OiAnRzQnLFxuXHRcdFx0ZzU6ICdHNScsXG5cdFx0XHRnNjogJ0c2Jyxcblx0XHRcdGc3OiAnRzcnLFxuXHRcdFx0Zzg6ICdHOCcsXG5cdFx0XHRnOTogJ0c5Jyxcblx0XHRcdGExOiAnQTEnLFxuXHRcdFx0YTI6ICdBMicsXG5cdFx0XHRhMzogJ0EzJyxcblx0XHRcdG8xOiAnTzEnLFxuXHRcdFx0bzI6ICdPMicsXG5cdFx0XHRvMzogJ08zJyxcblx0XHRcdGYxOiAnRjEnLFxuXHRcdFx0ZjI6ICdGMicsXG5cdFx0XHRmMzogJ0YzJyxcblx0XHRcdGY0OiAnRjQnLFxuXHRcdFx0ZjU6ICdGNScsXG5cdFx0XHRyMTogJ1IxJyxcblx0XHRcdHIyOiAnUjInLFxuXHRcdH0sXG5cdFx0Y3NkQ3JpdGVyaWFOb3RpZmljYXRpb25EaXNwbGF5T3JkZXI6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdF0sXG5cdFx0Y3NkQW5kRElDcml0ZXJpYToge1xuXHRcdFx0ZGI6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ55CG55SxJywgJ+iHquiogueQhueUsScpLFxuXHRcdFx0ZzE6ICdHMScsXG5cdFx0XHRnMjogJ0cyJyxcblx0XHRcdGczOiAnRzMnLFxuXHRcdFx0ZzQ6ICdHNCcsXG5cdFx0XHRnNTogJ0c1Jyxcblx0XHRcdGc2OiAnRzYnLFxuXHRcdFx0Zzc6ICdHNycsXG5cdFx0XHRnODogJ0c4Jyxcblx0XHRcdGc5OiAnRzknLFxuXHRcdFx0YTE6ICdBMScsXG5cdFx0XHRhMjogJ0EyJyxcblx0XHRcdGEzOiAnQTMnLFxuXHRcdFx0bzE6ICdPMScsXG5cdFx0XHRvMjogJ08yJyxcblx0XHRcdG8zOiAnTzMnLFxuXHRcdFx0ZjE6ICdGMScsXG5cdFx0XHRmMjogJ0YyJyxcblx0XHRcdGYzOiAnRjMnLFxuXHRcdFx0ZjQ6ICdGNCcsXG5cdFx0XHRmNTogJ0Y1Jyxcblx0XHRcdHIxOiAnUjEnLFxuXHRcdFx0cjI6ICdSMicsXG5cdFx0fSxcblx0XHRjc2RBbmRESUNyaXRlcmlhRGlzcGxheU9yZGVyOiBbXG5cdFx0XHQnZGInLFxuXHRcdFx0J2cxJyxcblx0XHRcdCdnMicsXG5cdFx0XHQnZzMnLFxuXHRcdFx0J2c0Jyxcblx0XHRcdCdnNScsXG5cdFx0XHQnZzYnLFxuXHRcdFx0J2c3Jyxcblx0XHRcdCdnOCcsXG5cdFx0XHQnZzknLFxuXHRcdFx0J2ExJyxcblx0XHRcdCdhMicsXG5cdFx0XHQnYTMnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdFx0J2YxJyxcblx0XHRcdCdmMicsXG5cdFx0XHQnZjMnLFxuXHRcdFx0J2Y0Jyxcblx0XHRcdCdmNScsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRdLFxuXHRcdHhmZENyaXRlcmlhOiB7XG5cdFx0XHRkZWxldGU6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0bWVyZ2U6IHdpbmRvdy53Z1VMUygn5ZCI5bm2JywgJ+WQiOS9tScpLFxuXHRcdFx0ZndkY3NkOiB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKSxcblx0XHRcdGZhbWU6IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpLFxuXHRcdFx0c3Vic3R1Yjogd2luZG93LndnVUxTKCfmibnph4/lsI/lsI/kvZzlk4Hmj5DliKAnLCAn5om55qyh5bCP5bCP5L2c5ZOB5o+Q5YiqJyksXG5cdFx0XHRiYXRjaDogd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyksXG5cdFx0fSxcblx0XHR4ZmRDcml0ZXJpYURpc3BsYXlPcmRlcjogWydkZWxldGUnLCAnbWVyZ2UnLCAnZndkY3NkJywgJ2ZhbWUnLCAnc3Vic3R1YicsICdiYXRjaCddLFxuXHRcdG5hbWVzcGFjZXNOb1NwZWNpYWw6IHtcblx0XHRcdDA6IHdpbmRvdy53Z1VMUygn77yI5p2h55uu77yJJywgJ++8iOaineebru+8iScpLFxuXHRcdFx0MTogJ1RhbGsnLFxuXHRcdFx0MjogJ1VzZXInLFxuXHRcdFx0MzogJ1VzZXIgdGFsaycsXG5cdFx0XHQ0OiAnTElCJyxcblx0XHRcdDU6ICdMSUIgdGFsaycsXG5cdFx0XHQ2OiAnRmlsZScsXG5cdFx0XHQ3OiAnRmlsZSB0YWxrJyxcblx0XHRcdDg6ICdNZWRpYVdpa2knLFxuXHRcdFx0OTogJ01lZGlhV2lraSB0YWxrJyxcblx0XHRcdDEwOiAnVGVtcGxhdGUnLFxuXHRcdFx0MTE6ICdUZW1wbGF0ZSB0YWxrJyxcblx0XHRcdDEyOiAnSGVscCcsXG5cdFx0XHQxMzogJ0hlbHAgdGFsaycsXG5cdFx0XHQxNDogJ0NhdGVnb3J5Jyxcblx0XHRcdDE1OiAnQ2F0ZWdvcnkgdGFsaycsXG5cdFx0XHQyNzQ6ICdXaWRnZXQnLFxuXHRcdFx0Mjc1OiAnV2lkZ2V0IHRhbGsnLFxuXHRcdFx0MzAwOiAnRmFubWFkZScsXG5cdFx0XHQzMDE6ICdGYW5tYWRlIHRhbGsnLFxuXHRcdFx0MzAyOiAnRHJhZnQnLFxuXHRcdFx0MzAzOiAnRHJhZnQgdGFsaycsXG5cdFx0XHQzMDQ6ICdTTVdEYXRhJyxcblx0XHRcdDMwNTogJ1NNV0RhdGEgdGFsaycsXG5cdFx0XHQ4Mjk6ICdNb2R1bGUgdGFsaycsXG5cdFx0fSxcblx0fTtcblx0LyoqXG5cdCAqIFNlY3Rpb24gZW50cnkgZm9ybWF0OlxuXHQgKlxuXHQgKiB7XG5cdCAqICAgdGl0bGU6IDxodW1hbi1yZWFkYWJsZSBzZWN0aW9uIHRpdGxlPixcblx0ICogICBtb2R1bGU6IDxuYW1lIG9mIHRoZSBhc3NvY2lhdGVkIG1vZHVsZSwgdXNlZCB0byBsaW5rIHRvIHNlY3Rpb25zPixcblx0ICogICBhZG1pbk9ubHk6IDx0cnVlIGZvciBhZG1pbi1vbmx5IHNlY3Rpb25zPixcblx0ICogICBoaWRkZW46IDx0cnVlIGZvciBhZHZhbmNlZCBwcmVmZXJlbmNlcyB0aGF0IHJhcmVseSBuZWVkIHRvIGJlIGNoYW5nZWQgLSB0aGV5IGNhbiBzdGlsbCBiZSBtb2RpZmllZCBieSBtYW51YWxseSBlZGl0aW5nIHR3aW5rbGVvcHRpb25zLmpzPixcblx0ICogICBwcmVmZXJlbmNlczogW1xuXHQgKiAgICAge1xuXHQgKiAgICAgICBuYW1lOiA8VHdpbmtsZUNvbmZpZyBwcm9wZXJ0eSBuYW1lPixcblx0ICogICAgICAgbGFiZWw6IDxodW1hbi1yZWFkYWJsZSBzaG9ydCBkZXNjcmlwdGlvbiAtIHVzZWQgYXMgYSBmb3JtIGxhYmVsPixcblx0ICogICAgICAgaGVscHRpcDogPChvcHRpb25hbCkgaHVtYW4tcmVhZGFibGUgdGV4dCAodXNpbmcgdmFsaWQgSFRNTCkgdGhhdCBjb21wbGVtZW50cyB0aGUgZGVzY3JpcHRpb24sIGxpa2UgbGltaXRzLCB3YXJuaW5ncywgZXRjLj5cblx0ICogICAgICAgYWRtaW5Pbmx5OiA8dHJ1ZSBmb3IgYWRtaW4tb25seSBwcmVmZXJlbmNlcz4sXG5cdCAqICAgICAgIHR5cGU6IDxzdHJpbmd8Ym9vbGVhbnxpbnRlZ2VyfGVudW18c2V0fGN1c3RvbUxpc3Q+IChjdXN0b21MaXN0IHN0b3JlcyBhbiBhcnJheSBvZiBKU09OIG9iamVjdHMgeyB2YWx1ZSwgbGFiZWwgfSksXG5cdCAqICAgICAgIGVudW1WYWx1ZXM6IDxmb3IgdHlwZSA9IFwiZW51bVwiOiBhIEpTT04gb2JqZWN0IHdoZXJlIHRoZSBrZXlzIGFyZSB0aGUgaW50ZXJuYWwgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgYXJlIGh1bWFuLXJlYWRhYmxlIHN0cmluZ3M+LFxuXHQgKiAgICAgICBzZXRWYWx1ZXM6IDxmb3IgdHlwZSA9IFwic2V0XCI6IGEgSlNPTiBvYmplY3Qgd2hlcmUgdGhlIGtleXMgYXJlIHRoZSBpbnRlcm5hbCBuYW1lcyBhbmQgdGhlIHZhbHVlcyBhcmUgaHVtYW4tcmVhZGFibGUgc3RyaW5ncz4sXG5cdCAqICAgICAgIHNldERpc3BsYXlPcmRlcjogPChvcHRpb25hbCkgZm9yIHR5cGUgPSBcInNldFwiOiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBrZXlzIG9mIHNldFZhbHVlcyAoYXMgc3RyaW5ncykgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgZGlzcGxheWVkPixcblx0ICogICAgICAgY3VzdG9tTGlzdFZhbHVlVGl0bGU6IDxmb3IgdHlwZSA9IFwiY3VzdG9tTGlzdFwiOiB0aGUgaGVhZGluZyBmb3IgdGhlIGxlZnQgXCJ2YWx1ZVwiIGNvbHVtbiBpbiB0aGUgY3VzdG9tIGxpc3QgZWRpdG9yPixcblx0ICogICAgICAgY3VzdG9tTGlzdExhYmVsVGl0bGU6IDxmb3IgdHlwZSA9IFwiY3VzdG9tTGlzdFwiOiB0aGUgaGVhZGluZyBmb3IgdGhlIHJpZ2h0IFwibGFiZWxcIiBjb2x1bW4gaW4gdGhlIGN1c3RvbSBsaXN0IGVkaXRvcj5cblx0ICogICAgIH0sXG5cdCAqICAgICAuIC4gLlxuXHQgKiAgIF1cblx0ICogfSxcblx0ICogLiAuIC5cblx0ICpcblx0ICovXG5cdFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zID0gW1xuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+W4uOinhCcsICfluLjopo8nKSxcblx0XHRcdG1vZHVsZTogJ2dlbmVyYWwnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy51c2VyVGFsa1BhZ2VNb2RlIG1heSB0YWtlIGFyZ3VtZW50czpcblx0XHRcdFx0Ly8gJ3dpbmRvdyc6IG9wZW4gYSBuZXcgd2luZG93LCByZW1lbWJlciB0aGUgb3BlbmVkIHdpbmRvd1xuXHRcdFx0XHQvLyAndGFiJzogb3BlbnMgaW4gYSBuZXcgdGFiLCBpZiBwb3NzaWJsZS5cblx0XHRcdFx0Ly8gJ2JsYW5rJzogZm9yY2Ugb3BlbiBpbiBhIG5ldyB3aW5kb3csIGV2ZW4gaWYgc3VjaCBhIHdpbmRvdyBleGlzdHNcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd1c2VyVGFsa1BhZ2VNb2RlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPopoHmiZPlvIDnlKjmiLforqjorrrpobXml7YnLCAn55W26KaB5omT6ZaL5L2/55So6ICF6KiO6KuW6aCB5pmCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdHdpbmRvdzogd2luZG93LndnVUxTKCflnKjnqpflj6PkuK3vvIzmm7/mjaLmiJDlhbblroPnlKjmiLflr7nor53pobUnLCAn5Zyo55W25YmN5YiG6aCB77yM5pu/5o+b5oiQ5YW25a6D55So5oi26KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHR0YWI6IHdpbmRvdy53Z1VMUygn5Zyo5paw5qCH562+6aG15LitJywgJ+WcqOaWsOWIhumggeS4rScpLFxuXHRcdFx0XHRcdFx0Ymxhbms6IHdpbmRvdy53Z1VMUygn5Zyo5YWo5paw55qE56qX5Y+j5LitJywgJ+WcqOaWsOimlueql+S4rScpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGlhbG9nTGFyZ2VGb250IChib29sZWFuKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RpYWxvZ0xhcmdlRm9udCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZyoVHdpbmtsZeWvueivneahhuS4reS9v+eUqOWkp+WPt+Wtl+S9kycsICflnKhUd2lua2xl5bCN6Kmx5pa55aGK5Lit5L2/55So5aSn6Jmf5a2X5Z6LJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlLmNvbmZpZy5kaXNhYmxlZE1vZHVsZXMgKGFycmF5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGVkTW9kdWxlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWz6Zet5oyH5a6a55qEVHdpbmtsZeaooeWdlycsICfpl5zplonmjIflrprnmoRUd2lua2xl5qih57WEJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOWcqOatpOmAieaLqeeahOWKn+iDveWwhuaXoOazleS9v+eUqO+8jOWPlua2iOmAieaLqeS7pemHjeaWsOWQr+eUqOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Zyo5q2k6YG45pOH55qE5Yqf6IO95bCH54Sh5rOV5L2/55So77yM5Y+W5raI6YG45pOH5Lul6YeN5paw5ZWf55So5Yqf6IO944CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRhcnY6IHdpbmRvdy53Z1VMUygn5ZGK54q2JywgJ+WRiueLgCcpLFxuXHRcdFx0XHRcdFx0d2FybjogJ+itpuWRiicsXG5cdFx0XHRcdFx0XHRibG9jazogd2luZG93LndnVUxTKCflsIHnpoEnLCAn5bCB6Y6WJyksXG5cdFx0XHRcdFx0XHR0YWxrYmFjazogJ+mAmuWRiicsXG5cdFx0XHRcdFx0XHRzcGVlZHk6IHdpbmRvdy53Z1VMUygn6YCf5YigJywgJ+mAn+WIqicpLFxuXHRcdFx0XHRcdFx0Y29weXZpbzogd2luZG93LndnVUxTKCfkvrXmnYMnLCAn5L615qyKJyksXG5cdFx0XHRcdFx0XHR4ZmQ6IHdpbmRvdy53Z1VMUygn5o+Q5YigJywgJ+aPkOWIqicpLFxuXHRcdFx0XHRcdFx0aW1hZ2U6IHdpbmRvdy53Z1VMUygn5Zu+5p2DJywgJ+WcluasiicpLFxuXHRcdFx0XHRcdFx0cHJvdGVjdDogd2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0XHRcdFx0c3R1YjogJ+Wwj+S9nOWTgScsXG5cdFx0XHRcdFx0XHRkaWZmOiB3aW5kb3cud2dVTFMoJ+W3ruW8gicsICflt67nlbAnKSxcblx0XHRcdFx0XHRcdHVubGluazogd2luZG93LndnVUxTKCfpk77lhaUnLCAn6YCj5YWlJyksXG5cdFx0XHRcdFx0XHRmbHVmZjogJ+WbnumAgCcsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZS5jb25maWcuZGlzYWJsZWRTeXNvcE1vZHVsZXMgKGFycmF5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGVkU3lzb3BNb2R1bGVzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhbPpl63mjIflrprnmoRUd2lua2xl566h55CG5ZGY5qih5Z2XJywgJ+mXnOmWieaMh+WumueahFR3aW5rbGXnrqHnkIblk6HmqKHntYQnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Zyo5q2k6YCJ5oup55qE5Yqf6IO95bCG5peg5rOV5L2/55So77yM5Y+W5raI6YCJ5oup5Lul6YeN5paw5ZCv55So5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCfmgqjlnKjmraTpgbjmk4fnmoTlip/og73lsIfnhKHms5Xkvb/nlKjvvIzlj5bmtojpgbjmk4fku6Xph43mlrDllZ/nlKjlip/og73jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRiYXRjaGRlbGV0ZTogd2luZG93LndnVUxTKCfmibnliKAnLCAn5om55YiqJyksXG5cdFx0XHRcdFx0XHRiYXRjaHVuZGVsZXRlOiB3aW5kb3cud2dVTFMoJ+aJueWkjScsICfmibnlvqknKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WRiueKticsICflkYrni4AnKSxcblx0XHRcdG1vZHVsZTogJ2FydicsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwaVdhdGNoUmVwb3J0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5HotbflgoDlhKHosIPmn6Xml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn55m86LW35YKA5YSh6Kq/5p+l5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WwgeemgeeUqOaItycsICflsIHpjpbkvb/nlKjogIUnKSxcblx0XHRcdG1vZHVsZTogJ2Jsb2NrJyxcblx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFRvQmxvY2s2NCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gV2hldGhlciB0byBkZWZhdWx0IHRvIGp1c3QgYmxvY2tpbmcgdGhlIC82NCBvbiBvciBvZmZcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkZWZhdWx0VG9CbG9jazY0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflr7nkuo5JUHY25Zyw5Z2A77yM6buY6K6k6YCJ5oup5bCB56aBLzY05q61JywgJ+WwjeaWvElQdjblnLDlnYDvvIzpoJDoqK3pgbjmk4flsIHpjpYvNjTmrrUnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFRvUGFydGlhbEJsb2NrcyAoYm9vbGVhbilcblx0XHRcdFx0Ly8gV2hldGhlciB0byBkZWZhdWx0IHBhcnRpYWwgYmxvY2tzIG9uIG9yIG9mZlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlZmF1bHRUb1BhcnRpYWxCbG9ja3MnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJk+W8gOWwgeemgeiPnOWNleaXtum7mOiupOmAieaLqemDqOWIhuWwgeemgScsICfmiZPplovlsIHpjpbpgbjllq7mmYLpoJDoqK3pgbjmk4fpg6jliIblsIHpjpYnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hCbG9ja05vdGljZXMgKHN0cmluZylcblx0XHRcdFx0Ly8gV2F0Y2hsaXN0IHNldHRpbmcgZm9yIHRoZSBwYWdlIHdoaWNoIGhhcyBiZWVuIGRpc3BhdGNoZWQgYW4gd2FybmluZyBvciBub3RpY2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaEJsb2NrTm90aWNlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflj5HpgIHlsIHnpoHmqKHmnb/ml7bliqDlhaXnlKjmiLforqjorrrpobXliLDnm5Hop4bliJfooagnLFxuXHRcdFx0XHRcdFx0J+eZvOmAgeWwgemOluaooeadv+aZguWKoOWFpeS9v+eUqOiAheiojuirlumggeWIsOebo+imlua4heWWridcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjdXN0b21CbG9ja1JlYXNvbkxpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieWwgeemgeeQhueUsScsICfoh6roqILlsIHpjpbnkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5Yqg5YWl5bi455So55qE5bCB56aB55CG55Sx44CC6Ieq5a6a5LmJ55qE5bCB56aB55CG55Sx5Lya5Ye6546w5Zyo5LiA6Iis55qE5bCB56aB55CG55Sx5LiL5pa544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XliqDlhaXluLjnlKjnmoTlsIHpjpbnkIbnlLHjgILoh6roqILnmoTlsIHpjpbnkIbnlLHmnIPlh7rnj77lnKjkuIDoiKznmoTlsIHpjpbnkIbnlLHkuIvmlrnjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkvb/nlKjlsIHnpoHmqKHmnb/vvIjpu5jorqTkuLogdXctYmxvY2sx77yJJyxcblx0XHRcdFx0XHRcdCfkvb/nlKjlsIHpjpbmqKHmnb/vvIjpoJDoqK3ngrogdXctYmxvY2sx77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfigJznlLHkuo7igKbmgqjlt7LooqvlsIHnpoHigJ3lj4rlsIHnpoHml6Xlv5fnkIbnlLEnLFxuXHRcdFx0XHRcdFx0J+OAjOeUseaWvOKApuaCqOW3suiiq+WwgemOluOAjeWPiuWwgemOluaXpeiqjOeQhueUsSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WbvueJh+WIoOmZpCcsICflnJbniYfliKrpmaQnKSxcblx0XHRcdG1vZHVsZTogJ2ltYWdlJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubm90aWZ5VXNlck9uRGVsaSAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYgdGhlIHVzZXIgc2hvdWxkIGJlIG5vdGlmaWVkIGFmdGVyIHBsYWNpbmcgYSBmaWxlIGRlbGV0aW9uIHRhZ1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ25vdGlmeVVzZXJPbkRlbGknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOmAmuefpeWIm+W7uuiAheKAnScsICfpoJDoqK3li77pgbjjgIzpgJrnn6Xlu7rnq4vogIXjgI0nKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVsaVdhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgdGFnZ2VkIGZvciBkZWxldGlvbi5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkZWxpV2F0Y2hQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDlm77niYfml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5ZyW54mH5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlbGlXYXRjaFVzZXIgKHN0cmluZylcblx0XHRcdFx0Ly8gVGhlIHdhdGNobGlzdCBzZXR0aW5nIG9mIHRoZSB1c2VyIHRhbGsgcGFnZSBpZiBhIG5vdGlmaWNhdGlvbiBpcyBwbGFjZWQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsaVdhdGNoVXNlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5Zu+54mH5pe25Yqg5YWl5Yib5bu66ICF6K6o6K666aG15Yiw55uR6KeG5YiX6KGoJywgJ+aomeiomOWclueJh+aZguWKoOWFpeW7uueri+iAheiojuirlumggeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHRtb2R1bGU6ICdwcm90ZWN0Jyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hSZXF1ZXN0ZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2i5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+iri+axguS/neitt+mggemdouaZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFBQVGFnZ2VkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOS/neaKpOaooeadv+aXtuWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfmqJnoqJjkv53orbfmqKHmnb/mmYLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hQcm90ZWN0ZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+d5oqk5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+S/neitt+aZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XlnKjkv53miqTlkI7kuZ/moIforrDpobXpnaLvvIzliJnkvb/nlKjmoIforrDpobXpnaLnmoTlj4LmlbDorr7nva7jgIInLFxuXHRcdFx0XHRcdFx0J+iLpeWcqOS/neitt+W+jOS5n+aomeiomOmggemdou+8jOWJh+S9v+eUqOaomeiomOmggemdoueahOWBj+WlveioreWumuOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6ICflm57pgIAnLFxuXHRcdFx0Ly8gdHdpbmtsZWZsdWZmIG1vZHVsZVxuXHRcdFx0bW9kdWxlOiAnZmx1ZmYnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5hdXRvTWVudUFmdGVyUm9sbGJhY2sgKGJvb2wpXG5cdFx0XHRcdC8vIE9wdGlvbiB0byBhdXRvbWF0aWNhbGx5IG9wZW4gdGhlIHdhcm5pbmcgbWVudSBpZiB0aGUgdXNlciB0YWxrIHBhZ2UgaXMgb3BlbmVkIHBvc3QtcmV2ZXJzaW9uXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYXV0b01lbnVBZnRlclJvbGxiYWNrJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqFR3aW5rbGXlm57pgIDlkI7oh6rliqjmiZPlvIDnlKjmiLforqjorrrpobXkuIrnmoRUd2lua2xl6K2m5ZGK6I+c5Y2VJyxcblx0XHRcdFx0XHRcdCflnKhUd2lua2xl5Zue6YCA5b6M6Ieq5YuV5omT6ZaL5L2/55So6ICF6KiO6KuW6aCB5LiK55qEVHdpbmtsZeitpuWRiumBuOWWridcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5LuF5Zyo6YCJ5Y+W5LiL5pa55a+55bqU5qGG5pe25omN5omn6KGMJywgJ+WDheWcqOmBuOWPluS4i+aWueWwjeaHieahhuaZguaJjeWft+ihjCcpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5vcGVuVGFsa1BhZ2UgKGFycmF5KVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IGluIG9wZW5pbmcgb2YgdGFsayBwYWdlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnb3BlblRhbGtQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjov5nkupvnsbvlnovnmoTlm57pgIDlkI7miZPlvIDnlKjmiLforqjorrrpobUnLCAn5Zyo6YCZ5Lqb6aGe5Yil55qE5Zue6YCA5b6M5omT6ZaL5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRub3JtOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgCcsICfluLjopo/lm57pgIAnKSxcblx0XHRcdFx0XHRcdHZhbmQ6IHdpbmRvdy53Z1VMUygn56C05Z2P5Zue6YCAJywgJ+egtOWjnuWbnumAgCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcub3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0IChib29sKVxuXHRcdFx0XHQvLyBEZWZpbmVzIGlmIHRhbGsgcGFnZSBzaG91bGQgYmUgb3BlbmVkIHdoZW4gY2FsbGluZyByZXZlcnQgZnJvbSBjb250cmlicyBvciByZWNlbnQgY2hhbmdlcyBwYWdlcy4gSWYgc2V0IHRvIHRydWUsIG9wZW5UYWxrUGFnZSBkZWZpbmVzIHRoZW4gaWYgdGFsayBwYWdlIHdpbGwgYmUgb3BlbmVkLlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29wZW5UYWxrUGFnZU9uQXV0b1JldmVydCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjku47nlKjmiLfotKHnjK7lj4rmnIDov5Hmm7TmlLnkuK3lj5Hotbflm57pgIDml7bmiZPlvIDnlKjmiLforqjorrrpobUnLFxuXHRcdFx0XHRcdFx0J+WcqOW+nuS9v+eUqOiAheiyoueNu+WPiui/keacn+iuiuabtOS4reeZvOi1t+WbnumAgOaZguaJk+mWi+S9v+eUqOiAheiojuirlumggSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5b2T5a6D5omT5byA5pe277yM5L6d6LWW5LiK5LiA5Liq6K6+572u44CCJywgJ+eVtuWug+aJk+mWi+aZgu+8jOS+neiztOS4iuS4gOWAi+ioreWumuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5yb2xsYmFja0luUGxhY2UgKGJvb2wpXG5cdFx0XHRcdC8vXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncm9sbGJhY2tJblBsYWNlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqOS7jueUqOaIt+i0oeeMruWPiuacgOi/keabtOaUueS4reWPkei1t+WbnumAgOaXtuS4jeWIt+aWsOmhtemdoicsXG5cdFx0XHRcdFx0XHQn5Zyo5b6e5L2/55So6ICF6LKi54275Y+K6L+R5pyf6K6K5pu05Lit55m86LW35Zue6YCA5pmC5LiN6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+W9k+Wug+aJk+W8gOaXtu+8jFR3aW5rbGXlsIbkuI3kvJrlnKjku47nlKjmiLfotKHnjK7lj4rmnIDov5Hmm7TmlLnkuK3lj5Hotbflm57pgIDml7bliLfmlrDpobXpnaLvvIzlhYHorrjmgqjkuIDmrKHmgKflm57pgIDlpJrkuKrnvJbovpHjgIInLFxuXHRcdFx0XHRcdFx0J+eVtuWug+aJk+mWi+aZgu+8jFR3aW5rbGXlsIfkuI3mnIPlnKjlvp7kvb/nlKjogIXosqLnjbvlj4rov5HmnJ/orormm7TkuK3nmbzotbflm57pgIDmmYLph43mlrDmlbTnkIbpoIHpnaLvvIzlhYHoqLHmgqjkuIDmrKHmgKflm57pgIDlpJrlgIvnt6jovK/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubWFya1JldmVydGVkUGFnZXNBc01pbm9yIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIHJlc3VsdCBpbiBtYXJraW5nIGVkaXQgYXMgbWlub3Jcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3InLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+Wwhui/meS6m+exu+Wei+eahOWbnumAgOagh+iusOS4uuWwj+S/ruaUuScsICflsIfpgJnkupvpoZ7liKXnmoTlm57pgIDmqJnoqJjngrrlsI/kv67mlLknKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdG5vcm06IHdpbmRvdy53Z1VMUygn5bi46KeE5Zue6YCAJywgJ+W4uOimj+WbnumAgCcpLFxuXHRcdFx0XHRcdFx0dmFuZDogd2luZG93LndnVUxTKCfnoLTlnY/lm57pgIAnLCAn56C05aOe5Zue6YCAJyksXG5cdFx0XHRcdFx0XHR0b3Jldjogd2luZG93LndnVUxTKCfigJzmgaLlpI3mraTniYjmnKzigJ0nLCAn44CM5oGi5b6p5q2k54mI5pys44CNJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy53YXRjaFJldmVydGVkUGFnZXMgKGFycmF5KVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IGluIGZvcmNlZCBhZGRpdGlvbiB0byB3YXRjaGxpc3Rcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFJldmVydGVkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aKiui/meS6m+exu+Wei+eahOWbnumAgOWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfmiorpgJnkupvpoZ7liKXnmoTlm57pgIDliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdG5vcm06IHdpbmRvdy53Z1VMUygn5bi46KeE5Zue6YCAJywgJ+W4uOimj+WbnumAgCcpLFxuXHRcdFx0XHRcdFx0dmFuZDogd2luZG93LndnVUxTKCfnoLTlnY/lm57pgIAnLCAn56C05aOe5Zue6YCAJyksXG5cdFx0XHRcdFx0XHR0b3Jldjogd2luZG93LndnVUxTKCfigJzmgaLlpI3mraTniYjmnKzigJ0nLCAn44CM5oGi5b6p5q2k54mI5pys44CNJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy53YXRjaFJldmVydGVkRXhwaXJ5XG5cdFx0XHRcdC8vIElmIGFueSBvZiB0aGUgYWJvdmUgaXRlbXMgYXJlIHNlbGVjdGVkLCB3aGV0aGVyIHRvIGV4cGlyZSB0aGUgd2F0Y2hcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFJldmVydGVkRXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPlm57pgIDpobXpnaLml7bvvIzliqDlhaXliLDnm5Hop4bliJfooajnmoTmnJ/pmZAnLCAn55W25Zue6YCA6aCB6Z2i5pmC77yM5Yqg5YWl5Yiw55uj6KaW5riF5Zau55qE5pyf6ZmQJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIElmIHRvIG9mZmVyIGEgcHJvbXB0IGZvciBleHRyYSBzdW1tYXJ5IHJlYXNvbiBmb3Igbm9ybWFsIHJldmVydHMsIGRlZmF1bHQgdG8gdHJ1ZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgOaXtuivoumXrueQhueUsScsICfluLjopo/lm57pgIDmmYLoqaLllY/nkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+KAnOW4uOinhOKAneWbnumAgOaYr+S4remXtOeahOmCo+S4qlvlm57pgIBd6ZO+5o6l44CCJywgJ+OAjOW4uOimj+OAjeWbnumAgOaYr+S4remWk+eahOmCo+WAi1vlm57pgIBd6YCj57WQ44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2NvbmZpcm1PbkZsdWZmJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm57pgIDliY3opoHmsYLnoa7orqTvvIjmiYDmnInorr7lpIfvvIknLCAn5Zue6YCA5YmN6KaB5rGC56K66KqN77yI5omA5pyJ6KOd572u77yJJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WvueS6juS9v+eUqOenu+WKqOiuvuWkh+eahOeUqOaIt++8jOaIluiAheaEj+W/l+S4jeWdmuWumueahOOAgicsXG5cdFx0XHRcdFx0XHQn5bCN5pa85L2/55So6KGM5YuV6KOd572u55qE5L2/55So6ICF77yM5oiW6ICF5oSP5b+X5LiN5aCF5a6a55qE44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnNob3dSb2xsYmFja0xpbmtzIChhcnJheSlcblx0XHRcdFx0Ly8gV2hlcmUgVHdpbmtsZSBzaG91bGQgc2hvdyByb2xsYmFjayBsaW5rczpcblx0XHRcdFx0Ly8gZGlmZiwgb3RoZXJzLCBtaW5lLCBjb250cmlicywgaGlzdG9yeSwgcmVjZW50XG5cdFx0XHRcdC8vIE5vdGUgZnJvbSBUVE86IHxjb250cmlic3wgc2VlbXMgdG8gYmUgZXF1YWwgdG8gfG90aGVyc3wgKyB8bWluZXwsIGkuZS4gcmVkdW5kYW50LCBzbyBJIGxlZnQgaXQgb3V0IGhlcmVzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc2hvd1JvbGxiYWNrTGlua3MnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOi/meS6m+mhtemdouS4iuaYvuekuuWbnumAgOmTvuaOpScsICflnKjpgJnkupvpoIHpnaLkuIrpoa/npLrlm57pgIDpgKPntZAnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGRpZmY6IHdpbmRvdy53Z1VMUygn5beu5byCJywgJ+W3rueVsCcpLFxuXHRcdFx0XHRcdFx0aGlzdG9yeTogd2luZG93LndnVUxTKCfljoblj7LorrDlvZUnLCAn5q235Y+y6KiY6YyEJyksXG5cdFx0XHRcdFx0XHRvdGhlcnM6IHdpbmRvdy53Z1VMUygn5YW25a6D55So5oi355qE6LSh54yuJywgJ+WFtuWug+S9v+eUqOiAheeahOiyoueNuycpLFxuXHRcdFx0XHRcdFx0bWluZTogd2luZG93LndnVUxTKCfmiJHnmoTotKHnjK4nLCAn5oiR55qE6LKi5427JyksXG5cdFx0XHRcdFx0XHRyZWNlbnRjaGFuZ2VzOiB3aW5kb3cud2dVTFMoJ+acgOi/keabtOaUuScsICfov5HmnJ/orormm7QnKSxcblx0XHRcdFx0XHRcdHJlY2VudGNoYW5nZXNsaW5rZWQ6IHdpbmRvdy53Z1VMUygn55u45YWz5pu05pS5JywgJ+ebuOmXnOiuiuabtCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tUmV2ZXJ0U3VtbWFyeScsXG5cdFx0XHRcdFx0bGFiZWw6ICflm57pgIDnkIbnlLEnLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjmn6XnnIvlt67lvILml7blj6/pgInvvIzku4XlloTmhI/lm57pgIDjgIHluLjop4Tlm57pgIDjgIHmgaLlpI3mraTniYjmnKwnLFxuXHRcdFx0XHRcdFx0J+WcqOaqouimluW3rueVsOaZguWPr+mBuO+8jOWDheWWhOaEj+WbnumAgOOAgeW4uOimj+WbnumAgOOAgeaBouW+qeatpOeJiOacrCdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogJ+eQhueUsScsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpCcsICflv6vpgJ/liKrpmaQnKSxcblx0XHRcdG1vZHVsZTogJ3NwZWVkeScsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwZWVkeVNlbGVjdGlvblN0eWxlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4DkuYjml7blgJnmiafooYzmoIforrDmiJbliKDpmaQnLCAn5LuA6bq85pmC5YCZ5Z+36KGM5qiZ6KiY5oiW5Yiq6ZmkJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGJ1dHRvbkNsaWNrOiB3aW5kb3cud2dVTFMoJ+W9k+aIkeeCueKAnOaPkOS6pOKAneaXticsICfnlbbmiJHpu57jgIzmj5DkuqTjgI3mmYInKSxcblx0XHRcdFx0XHRcdHJhZGlvQ2xpY2s6IHdpbmRvdy53Z1VMUygn5b2T5oiR54K55LiA5Liq6YCJ6aG55pe2JywgJ+eVtuaIkem7nuS4gOWAi+mBuOmgheaZgicpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hTcGVlZHlQYWdlcyAoYXJyYXkpXG5cdFx0XHRcdC8vIFdoZXRoZXIgdG8gYWRkIHNwZWVkeSB0YWdnZWQgcGFnZXMgdG8gd2F0Y2hsaXN0XG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hTcGVlZHlQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5Lul5LiL55CG55Sx5Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+Wwh+S7peS4i+eQhueUseWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdzZXQnLFxuXHRcdFx0XHRcdHNldFZhbHVlczogVHdpbmtsZS5jb25maWcuY29tbW9uU2V0cy5jc2RDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hTcGVlZHlFeHBpcnlcblx0XHRcdFx0Ly8gSWYgYW55IG9mIHRoZSBhYm92ZSBpdGVtcyBhcmUgc2VsZWN0ZWQsIHdoZXRoZXIgdG8gZXhwaXJlIHRoZSB3YXRjaFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoU3BlZWR5RXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPmoIforrDpobXpnaLml7bvvIzliqDlhaXliLDnm5Hop4bliJfooajnmoTmnJ/pmZAnLCAn55W25qiZ6KiY6aCB6Z2i5pmC77yM5Yqg5YWl5Yiw55uj6KaW5riF5Zau55qE5pyf6ZmQJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm1hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkIChib29sZWFuKVxuXHRcdFx0XHQvLyBJZiwgd2hlbiBhcHBseWluZyBzcGVlZHkgdGVtcGxhdGUgdG8gcGFnZSwgdG8gbWFyayB0aGUgcGFnZSBhcyBwYXRyb2xsZWQgKGlmIHRoZSBwYWdlIHdhcyByZWFjaGVkIGZyb20gTmV3UGFnZXMpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFya1NwZWVkeVBhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOaXtuagh+iusOmhtemdouS4uuW3suW3oeafpe+8iOWmguWPr+iDve+8iScsICfmqJnoqJjmmYLmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubm90aWZ5VXNlck9uU3BlZWR5RGVsZXRpb25Ob21pbmF0aW9uIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHNob3VsZCByZXN1bHQgdGhhdCB0aGUgYXV0aG9yIG9mIHRoZSBwYWdlIGJlaW5nIG5vdGlmaWVkIG9mIG5vbWluYXRpb25cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heWcqOS9v+eUqOS7peS4i+eQhueUseaXtumAmuefpemhtemdouWIm+W7uuiAhScsICflg4XlnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLpgJrnn6XpoIHpnaLlu7rnq4vogIUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bC9566h5oKo5Zyo5a+56K+d5qGG5Lit6YCJ5oup6YCa55+l77yM6YCa55+l5LuN5Y+q5Lya5Zyo5L2/55So6L+Z5Lqb55CG55Sx5pe25Y+R5Ye644CCJyxcblx0XHRcdFx0XHRcdCflhJjnrqHmgqjlnKjlsI3oqbHmlrnloYrkuK3pgbjmk4fpgJrnn6XvvIzpgJrnn6Xku43lj6rmnIPlnKjkvb/nlKjpgJnkupvnkIbnlLHmmYLnmbzlh7rjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQ3JpdGVyaWFOb3RpZmljYXRpb24sXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZENyaXRlcmlhTm90aWZpY2F0aW9uRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnByb21wdEZvclNwZWVkeURlbGV0aW9uU3VtbWFyeSAoYXJyYXkgb2Ygc3RyaW5ncylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S9v+eUqOS7peS4i+eQhueUseWIoOmZpOaXtuWFgeiuuOe8lui+keWIoOmZpOeQhueUsScsICfkvb/nlKjku6XkuIvnkIbnlLHliKrpmaTmmYLlhYHoqLHnt6jovK/liKrpmaTnkIbnlLEnKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcub3BlblVzZXJUYWxrUGFnZU9uU3BlZWR5RGVsZXRlIChhcnJheSBvZiBzdHJpbmdzKVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IHVzZXIgdGFsayBwYWdlIHRvIGJlIG9wZW5lZCB3aGVuIHNwZWVkaWx5IGRlbGV0aW5nIChhZG1pbiBvbmx5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L2/55So5Lul5LiL55CG55Sx5pe25omT5byA55So5oi36K6o6K666aG1JywgJ+S9v+eUqOS7peS4i+eQhueUseaZguaJk+mWi+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5kZWxldGVUYWxrUGFnZU9uRGVsZXRlIChib29sZWFuKVxuXHRcdFx0XHQvLyBJZiB0YWxrIHBhZ2UgaWYgZXhpc3RzIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQgKENTRCBHOCkgd2hlbiBzcGVkeWluZyBhIHBhZ2UgKGFkbWluIG9ubHkpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5Yu+6YCJ4oCc5Yig6Zmk6K6o6K666aG14oCdJywgJ+mgkOioreWLvumBuOOAjOWIqumZpOiojuirlumggeOAjScpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlUmVkaXJlY3RzT25EZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOWIoOmZpOmHjeWumuWQkeKAnScsICfpoJDoqK3li77pgbjjgIzliKrpmaTph43mlrDlsI7lkJHjgI0nKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlbGV0ZVN5c29wRGVmYXVsdFRvRGVsZXRlIChib29sZWFuKVxuXHRcdFx0XHQvLyBNYWtlIHRoZSBDU0Qgc2NyZWVuIGRlZmF1bHQgdG8gXCJkZWxldGVcIiBpbnN0ZWFkIG9mIFwidGFnXCIgKGFkbWluIG9ubHkpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOS4uuebtOaOpeWIoOmZpOiAjOS4jeaYr+agh+iusCcsICfpoJDoqK3ngrrnm7TmjqXliKrpmaTogIzkuI3mmK/mqJnoqJgnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5bey5pS+572u5b+r6YCf5Yig6Zmk5qCH6K6w77yM5YiZ5rC46L+c6buY6K6k5Li65Yig6Zmk5qih5byP44CCJyxcblx0XHRcdFx0XHRcdCfoi6Xlt7LmlL7nva7lv6vpgJ/liKrpmaTmqJnoqJjvvIzliYfmsLjpgaDpoJDoqK3ngrrliKrpmaTmqKHlvI/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnNwZWVkeVdpbmRvd1dpZHRoIChpbnRlZ2VyKVxuXHRcdFx0XHQvLyBEZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgVHdpbmtsZSBTRCB3aW5kb3cgaW4gcGl4ZWxzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3BlZWR5V2luZG93V2lkdGgnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpOWvueivneahhuWuveW6pu+8iOWDj+e0oO+8iScsICflv6vpgJ/liKrpmaTlsI3oqbHmlrnloYrlr6zluqbvvIjlg4/ntKDvvIknKSxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuc3BlZWR5V2luZG93V2lkdGggKGludGVnZXIpXG5cdFx0XHRcdC8vIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBUd2lua2xlIFNEIHdpbmRvdyBpbiBwaXhlbHNcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzcGVlZHlXaW5kb3dIZWlnaHQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpOWvueivneahhumrmOW6pu+8iOWDj+e0oO+8iScsICflv6vpgJ/liKrpmaTlsI3oqbHmlrnloYrpq5jluqbvvIjlg4/ntKDvvIknKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5oKo5pyJ5LiA5Y+w5b6I5aSn55qE5pi+56S65Zmo77yM5oKo5Y+v5Lul5bCG5q2k6LCD6auY44CCJyxcblx0XHRcdFx0XHRcdCfoi6XmgqjmnInkuIDlj7DlvojlpKfnmoTpoa/npLrlmajvvIzmgqjlj6/ku6XlsIfmraToqr/pq5jjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbG9nU3BlZWR5Tm9taW5hdGlvbnMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOeUqOaIt+epuumXtOS4reiusOW9leaJgOacieW/q+mAn+WIoOmZpOaPkOWQjScsICflnKjkvb/nlKjogIXnqbrplpPkuK3oqJjpjITmiYDmnInlv6vpgJ/liKrpmaTmj5DlkI0nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Z2e566h55CG5ZGY5peg5rOV6K6/6Zeu5Yiw5bey5Yig6Zmk55qE6LSh54yu77yM55So5oi356m66Ze05pel5b+X5o+Q5L6b5LqG5LiA5Liq5b6I5aW955qE5pa55rOV5p2l6K6w5b2V6L+Z5Lqb5Y6G5Y+y44CCJyxcblx0XHRcdFx0XHRcdCfpnZ7nrqHnkIblk6HnhKHms5XlrZjlj5bliLDlt7LliKrpmaTnmoTosqLnjbvvvIzkvb/nlKjogIXnqbrplpPml6Xoqozmj5DkvpvkuobkuIDlgIvlvojlpb3nmoTmlrnms5XkvoboqJjpjITpgJnkupvmrbflj7LjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3BlZWR5TG9nUGFnZU5hbWUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOatpOmhteS/neeVmeaXpeW/lycsICflnKjmraTpoIHkv53nlZnml6XoqownKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5q2k5qGG5Lit6L6T5YWl5a2Q6aG16Z2i5ZCN56ew77yM5oKo5bCG5ZyoVXNlcjo8aT7nlKjmiLflkI08L2k+LzxpPuWtkOmhtemdojwvaT7mib7liLBDU0Tml6Xlv5fjgILku4XlnKjlkK/nlKjml6Xlv5fml7blt6XkvZzjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei8uOWFpeWtkOmggemdouWQjeeose+8jOaCqOWwh+WcqFVzZXI6PGk+5L2/55So6ICF5ZCN56ixPC9pPi88aT7lrZDpoIHpnaI8L2k+5om+5YiwQ1NE5pel6KqM44CC5YOF5Zyo5ZWf55So5pel6KqM5pmC5bel5L2c44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOS9v+eUqOS7peS4i+eQhueUseaXtuS4jeWBmuiusOW9lScsICflnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLkuI3lgZroqJjpjIQnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdlbmxhcmdlRzdJbnB1dCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5omp5aSnQ1NEIEc355qE5oyJ6ZKuJywgJ+aTtOWkp0NTRCBHN+eahOaMiemIlScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5omp5Li66buY6K6k55qE5Lik5YCN5aSn44CCJywgJ+aTtOeCuumgkOioreeahOWFqeWAjeWkp+OAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfmoIforrAnLCAn5qiZ6KiYJyksXG5cdFx0XHRtb2R1bGU6ICd0YWcnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFRhZ2dlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoTWVyZ2VEaXNjdXNzaW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5ZCI5bm26K6o6K665pe255uR6KeG6K6o6K666aG1JywgJ+WKoOWFpeWQiOS9teiojuirluaZguebo+imluiojuirlumggScpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrVGFnZ2VkUGFnZXNBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbmoIforrDmoIforrDkuLrlsI/kv67mlLknLCAn5bCH5qiZ6KiY5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtUYWdnZWRQYWdlc0FzUGF0cm9sbGVkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTli77pgInigJzmoIforrDpobXpnaLkuLrlt7Llt6Hmn6XigJ3moYYnLCAn6aCQ6Kit5Yu+6YG444CM5qiZ6KiY6aCB6Z2i54K65bey5beh5p+l44CN5qGGJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2dyb3VwQnlEZWZhdWx0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+m7mOiupOWLvumAieKAnOWQiOW5tuWIsHt7bXVsdGlwbGUgaXNzdWVzfX3igJ3lpI3pgInmoYYnLFxuXHRcdFx0XHRcdFx0J+mgkOioreWLvumBuOOAjOWQiOS9teWIsHt7bXVsdGlwbGUgaXNzdWVzfX3jgI3moLjlj5bmlrnloYonXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndGFnQXJ0aWNsZVNvcnRPcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uu5qCH6K6w55qE6buY6K6k5p+l55yL5pa55byPJywgJ+aineebruaomeiomOeahOmgkOioreaqouimluaWueW8jycpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRjYXQ6IHdpbmRvdy53Z1VMUygn5oyJ57G75Z6LJywgJ+aMiemhnuWIpScpLFxuXHRcdFx0XHRcdFx0YWxwaGE6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tVGFnTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5p2h55uu57u05oqk5qCH6K6wJywgJ+iHquioguaineebrue2reitt+aomeiomCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn6L+Z5Lqb5Lya5Ye6546w5Zyo5YiX6KGo55qE5pyr5bC+44CCJywgJ+mAmeS6m+acg+WHuuePvuWcqOWIl+ihqOeahOacq+WwvuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2N1c3RvbUZpbGVUYWdMaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmlofku7bnu7TmiqTmoIforrAnLCAn6Ieq6KiC5qqU5qGI57at6K235qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfov5nkupvkvJrlh7rnjrDlnKjliJfooajnmoTmnKvlsL7jgIInLCAn6YCZ5Lqb5pyD5Ye654++5Zyo5YiX6KGo55qE5pyr5bC+44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOWPt++8iScsICfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zomZ/vvIknKSxcblx0XHRcdFx0XHRjdXN0b21MaXN0TGFiZWxUaXRsZTogd2luZG93LndnVUxTKCfmmL7npLrnmoTmloflrZcnLCAn6aGv56S655qE5paH5a2XJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tUmVkaXJlY3RUYWdMaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnph43lrprlkJHnu7TmiqTmoIforrAnLCAn6Ieq6KiC6YeN5paw5bCO5ZCR57at6K235qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfov5nkupvkvJrlh7rnjrDlnKjliJfooajnmoTmnKvlsL7jgIInLCAn6YCZ5Lqb5pyD5Ye654++5Zyo5YiX6KGo55qE5pyr5bC+44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOWPt++8iScsICfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zomZ/vvIknKSxcblx0XHRcdFx0XHRjdXN0b21MaXN0TGFiZWxUaXRsZTogd2luZG93LndnVUxTKCfmmL7npLrnmoTmloflrZcnLCAn6aGv56S655qE5paH5a2XJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6ICflsI/kvZzlk4EnLFxuXHRcdFx0bW9kdWxlOiAnc3R1YicsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoU3R1YmJlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtTdHViYmVkUGFnZXNBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIblsI/kvZzlk4HmoIforrDkuLrlsI/kv67mlLknLCAn5bCH5bCP5L2c5ZOB5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtTdHViYmVkUGFnZXNBc1BhdHJvbGxlZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5Yu+6YCJ4oCc5qCH6K6w6aG16Z2i5Li65bey5beh5p+l4oCd5qGGJywgJ+mgkOioreWLvumBuOOAjOaomeiomOmggemdoueCuuW3suW3oeafpeOAjeahhicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzdHViQXJ0aWNsZVNvcnRPcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uu5bCP5L2c5ZOB55qE6buY6K6k5p+l55yL5pa55byPJywgJ+aineebruWwj+S9nOWTgeeahOmgkOioreaqouimluaWueW8jycpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRjYXQ6IHdpbmRvdy53Z1VMUygn5oyJ57G75Z6LJywgJ+aMiemhnuWIpScpLFxuXHRcdFx0XHRcdFx0YWxwaGE6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tU3R1Ykxpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieadoeebruWwj+S9nOWTgeagh+iusCcsICfoh6roqILmop3nm67lsI/kvZzlk4HmqJnoqJgnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+i/meS6m+S8muWHuueOsOWcqOWIl+ihqOeahOacq+WwvuOAgicsICfpgJnkupvmnIPlh7rnj77lnKjliJfooajnmoTmnKvlsL7jgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUygn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous5Y+377yJJywgJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOiZn++8iScpLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RMYWJlbFRpdGxlOiB3aW5kb3cud2dVTFMoJ+aYvuekuueahOaWh+WtlycsICfpoa/npLrnmoTmloflrZcnKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogJ+mAmuWRiicsXG5cdFx0XHRtb2R1bGU6ICd0YWxrYmFjaycsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtUYWxrYmFja0FzTWlub3InLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwhumAmuWRiuagh+iusOS4uuWwj+S/ruaUuScsICflsIfpgJrlkYrmqJnoqJjngrrlsI/kv67mlLknKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnaW5zZXJ0VGFsa2JhY2tTaWduYXR1cmUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAmuWRiuaXtuWKoOWFpeetvuWQjScsICfpgJrlkYrmmYLliqDlhaXnsL3lkI0nKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndGFsa2JhY2tIZWFkaW5nJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrlkYrmiYDnlKjnmoTlsI/oioLmoIfpopgnLCAn6YCa5ZGK5omA55So55qE5bCP56+A5qiZ6aGMJyksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFpbEhlYWRpbmcnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+KAnOacieaWsOmCruS7tuKAneaJgOeUqOeahOWwj+iKguagh+mimCcsICfjgIzmnInmlrDpg7Xku7bjgI3miYDnlKjnmoTlsI/nr4DmqJnpoYwnKSxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflj5bmtojpk77lhaUnLCAn5Y+W5raI6YCj5YWlJyksXG5cdFx0XHRtb2R1bGU6ICd1bmxpbmsnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy51bmxpbmtOYW1lc3BhY2VzIChhcnJheSlcblx0XHRcdFx0Ly8gSW4gd2hhdCBuYW1lc3BhY2VzIHVubGluayBzaG91bGQgaGFwcGVuLCBkZWZhdWx0IGluIDAgKGFydGljbGUpIGFuZCAxMDAgKHBvcnRhbClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd1bmxpbmtOYW1lc3BhY2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5bmtojku6XkuIvlkb3lkI3nqbrpl7TkuK3nmoTlj43lkJHpk77mjqUnLCAn5Y+W5raI5Lul5LiL5ZG95ZCN56m66ZaT5Lit55qE5Y+N5ZCR6YCj57WQJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+mBv+WFjemAieaLqeiuqOiuuumhte+8jOWboOi/meagt+S8muWvvOiHtFR3aW5rbGXor5Xlm77kv67mlLnorqjorrrlrZjmoaPjgIInLFxuXHRcdFx0XHRcdFx0J+iri+mBv+WFjemBuOaTh+iojuirlumgge+8jOWboOmAmeaoo+acg+WwjuiHtFR3aW5rbGXoqablnJbkv67mlLnoqI7oq5blrZjmqpTjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMubmFtZXNwYWNlc05vU3BlY2lhbCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCforablkYrnlKjmiLcnLCAn6K2m5ZGK5L2/55So6ICFJyksXG5cdFx0XHRtb2R1bGU6ICd3YXJuJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFdhcm5pbmdHcm91cCAoaW50KVxuXHRcdFx0XHQvLyBpZiB0cnVlLCB3YXRjaCB0aGUgcGFnZSB3aGljaCBoYXMgYmVlbiBkaXNwYXRjaGVkIGFuIHdhcm5pbmcgb3Igbm90aWNlLCBpZiBmYWxzZSwgZGVmYXVsdCBhcHBsaWVzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVmYXVsdFdhcm5pbmdHcm91cCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k6K2m5ZGK57qn5YirJywgJ+mgkOioreitpuWRiue0muWIpScpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHQxOiAnMe+8muazqOaEjycsXG5cdFx0XHRcdFx0XHQyOiAnMu+8muitpuWRiicsXG5cdFx0XHRcdFx0XHQzOiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+aPkOmGkicsICfllq7lsaTntJrmj5DphpInKSxcblx0XHRcdFx0XHRcdDQ6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn6K2m5ZGKJywgJ+WWruWxpOe0muitpuWRiicpLFxuXHRcdFx0XHRcdFx0NTogd2luZG93LndnVUxTKCfoh6rlrprkuYnmj5DphpLmiJborablkYonLCAn6Ieq6KiC5o+Q6YaS5oiW6K2m5ZGKJyksXG5cdFx0XHRcdFx0XHQ2OiAn5omA5pyJ6K2m5ZGK5qih5p2/Jyxcblx0XHRcdFx0XHRcdDc6IHdpbmRvdy53Z1VMUygn6Ieq5Yqo6YCJ5oup5bGC57qnJywgJ+iHquWLlemBuOaTh+WxpOe0micpLFxuXHRcdFx0XHRcdFx0Ly8gOCB3YXMgdXNlZCBmb3IgYmxvY2sgdGVtcGxhdGVzIGJlZm9yZSAjMjYwXG5cdFx0XHRcdFx0XHQvLyA5IHdhcyBkZXByZWNhdGVkXG5cdFx0XHRcdFx0XHQvLyAxMCB3YXMgZGVwcmVjYXRlZFxuXHRcdFx0XHRcdFx0Ly8gMTEgd2FzIGRlcHJlY2F0ZWRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmNvbWJpbmVkU2luZ2xldE1lbnVzIChib29sZWFuKVxuXHRcdFx0XHQvLyBpZiB0cnVlLCBzaG93IG9uZSBtZW51IHdpdGggYm90aCBzaW5nbGUtaXNzdWUgbm90aWNlcyBhbmQgd2FybmluZ3MgaW5zdGVhZCBvZiB0d28gc2VwYXJhdGVseVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2NvbWJpbmVkU2luZ2xldE1lbnVzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbkuKTkuKrljZXlsYLnuqfoj5zljZXlkIjlubbmiJDkuIDkuKonLCAn5bCH5YWp5YCL5Zau5bGk57Sa6YG45Zau5ZCI5L215oiQ5LiA5YCLJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+W9k+WQr+eUqOatpOmAiemhueaXtu+8jOaXoOiuuum7mOiupOitpuWRiue6p+WIq+mAieaLqeWNleWxgue6p+mAmuefpeaIluWNleWxgue6p+itpuWRiueahuWxnuS6juatpOmhueOAgicsXG5cdFx0XHRcdFx0XHQn55W25ZWf55So5q2k6YG46aCF5pmC77yM54Sh6KuW6aCQ6Kit6K2m5ZGK57Sa5Yil6YG45pOH5Zau5bGk57Sa6YCa55+l5oiW5Zau5bGk57Sa6K2m5ZGK55qG5bGs5pa85q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLndhdGNoV2FybmluZ3MgKHN0cmluZylcblx0XHRcdFx0Ly8gV2F0Y2hsaXN0IHNldHRpbmcgZm9yIHRoZSBwYWdlIHdoaWNoIGhhcyBiZWVuIGRpc3BhdGNoZWQgYW4gd2FybmluZyBvciBub3RpY2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFdhcm5pbmdzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCforablkYrml7bliqDlhaXnlKjmiLforqjorrrpobXliLDnm5Hop4bliJfooagnLCAn6K2m5ZGK5pmC5Yqg5YWl5L2/55So6ICF6KiO6KuW6aCB5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9sZFNlbGVjdCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gaWYgdHJ1ZSwgdXNlIHRoZSBuYXRpdmUgc2VsZWN0IG1lbnUgcmF0aGVyIHRoZSBqcXVlcnkgY2hvc2VuLWJhc2VkIG9uZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29sZFNlbGVjdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L2/55So5LiN5Y+v5pCc57Si55qE57uP5YW46I+c5Y2VJywgJ+S9v+eUqOS4jeWPr+aQnOWwi+eahOe2k+WFuOmBuOWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjdXN0b21XYXJuaW5nTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6K2m5ZGK5qih5p2/JywgJ+iHquioguitpuWRiuaooeadvycpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XliqDlhaXmqKHmnb/miJbnlKjmiLflrZDpobXpnaLjgILoh6rlrprkuYnorablkYrkvJrlh7rnjrDlnKjorablkYrlr7nor53moYbkuK3igJzoh6rlrprkuYnorablkYrigJ3kuIDoioLjgIInLFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peWKoOWFpeaooeadv+aIluS9v+eUqOiAheWtkOmggemdouOAguiHquioguitpuWRiuacg+WHuuePvuWcqOitpuWRiuWwjeipseaWueWhiuS4reOAjOiHquioguitpuWRiuOAjeS4gOevgOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2X77yI5ZKM57yW6L6R5pGY6KaB77yJJywgJ+mhr+ekuueahOaWh+Wtl++8iOWSjOe3qOi8r+aRmOimge+8iScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WtmOW6n+iuqOiuuicsICflrZjlu6LoqI7oq5YnKSxcblx0XHRcdG1vZHVsZTogJ3hmZCcsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2xvZ1hmZE5vbWluYXRpb25zJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjnlKjmiLfnqbrpl7TkuK3orrDlvZXmiYDmnInlrZjlup/orqjorrrmj5DlkI0nLCAn5Zyo5L2/55So6ICF56m66ZaT5Lit6KiY6YyE5omA5pyJ5a2Y5bui6KiO6KuW5o+Q5ZCNJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivpeaXpeW/l+S+m+aCqOi/vei4quaJgOaciemAmui/h1R3aW5rbGXmj5DkuqTnmoTlrZjlup/orqjorronLFxuXHRcdFx0XHRcdFx0J+ipsuaXpeiqjOS+m+aCqOi/vei5pOaJgOaciemAj+mBjlR3aW5rbGXmj5DkuqTnmoTlrZjlu6LoqI7oq5YnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAneGZkTG9nUGFnZU5hbWUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOatpOmhteS/neeVmeaXpeW/lycsICflnKjmraTpoIHkv53nlZnml6XoqownKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5q2k5qGG5Lit6L6T5YWl5a2Q6aG16Z2i5ZCN56ew77yM5oKo5bCG5ZyoVXNlcjo8aT7nlKjmiLflkI08L2k+LzxpPuWtkOmhtemdojwvaT7mib7liLBYRkTml6Xlv5fjgILku4XlnKjlkK/nlKjml6Xlv5fml7blt6XkvZzjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei8uOWFpeWtkOmggemdouWQjeeose+8jOaCqOWwh+WcqFVzZXI6PGk+5L2/55So6ICF5ZCN56ixPC9pPi88aT7lrZDpoIHpnaI8L2k+5om+5YiwWEZE5pel6KqM44CC5YOF5Zyo5ZWf55So5pel6KqM5pmC5bel5L2c44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbm9Mb2dPblhmZE5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOS9v+eUqOS7peS4i+eQhueUseaXtuS4jeWBmuiusOW9lScsICflnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLkuI3lgZroqJjpjIQnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMueGZkQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLnhmZENyaXRlcmlhRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnhmZFdhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgYmVpbmcgbm9taW5hdGVkIGZvciBYZkQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAneGZkV2F0Y2hQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXmj5DlkI3nmoTpobXpnaLliLDnm5Hop4bliJfooagnLCAn5Yqg5YWl5o+Q5ZCN55qE6aCB6Z2i5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnhmZFdhdGNoRGlzY3Vzc2lvbiAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgWGZEIHBhZ2UgKGZvciB0aG9zZSBwcm9jZXNzZXMgdGhhdCBjcmVhdGUgZGlzY3Vzc2lvbiBwYWdlcyBmb3IgZWFjaCBub21pbmF0aW9uKSxcblx0XHRcdFx0Ly8gb3IgdGhlIGxpc3QgcGFnZSBmb3IgdGhlIG90aGVyIHByb2Nlc3Nlcy5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd4ZmRXYXRjaERpc2N1c3Npb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWtmOW6n+iuqOiuuumhteWIsOebkeinhuWIl+ihqCcsICfliqDlhaXlrZjlu6LoqI7oq5bpoIHliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+W9k+aXpeeahOmhtemdouOAgicsICfnlbbml6XnmoTpoIHpnaLjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcueGZkV2F0Y2hVc2VyIChzdHJpbmcpXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGxpc3Qgc2V0dGluZyBvZiB0aGUgdXNlciB0YWxrIHBhZ2UgaWYgdGhleSByZWNlaXZlIGEgbm90aWZpY2F0aW9uLlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3hmZFdhdGNoVXNlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfliqDlhaXliJvlu7rogIXorqjorrrpobXliLDnm5Hop4bliJfooajvvIjlnKjpgJrnn6Xml7bvvIknLFxuXHRcdFx0XHRcdFx0J+WKoOWFpeW7uueri+iAheiojuirlumggeWIsOebo+imlua4heWWru+8iOWcqOmAmuefpeaZgu+8iSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrWGZkUGFnZXNBc1BhdHJvbGxlZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5pe25qCH6K6w6aG16Z2i5Li65bey5beh5p+l77yI5aaC5Y+v6IO977yJJywgJ+aomeiomOaZguaomeiomOmggemdoueCuuW3suW3oeafpe+8iOWmguWPr+iDve+8iScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfln7rkuo7mioDmnK/ljp/lm6DvvIzpobXpnaLku4XkvJrlnKjnlLFTcGVjaWFsOk5ld1BhZ2Vz5Yiw6L6+5pe26KKr5qCH6K6w5Li65bey5beh5p+l44CCJyxcblx0XHRcdFx0XHRcdCfln7rmlrzmioDooZPljp/lm6DvvIzpoIHpnaLlg4XmnIPlnKjnlLFTcGVjaWFsOk5ld1BhZ2Vz5Yiw6YGU5pmC6KKr5qiZ6KiY54K65bey5beh5p+l44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ0Z3ZENzZFRvWGZkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DliKDnsbvlnovlop7liqDovazkuqToh6rlv6vpgJ/liKDpmaTlgJnpgIknLCAn5o+Q5Yiq6aGe5Yil5aKe5Yqg6L2J5Lqk6Ieq5b+r6YCf5Yiq6Zmk5YCZ6YG4JyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+ehruS/neaCqOWFheWIhuS6huino1tbTElCOuW/q+mAn+WIoOmZpOadoeS+i11d5omN5byA5ZCv5q2k5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCfoq4vnorrkv53mgqjlhYXliIbkuobop6NbW0xJQjrlv6vpgJ/liKrpmaTmop3kvotdXeaJjemWi+WVn+atpOWKn+iDveOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdhZmREZWZhdWx0Q2F0ZWdvcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOaPkOWIoOexu+WeiycsICfpoJDoqK3mj5DliKrpoZ7liKUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul6YCJ5oup4oCc55u45ZCM5LqO5LiK5qyh6YCJ5oup4oCd5bCG5L2/55SobG9jYWxTdG9yYWdl5p2l6K6w5b+G44CCJyxcblx0XHRcdFx0XHRcdCfoi6Xpgbjmk4fjgIznm7jlkIzmlrzkuIrmrKHpgbjmk4fjgI3lsIfkvb/nlKhsb2NhbFN0b3JhZ2XkvoboqJjmhrbjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczoge1xuXHRcdFx0XHRcdFx0ZGVsZXRlOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHRcdHNhbWU6IHdpbmRvdy53Z1VMUygn55u45ZCM5LqO5LiK5qyh6YCJ5oupJywgJ+ebuOWQjOaWvOS4iuasoemBuOaThycpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYWZkRmFtZURlZmF1bHRSZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWFs+azqOW6puaPkOWIoOeQhueUsScsICfpoJDoqK3pl5zms6jluqbmj5DliKrnkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+eUqOS6juaJuemHj+aPkOWIoOOAgicsICfnlKjmlrzmibnmrKHmj5DliKrjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdhZmRTdWJzdHViRGVmYXVsdFJlYXNvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5bCP5bCP5L2c5ZOB5o+Q5Yig55CG55SxJywgJ+mgkOioreWwj+Wwj+S9nOWTgeaPkOWIqueQhueUsScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn55So5LqO5om56YeP5o+Q5Yig44CCJywgJ+eUqOaWvOaJueasoeaPkOWIquOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WFs+mXreWtmOW6n+iuqOiuuicsICfpl5zplonlrZjlu6LoqI7oq5YnKSxcblx0XHRcdG1vZHVsZTogJ2Nsb3NlJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnWGZkQ2xvc2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOWtmOW6n+iuqOiuuuaYvuekuuWFs+mXreiuqOiuuuaMiemSricsICflnKjlrZjlu6LoqI7oq5bpoa/npLrpl5zplonoqI7oq5bmjInpiJUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6K+356Gu5L+d5oKo5YWF5YiG5LqG6KejW1tMSUI65Yig6Zmk5p2h5L6LXV3miY3lvIDlkK/mraTlip/og73jgIInLFxuXHRcdFx0XHRcdFx0J+iri+eiuuS/neaCqOWFheWIhuS6huino1tbTElCOuWIqumZpOaineS+i11d5omN6ZaL5ZWf5q2k5Yqf6IO944CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGhpZGU6IHdpbmRvdy53Z1VMUygn5LiN5pi+56S6JywgJ+S4jemhr+ekuicpLFxuXHRcdFx0XHRcdFx0bm9uYWRtaW5vbmx5OiB3aW5kb3cud2dVTFMoJ+WPquWMheWQq+mdnueuoeeQhuWRmOWPr+S9v+eUqOmAiemhuScsICflj6rljIXlkKvpnZ7nrqHnkIblk6Hlj6/kvb/nlKjpgbjpoIUnKSxcblx0XHRcdFx0XHRcdGFsbDogd2luZG93LndnVUxTKCfmmL7npLrmiYDmnInpgInpobknLCAn6aGv56S65omA5pyJ6YG46aCFJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfkvrXniq/okZfkvZzmnYMnLCAn5L6154qv6JGX5L2c5qyKJyksXG5cdFx0XHRtb2R1bGU6ICdjb3B5dmlvJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuY29weXZpb1dhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgYmVpbmcgbm9taW5hdGVkIGZvciBYZkQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY29weXZpb1dhdGNoUGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5o+Q5oql55qE6aG16Z2i5Yiw55uR6KeG5YiX6KGoJywgJ+WKoOWFpeaPkOWgseeahOmggemdouWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5jb3B5dmlvV2F0Y2hVc2VyIChzdHJpbmcpXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGxpc3Qgc2V0dGluZyBvZiB0aGUgdXNlciBpZiBoZSByZWNlaXZlcyBhIG5vdGlmaWNhdGlvbi5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjb3B5dmlvV2F0Y2hVc2VyJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WKoOWFpeWIm+W7uuiAheiuqOiuuumhteWIsOebkeinhuWIl+ihqO+8iOWcqOmAmuefpeaXtu+8iScsXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5bu656uL6ICF6KiO6KuW6aCB5Yiw55uj6KaW5riF5Zau77yI5Zyo6YCa55+l5pmC77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm1hcmtDb3B5dmlvUGFnZXNBc1BhdHJvbGxlZCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYsIHdoZW4gYXBwbHlpbmcgY29weXZpbyB0ZW1wbGF0ZSB0byBwYWdlLCB0byBtYXJrIHRoZSBwYWdlIGFzIHBhdHJvbGxlZCAoaWYgdGhlIHBhZ2Ugd2FzIHJlYWNoZWQgZnJvbSBOZXdQYWdlcylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOaXtuagh+iusOmhtemdouS4uuW3suW3oeafpe+8iOWmguWPr+iDve+8iScsICfmqJnoqJjmmYLmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Z+65LqO5oqA5pyv5Y6f5Zug77yM6aG16Z2i5LuF5Lya5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOi+vuaXtuiiq+agh+iusOS4uuW3suW3oeafpeOAgicsXG5cdFx0XHRcdFx0XHQn5Z+65pa85oqA6KGT5Y6f5Zug77yM6aCB6Z2i5YOF5pyD5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOmBlOaZguiiq+aomeiomOeCuuW3suW3oeafpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfpmpDol48nLCAn6Zqx6JePJyksXG5cdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHQvLyB0d2lua2xlLmpzOiBwb3J0bGV0IHNldHVwXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncG9ydGxldEFyZWEnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXRJZCcsXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncG9ydGxldE5hbWUnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXRUeXBlJyxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwb3J0bGV0TmV4dCcsXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIHR3aW5rbGVmbHVmZi5qczogZGVmaW5lcyBob3cgbWFueSByZXZpc2lvbiB0byBxdWVyeSBtYXhpbXVtLCBtYXhpbXVtIHBvc3NpYmxlIGlzIDUwLCBkZWZhdWx0IGlzIDUwXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncmV2ZXJ0TWF4UmV2aXNpb25zJyxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIHR3aW5rbGViYXRjaGRlbGV0ZS5qczogSG93IG1hbnkgcGFnZXMgc2hvdWxkIGJlIHByb2Nlc3NlZCBtYXhpbXVtXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYmF0Y2hNYXgnLFxuXHRcdFx0XHRcdHR5cGU6ICdpbnRlZ2VyJyxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIEhvdyBtYW55IHBhZ2VzIHNob3VsZCBiZSBwcm9jZXNzZWQgYXQgYSB0aW1lIGJ5IGRlcHJvZCBhbmQgYmF0Y2hkZWxldGUvcHJvdGVjdC91bmRlbGV0ZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2JhdGNoQ2h1bmtzJyxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdOyAvLyBlbmQgb2YgVHdpbmtsZS5jb25maWcuc2VjdGlvbnNcblx0VHdpbmtsZS5jb25maWcuaW5pdCA9ICgpID0+IHtcblx0XHQvLyBjcmVhdGUgdGhlIGNvbmZpZyBwYWdlIGF0IFR3aW5rbGUuZ2V0UHJlZignY29uZmlnUGFnZScpXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSA9PT0gVHdpbmtsZS5nZXRQcmVmKCdjb25maWdQYWdlJykgJiYgbXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ3ZpZXcnKSB7XG5cdFx0XHRpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0d2lua2xlLWNvbmZpZycpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gbWF5YmUgdGhlIHBhZ2UgaXMgbWlzY29uZmlndXJlZCwgb3Igc29tZXRoaW5nIC0gYnV0IGFueSBhdHRlbXB0IHRvIG1vZGlmeSBpdCB3aWxsIGJlIHBvaW50bGVzc1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29udGVudGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0d2lua2xlLWNvbmZpZy1jb250ZW50Jyk7XG5cdFx0XHRjb250ZW50ZGl2LnRleHRDb250ZW50ID0gJyc7IC8vIGNsZWFyIGNoaWxkcmVuXG5cdFx0XHQvLyBzdGFydCBhIHRhYmxlIG9mIGNvbnRlbnRzXG5cdFx0XHRjb25zdCB0b2N0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0dG9jdGFibGUuY2xhc3NOYW1lID0gJ3RvYyc7XG5cdFx0XHR0b2N0YWJsZS5zdHlsZS5tYXJnaW5MZWZ0ID0gJzAuNGVtJztcblx0XHRcdC8vIGNyZWF0ZSBUT0MgdGl0bGVcblx0XHRcdGNvbnN0IHRvY3RpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHR0b2N0aXRsZS5pZCA9ICd0b2N0aXRsZSc7XG5cdFx0XHRjb25zdCB0b2NoMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gyJyk7XG5cdFx0XHR0b2NoMi50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn55uu5b2VICcsICfnm67pjIQgJyk7XG5cdFx0XHR0b2N0aXRsZS5hcHBlbmRDaGlsZCh0b2NoMik7XG5cdFx0XHQvLyBhZGQgVE9DIHNob3cvaGlkZSBsaW5rXG5cdFx0XHRjb25zdCB0b2N0b2dnbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHR0b2N0b2dnbGUuY2xhc3NOYW1lID0gJ3RvY3RvZ2dsZSc7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1snKSk7XG5cdFx0XHRjb25zdCB0b2N0b2dnbGVsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0dG9jdG9nZ2xlbGluay5jbGFzc05hbWUgPSAnaW50ZXJuYWwnO1xuXHRcdFx0dG9jdG9nZ2xlbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnI3R3LXRvY3Nob3doaWRlJyk7XG5cdFx0XHR0b2N0b2dnbGVsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfpmpDol48nLCAn6Zqx6JePJyk7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQodG9jdG9nZ2xlbGluayk7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ10nKSk7XG5cdFx0XHR0b2N0aXRsZS5hcHBlbmRDaGlsZCh0b2N0b2dnbGUpO1xuXHRcdFx0dG9jdGFibGUuYXBwZW5kQ2hpbGQodG9jdGl0bGUpO1xuXHRcdFx0Ly8gY3JlYXRlIGl0ZW0gY29udGFpbmVyOiB0aGlzIGlzIHdoYXQgd2UgYWRkIHN0dWZmIHRvXG5cdFx0XHRjb25zdCB0b2N1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7XG5cdFx0XHR0b2N0b2dnbGVsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCAkdG9jdWwgPSAkKHRvY3VsKTtcblx0XHRcdFx0XHQkdG9jdWwudG9nZ2xlKCk7XG5cdFx0XHRcdFx0aWYgKCR0b2N1bC5maW5kKCc6dmlzaWJsZScpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dG9jdG9nZ2xlbGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6ZqQ6JePJywgJ+maseiXjycpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0b2N0b2dnbGVsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfmmL7npLonLCAn6aGv56S6Jyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmYWxzZVxuXHRcdFx0KTtcblx0XHRcdHRvY3RhYmxlLmFwcGVuZENoaWxkKHRvY3VsKTtcblx0XHRcdGNvbnRlbnRkaXYuYXBwZW5kQ2hpbGQodG9jdGFibGUpO1xuXHRcdFx0Y29uc3QgY29udGVudGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2NyaXB0LXVybFxuXHRcdFx0Y29udGVudGZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAnamF2YXNjcmlwdDp2b2lkKDApJyk7IC8vIHdhcyAjdHctc2F2ZSAtIGNoYW5nZWQgdG8gdm9pZCgwKSB0byB3b3JrIGFyb3VuZCBDaHJvbWUgaXNzdWVcblx0XHRcdGNvbnRlbnRmb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIFR3aW5rbGUuY29uZmlnLnNhdmUsIHRydWUpO1xuXHRcdFx0Y29udGVudGRpdi5hcHBlbmRDaGlsZChjb250ZW50Zm9ybSk7XG5cdFx0XHRjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xuXHRcdFx0Y29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuXHRcdFx0Y29udGVudGZvcm0uYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblx0XHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdFx0aWYgKHNlY3Rpb24uaGlkZGVuIHx8IChzZWN0aW9uLmFkbWluT25seSAmJiAhTW9yZWJpdHMudXNlcklzU3lzb3ApKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGkuZS4gXCJjb250aW51ZVwiIGluIHRoaXMgY29udGV4dFxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGFkZCB0byBUT0Ncblx0XHRcdFx0Y29uc3QgdG9jbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuXHRcdFx0XHR0b2NsaS5jbGFzc05hbWUgPSAndG9jbGV2ZWwtMSc7XG5cdFx0XHRcdGNvbnN0IHRvY2EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdHRvY2Euc2V0QXR0cmlidXRlKCdocmVmJywgYCMke3NlY3Rpb24ubW9kdWxlfWApO1xuXHRcdFx0XHR0b2NhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlY3Rpb24udGl0bGUpKTtcblx0XHRcdFx0dG9jbGkuYXBwZW5kQ2hpbGQodG9jYSk7XG5cdFx0XHRcdHRvY3VsLmFwcGVuZENoaWxkKHRvY2xpKTtcblx0XHRcdFx0bGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0XHRcdGxldCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0Y2VsbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMycpO1xuXHRcdFx0XHRjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDQnKTtcblx0XHRcdFx0aGVhZGluZy5zdHlsZS5ib3JkZXJCb3R0b20gPSAnMXB4IHNvbGlkICM4MDgwODAnO1xuXHRcdFx0XHRoZWFkaW5nLnN0eWxlLm1hcmdpblRvcCA9ICcwLjJlbSc7XG5cdFx0XHRcdGhlYWRpbmcuaWQgPSBzZWN0aW9uLm1vZHVsZTtcblx0XHRcdFx0aGVhZGluZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWN0aW9uLnRpdGxlKSk7XG5cdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoaGVhZGluZyk7XG5cdFx0XHRcdHJvdy5hcHBlbmRDaGlsZChjZWxsKTtcblx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZENoaWxkKHJvdyk7XG5cdFx0XHRcdGxldCByb3djb3VudCA9IDE7IC8vIGZvciByb3cgYmFuZGluZ1xuXHRcdFx0XHQvLyBhZGQgZWFjaCBvZiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIGZvcm1cblx0XHRcdFx0JChzZWN0aW9uLnByZWZlcmVuY2VzKS5lYWNoKChwcmVma2V5LCBwcmVmKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHByZWYuYWRtaW5Pbmx5ICYmICFNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGkuZS4gXCJjb250aW51ZVwiIGluIHRoaXMgY29udGV4dFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0XHRcdFx0cm93LnN0eWxlLm1hcmdpbkJvdHRvbSA9ICcwLjJlbSc7XG5cdFx0XHRcdFx0Ly8gY3JlYXRlIG9kZCByb3cgYmFuZGluZ1xuXHRcdFx0XHRcdGlmIChyb3djb3VudCsrICUgMiA9PT0gMCkge1xuXHRcdFx0XHRcdFx0cm93LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2IoMTI4IDEyOCAxMjgvLjEpJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0bGV0IGxhYmVsO1xuXHRcdFx0XHRcdGxldCBpbnB1dDtcblx0XHRcdFx0XHRjb25zdCBnb3RQcmVmID0gVHdpbmtsZS5nZXRQcmVmKHByZWYubmFtZSk7XG5cdFx0XHRcdFx0c3dpdGNoIChwcmVmLnR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOlxuXHRcdFx0XHRcdFx0XHQvLyBjcmVhdGUgYSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRjZWxsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcyJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuY2hlY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVmLmxhYmVsKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3N0cmluZyc6IC8vIGNyZWF0ZSBhbiBpbnB1dCBib3hcblx0XHRcdFx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBpbnB1dCBib3ggdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ2lkJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0aWYgKHByZWYudHlwZSA9PT0gJ2ludGVnZXInKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdzaXplJywgNik7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ251bWJlcicpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnc3RlcCcsICcxJyk7IC8vIGludGVnZXJzIG9ubHlcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGdvdFByZWYpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2VudW0nOiB7XG5cdFx0XHRcdFx0XHRcdC8vIGNyZWF0ZSBhIGNvbWJvIGJveFxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdC8vIG5vdGU6IGR1cGxpY2F0ZXMgdGhlIGNvZGUgYWJvdmUsIHVuZGVyIHN0cmluZy9pbnRlZ2VyXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBpbnB1dCBib3ggdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGxldCBvcHRpb25FeGlzdHMgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbZW51bXZhbHVlLCBlbnVtZGlzcGxheV0gb2YgT2JqZWN0LmVudHJpZXMocHJlZi5lbnVtVmFsdWVzKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZW51bXZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmID09PSBlbnVtdmFsdWUgfHxcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhY2sgdG8gY29udmVydCBvbGQgYm9vbGVhbiB3YXRjaGxpc3QgcHJlZnNcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHRvIGNvcnJlc3BvbmRpbmcgZW51bXMgKGFkZGVkIGluIHYyLjEpXG5cdFx0XHRcdFx0XHRcdFx0XHQodHlwZW9mIGdvdFByZWYgPT09ICdib29sZWFuJyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoKGdvdFByZWYgJiYgZW51bXZhbHVlID09PSAneWVzJykgfHwgKCFnb3RQcmVmICYmIGVudW12YWx1ZSA9PT0gJ25vJykpKVxuXHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCAnc2VsZWN0ZWQnKTtcblx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbkV4aXN0cyA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlbnVtZGlzcGxheSkpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LmFwcGVuZENoaWxkKG9wdGlvbik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gQXBwZW5kIHVzZXItZGVmaW5lZCB2YWx1ZSB0byBvcHRpb25zXG5cdFx0XHRcdFx0XHRcdGlmICghb3B0aW9uRXhpc3RzKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBnb3RQcmVmKTtcblx0XHRcdFx0XHRcdFx0XHRvcHRpb24uc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpO1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnb3RQcmVmKSk7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuYXBwZW5kQ2hpbGQob3B0aW9uKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGlucHV0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlICdzZXQnOiB7XG5cdFx0XHRcdFx0XHRcdC8vIGNyZWF0ZSBhIHNldCBvZiBjaGVjayBib3hlc1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgZmlyc3Qgb2YgYWxsXG5cdFx0XHRcdFx0XHRcdGNlbGwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzInKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpOyAvLyBub3QgcmVhbGx5IG5lY2Vzc2FyeSB0byB1c2UgYSBsYWJlbCBlbGVtZW50IGhlcmUsIGJ1dCB3ZSBkbyBpdCBmb3IgY29uc2lzdGVuY3kgb2Ygc3R5bGluZ1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgJHtwcmVmLmxhYmVsfe+8mmApKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChsYWJlbCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNoZWNrZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0XHRcdGNoZWNrZGl2LnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzFlbSc7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHdvcmtlciA9IChpdGVta2V5LCBpdGVtdmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjaGVja2xhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHRcdFx0XHRcdFx0XHRjaGVja2xhYmVsLnN0eWxlLm1hcmdpblJpZ2h0ID0gJzAuN2VtJztcblx0XHRcdFx0XHRcdFx0XHRjaGVja2xhYmVsLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjaGVjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2suc2V0QXR0cmlidXRlKCd0eXBlJywgJ2NoZWNrYm94Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2suc2V0QXR0cmlidXRlKCdpZCcsIGAke3ByZWYubmFtZX1fJHtpdGVta2V5fWApO1xuXHRcdFx0XHRcdFx0XHRcdGNoZWNrLnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke3ByZWYubmFtZX1fJHtpdGVta2V5fWApO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmICYmIGdvdFByZWYuaW5jbHVkZXMoaXRlbWtleSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNoZWNrLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBjYXRlciBmb3IgbGVnYWN5IGludGVnZXIgYXJyYXkgdmFsdWVzIGZvciB1bmxpbmtOYW1lc3BhY2VzICh0aGlzIGNhbiBiZSByZW1vdmVkIGEgZmV3IHllYXJzIGRvd24gdGhlIHRyYWNrLi4uKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdHByZWYubmFtZSA9PT0gJ3VubGlua05hbWVzcGFjZXMnICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmLmluY2x1ZGVzKE51bWJlci5wYXJzZUludChpdGVta2V5LCAxMCkpXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVjay5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5hcHBlbmRDaGlsZChjaGVjayk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpdGVtdmFsdWUpKTtcblx0XHRcdFx0XHRcdFx0XHRjaGVja2Rpdi5hcHBlbmRDaGlsZChjaGVja2xhYmVsKTtcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0aWYgKHByZWYuc2V0RGlzcGxheU9yZGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gYWRkIGNoZWNrIGJveGVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZGlzcGxheSBvcmRlclxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBwcmVmLnNldERpc3BsYXlPcmRlcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0d29ya2VyKGl0ZW0sIHByZWYuc2V0VmFsdWVzW2l0ZW1dKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gYWRkIGNoZWNrIGJveGVzIGFjY29yZGluZyB0byB0aGUgb3JkZXIgaXQgZ2V0cyBmZWQgdG8gdXMgKHByb2JhYmx5IHN0cmljdCBhbHBoYWJldGljYWwpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbaXRlbWtleSwgaXRlbXZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcmVmLnNldFZhbHVlcykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdvcmtlcihpdGVta2V5LCBpdGVtdmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGNoZWNrZGl2KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlICdjdXN0b21MaXN0Jzoge1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBidXR0b24gdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3VzdG9tTGlzdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLnNldEF0dHJpYnV0ZSgnaWQnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGN1c3RvbUxpc3RCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgVHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5kaXNwbGF5LCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdC8vIHVzZSBqUXVlcnkgZGF0YSBvbiB0aGUgYnV0dG9uIHRvIHN0b3JlIHRoZSBjdXJyZW50IGNvbmZpZyB2YWx1ZVxuXHRcdFx0XHRcdFx0XHQkKGN1c3RvbUxpc3RCdXR0b24pLmRhdGEoe1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBnb3RQcmVmLFxuXHRcdFx0XHRcdFx0XHRcdHByZWYsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn57yW6L6R6aG555uuJywgJ+e3qOi8r+mgheebricpKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoY3VzdG9tTGlzdEJ1dHRvbik7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0bXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiDmnKrnn6XnsbvlnovnmoTlsZ7mgKcgJHtwcmVmLm5hbWV9YCwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlY29uZmlnJyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0Ly8gYWRkIGhlbHAgdGlwXG5cdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0Y2VsbC5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0XHRcdGNlbGwuc3R5bGUuY29sb3IgPSAnZ3JheSc7XG5cdFx0XHRcdFx0aWYgKHByZWYuaGVscHRpcCkge1xuXHRcdFx0XHRcdFx0Ly8gY29udmVydCBtZW50aW9ucyBvZiB0ZW1wbGF0ZXMgaW4gdGhlIGhlbHB0aXAgdG8gY2xpY2thYmxlIGxpbmtzXG5cdFx0XHRcdFx0XHRjZWxsLmlubmVySFRNTCA9IHByZWYuaGVscHRpcFxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0XHQve3soLis/KX19L2csXG5cdFx0XHRcdFx0XHRcdFx0YHt7PGEgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1RlbXBsYXRlOicpfSQxXCIgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kMTwvYT59fWBcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0XHQvXFxbXFxbKC4rPyldXS9nLFxuXHRcdFx0XHRcdFx0XHRcdGA8YSBocmVmPVwiJHttdy51dGlsLmdldFVybCgnJyl9JDFcIiByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiPiQxPC9hPmBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gYWRkIHJlc2V0IGxpbmsgKGN1c3RvbSBsaXN0cyBkb24ndCBuZWVkIHRoaXMsIGFzIHRoZWlyIGNvbmZpZyB2YWx1ZSBpc24ndCBkaXNwbGF5ZWQgb24gdGhlIGZvcm0pXG5cdFx0XHRcdFx0aWYgKHByZWYudHlwZSAhPT0gJ2N1c3RvbUxpc3QnKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXNldGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgJyN0dy1yZXNldCcpO1xuXHRcdFx0XHRcdFx0cmVzZXRsaW5rLnNldEF0dHJpYnV0ZSgnaWQnLCBgdHdpbmtsZS1jb25maWctcmVzZXQtJHtwcmVmLm5hbWV9YCk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBUd2lua2xlLmNvbmZpZy5yZXNldFByZWZMaW5rLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc3R5bGUuY3NzRmxvYXQgPSAncmlnaHQnO1xuXHRcdFx0XHRcdFx0cmVzZXRsaW5rLnN0eWxlLm1hcmdpbiA9ICcwIDAuNmVtJztcblx0XHRcdFx0XHRcdHJlc2V0bGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ+WkjeS9jScsICflvqnkvY0nKSkpO1xuXHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChyZXNldGxpbmspO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZENoaWxkKHJvdyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZm9vdGVyYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRmb290ZXJib3guc2V0QXR0cmlidXRlKCdpZCcsICd0d2lua2xlLWNvbmZpZy1idXR0b25wYW5lJyk7XG5cdFx0XHRmb290ZXJib3guc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNCQ0NBREYnO1xuXHRcdFx0Zm9vdGVyYm94LnN0eWxlLnBhZGRpbmcgPSAnMC41ZW0nO1xuXHRcdFx0Y29uc3Qgc3VibWl0QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0XHRzdWJtaXRCdXR0b24uc2V0QXR0cmlidXRlKCdpZCcsICd0d2lua2xlLWNvbmZpZy1zdWJtaXQnKTtcblx0XHRcdHN1Ym1pdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7XG5cdFx0XHRzdWJtaXRCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCfkv53lrZjkv67mlLknLCAn5YSy5a2Y5L+u5pS5JykpKTtcblx0XHRcdGZvb3RlcmJveC5hcHBlbmRDaGlsZChzdWJtaXRCdXR0b24pO1xuXHRcdFx0Y29uc3QgZm9vdGVyc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdGZvb3RlcnNwYW4uY2xhc3NOYW1lID0gJ3BsYWlubGlua3MnO1xuXHRcdFx0Zm9vdGVyc3Bhbi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzIuNGVtJztcblx0XHRcdGZvb3RlcnNwYW4uc3R5bGUuZm9udFNpemUgPSAnOTAlJztcblx0XHRcdGNvbnN0IGZvb3RlcmEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRmb290ZXJhLnNldEF0dHJpYnV0ZSgnaHJlZicsICcjdHctcmVzZXQtYWxsJyk7XG5cdFx0XHRmb290ZXJhLnNldEF0dHJpYnV0ZSgnaWQnLCAndHdpbmtsZS1jb25maWctcmVzZXRhbGwnKTtcblx0XHRcdGZvb3RlcmEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBUd2lua2xlLmNvbmZpZy5yZXNldEFsbFByZWZzLCBmYWxzZSk7XG5cdFx0XHRmb290ZXJhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn5oGi5aSN6buY6K6kJywgJ+aBouW+qemgkOiorScpKSk7XG5cdFx0XHRmb290ZXJzcGFuLmFwcGVuZENoaWxkKGZvb3RlcmEpO1xuXHRcdFx0Zm9vdGVyYm94LmFwcGVuZENoaWxkKGZvb3RlcnNwYW4pO1xuXHRcdFx0Y29udGVudGZvcm0uYXBwZW5kQ2hpbGQoZm9vdGVyYm94KTtcblx0XHRcdC8vIHNpbmNlIGFsbCB0aGUgc2VjdGlvbiBoZWFkZXJzIGV4aXN0IG5vdywgd2UgY2FuIHRyeSBnb2luZyB0byB0aGUgcmVxdWVzdGVkIGFuY2hvclxuXHRcdFx0aWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoKSB7XG5cdFx0XHRcdGNvbnN0IGxvYyA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcnO1xuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaGFzaCA9IGxvYztcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKS51c2VyICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykuaW5kZXhPZihtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpID09PSAwICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykuc2xpY2UoLTMpID09PSAnLmpzJ1xuXHRcdCkge1xuXHRcdFx0Y29uc3QgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHQvLyBTdHlsZWQgaW4gdHdpbmtsZS5jc3Ncblx0XHRcdGJveC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R3aW5rbGUtY29uZmlnLWhlYWRlcmJveCcpO1xuXHRcdFx0bGV0IGxpbms7XG5cdFx0XHRjb25zdCBzY3JpcHRQYWdlTmFtZSA9IG13LmNvbmZpZ1xuXHRcdFx0XHQuZ2V0KCd3Z1BhZ2VOYW1lJylcblx0XHRcdFx0LnNsaWNlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKS5sYXN0SW5kZXhPZignLycpICsgMSxcblx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykubGFzdEluZGV4T2YoJy5qcycpXG5cdFx0XHRcdCk7XG5cdFx0XHRpZiAoc2NyaXB0UGFnZU5hbWUgPT09ICd0d2lua2xlb3B0aW9ucycpIHtcblx0XHRcdFx0Ly8gcGxhY2UgXCJ3aHkgbm90IHRyeSB0aGUgcHJlZmVyZW5jZSBwYW5lbFwiIG5vdGljZVxuXHRcdFx0XHRib3guc2V0QXR0cmlidXRlKCdjbGFzcycsICdjb25maWctdHdvcHQtYm94Jyk7XG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpID4gMCkge1xuXHRcdFx0XHRcdC8vIHBhZ2UgZXhpc3RzXG5cdFx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdFx0ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6L+Z6aG15YyF5ZCr5oKo55qEVHdpbmtsZeWPguaVsOiuvue9ru+8jOaCqOWPr+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+mAmemggeWMheWQq+aCqOeahFR3aW5rbGXlgY/lpb3oqK3lrprvvIzmgqjlj6/kvb/nlKgnXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHBhZ2UgZG9lcyBub3QgZXhpc3Rcblx0XHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0XHRkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmgqjlj6/phY3nva7mgqjnmoRUd2lua2xl77yM6YCa6L+H5L2/55SoJywgJ+aCqOWPr+mFjee9ruaCqOeahFR3aW5rbGXvvIzpgJrpgY7kvb/nlKgnKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChUd2lua2xlLmdldFByZWYoJ2NvbmZpZ1BhZ2UnKSkpO1xuXHRcdFx0XHRsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygnVHdpbmtsZeWPguaVsOiuvue9rumdouadvycsICdUd2lua2xl5YGP5aW96Kit5a6a6Z2i5p2/JykpKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKGxpbmspO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCfvvIzmiJbnm7TmjqXnvJbovpHmnKzpobXjgIInLCAn77yM5oiW55u05o6l57eo6Lyv5pys6aCB44CCJykpKTtcblx0XHRcdFx0JChib3gpLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyNjb250ZW50U3ViJykpO1xuXHRcdFx0fSBlbHNlIGlmIChbJ3ZlY3RvcicsICd2ZWN0b3ItMjAyMicsICdnb25nYmknLCAnY2l0aXplbicsICdjb21tb24nXS5pbmNsdWRlcyhzY3JpcHRQYWdlTmFtZSkpIHtcblx0XHRcdFx0Ly8gcGxhY2UgXCJMb29raW5nIGZvciBUd2lua2xlIG9wdGlvbnM/XCIgbm90aWNlXG5cdFx0XHRcdGJveC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2NvbmZpZy11c2Vyc2tpbi1ib3gnKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfoi6Xmgqjmg7PphY3nva7mgqjnmoRUd2lua2xl77yM6K+35L2/55SoJywgJ+iLpeaCqOaDs+mFjee9ruaCqOeahFR3aW5rbGXvvIzoq4vkvb/nlKgnKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChUd2lua2xlLmdldFByZWYoJ2NvbmZpZ1BhZ2UnKSkpO1xuXHRcdFx0XHRsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygnVHdpbmtsZeWPguaVsOiuvue9rumdouadvycsICdUd2lua2xl5YGP5aW96Kit5a6a6Z2i5p2/JykpKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKGxpbmspO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ+OAgicpKTtcblx0XHRcdFx0JChib3gpLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyNjb250ZW50U3ViJykpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0Ly8gY3VzdG9tIGxpc3QtcmVsYXRlZCBzdHVmZlxuXHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nID0ge307XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuYWRkUm93ID0gKGRsZ3RhYmxlLCB2YWx1ZSwgbGFiZWwpID0+IHtcblx0XHRjb25zdCBjb250ZW50dHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuXHRcdC8vIFwicmVtb3ZlXCIgYnV0dG9uXG5cdFx0bGV0IGNvbnRlbnR0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0Y29uc3QgcmVtb3ZlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0cmVtb3ZlQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcblx0XHRyZW1vdmVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdCQoY29udGVudHRyKS5yZW1vdmUoKTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0cmVtb3ZlQnV0dG9uLnRleHRDb250ZW50ID0gJ+enu+mZpCc7XG5cdFx0Y29udGVudHRkLmFwcGVuZENoaWxkKHJlbW92ZUJ1dHRvbik7XG5cdFx0Y29udGVudHRyLmFwcGVuZENoaWxkKGNvbnRlbnR0ZCk7XG5cdFx0Ly8gdmFsdWUgaW5wdXQgYm94XG5cdFx0Y29udGVudHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRsZXQgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XG5cdFx0aW5wdXQuY2xhc3NOYW1lID0gJ3R3aW5rbGUtY29uZmlnLWN1c3RvbWxpc3QtdmFsdWUnO1xuXHRcdGlucHV0LnN0eWxlLndpZHRoID0gJzk3JSc7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xuXHRcdH1cblx0XHRjb250ZW50dGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdGNvbnRlbnR0ci5hcHBlbmRDaGlsZChjb250ZW50dGQpO1xuXHRcdC8vIGxhYmVsIGlucHV0IGJveFxuXHRcdGNvbnRlbnR0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XG5cdFx0aW5wdXQuY2xhc3NOYW1lID0gJ3R3aW5rbGUtY29uZmlnLWN1c3RvbWxpc3QtbGFiZWwnO1xuXHRcdGlucHV0LnN0eWxlLndpZHRoID0gJzk4JSc7XG5cdFx0aWYgKGxhYmVsKSB7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgbGFiZWwpO1xuXHRcdH1cblx0XHRjb250ZW50dGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdGNvbnRlbnR0ci5hcHBlbmRDaGlsZChjb250ZW50dGQpO1xuXHRcdGRsZ3RhYmxlLmFwcGVuZENoaWxkKGNvbnRlbnR0cik7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuZGlzcGxheSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgJHByZWZidXR0b24gPSAkKGUudGFyZ2V0KTtcblx0XHRjb25zdCBjdXJ2YWx1ZSA9ICRwcmVmYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0Y29uc3QgY3VycHJlZiA9ICRwcmVmYnV0dG9uLmRhdGEoJ3ByZWYnKTtcblx0XHRjb25zdCBkaWFsb2cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDcyMCwgNDAwKTtcblx0XHRkaWFsb2cuc2V0VGl0bGUoY3VycHJlZi5sYWJlbCk7XG5cdFx0ZGlhbG9nLnNldFNjcmlwdE5hbWUod2luZG93LndnVUxTKCdUd2lua2xl5Y+C5pWw6K6+572uJywgJ1R3aW5rbGXlgY/lpb3oqK3lrponKSk7XG5cdFx0Y29uc3QgZGlhbG9nY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdGNvbnN0IGRsZ3RhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcblx0XHRkbGd0YWJsZS5jbGFzc05hbWUgPSAnd2lraXRhYmxlJztcblx0XHRkbGd0YWJsZS5zdHlsZS5tYXJnaW4gPSAnMS40ZW0gMWVtJztcblx0XHRkbGd0YWJsZS5zdHlsZS53aWR0aCA9ICc5NyUnO1xuXHRcdGNvbnN0IGRsZ3Rib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTtcblx0XHQvLyBoZWFkZXIgcm93XG5cdFx0bGV0IGRsZ3RyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcblx0XHQvLyB0b3AtbGVmdCBjZWxsXG5cdFx0bGV0IGRsZ3RoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGgnKTtcblx0XHRkbGd0aC5zdHlsZS53aWR0aCA9ICc1JSc7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdC8vIHZhbHVlIGNvbHVtbiBoZWFkZXJcblx0XHRkbGd0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoJyk7XG5cdFx0ZGxndGguc3R5bGUud2lkdGggPSAnMzUlJztcblx0XHRkbGd0aC50ZXh0Q29udGVudCA9IGN1cnByZWYuY3VzdG9tTGlzdFZhbHVlVGl0bGUgPz8gd2luZG93LndnVUxTKCfmlbDlgLwnLCAn5pW45YC8Jyk7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdC8vIGxhYmVsIGNvbHVtbiBoZWFkZXJcblx0XHRkbGd0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoJyk7XG5cdFx0ZGxndGguc3R5bGUud2lkdGggPSAnNjAlJztcblx0XHRkbGd0aC50ZXh0Q29udGVudCA9IGN1cnByZWYuY3VzdG9tTGlzdExhYmVsVGl0bGUgPz8gd2luZG93LndnVUxTKCfmoIfnrb4nLCAn5qiZ57GkJyk7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdGRsZ3Rib2R5LmFwcGVuZENoaWxkKGRsZ3RyKTtcblx0XHQvLyBjb250ZW50IHJvd3Ncblx0XHRsZXQgZ290Um93ID0gZmFsc2U7XG5cdFx0Zm9yIChjb25zdCB2IG9mIGN1cnZhbHVlKSB7XG5cdFx0XHRnb3RSb3cgPSB0cnVlO1xuXHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3coZGxndGJvZHksIHYudmFsdWUsIHYubGFiZWwpO1xuXHRcdH1cblx0XHQvLyBpZiB0aGVyZSBhcmUgbm8gdmFsdWVzIHByZXNlbnQsIGFkZCBhIGJsYW5rIHJvdyB0byBzdGFydCB0aGUgdXNlciBvZmZcblx0XHRpZiAoIWdvdFJvdykge1xuXHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3coZGxndGJvZHkpO1xuXHRcdH1cblx0XHQvLyBmaW5hbCBcImFkZFwiIGJ1dHRvblxuXHRcdGNvbnN0IGRsZ3Rmb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGZvb3QnKTtcblx0XHRkbGd0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0Y29uc3QgZGxndGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuXHRcdGRsZ3RkLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICczJyk7XG5cdFx0Y29uc3QgYWRkQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0YWRkQnV0dG9uLnN0eWxlLm1pbldpZHRoID0gJzhlbSc7XG5cdFx0YWRkQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcblx0XHRhZGRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuYWRkUm93KGRsZ3Rib2R5KTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0YWRkQnV0dG9uLnRleHRDb250ZW50ID0gJ+a3u+WKoCc7XG5cdFx0ZGxndGQuYXBwZW5kQ2hpbGQoYWRkQnV0dG9uKTtcblx0XHRkbGd0ci5hcHBlbmRDaGlsZChkbGd0ZCk7XG5cdFx0ZGxndGZvb3QuYXBwZW5kQ2hpbGQoZGxndHIpO1xuXHRcdGRsZ3RhYmxlLmFwcGVuZENoaWxkKGRsZ3Rib2R5KTtcblx0XHRkbGd0YWJsZS5hcHBlbmRDaGlsZChkbGd0Zm9vdCk7XG5cdFx0ZGlhbG9nY29udGVudC5hcHBlbmRDaGlsZChkbGd0YWJsZSk7XG5cdFx0Ly8gYnV0dG9ucGFuZSBidXR0b25zOiBbU2F2ZSBjaGFuZ2VzXSBbUmVzZXRdIFtDYW5jZWxdXG5cdFx0bGV0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuXHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7IC8vIHNvIE1vcmViaXRzLnNpbXBsZVdpbmRvdyBwdXRzIHRoZSBidXR0b24gaW4gdGhlIGJ1dHRvbiBwYW5lXG5cdFx0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHQnY2xpY2snLFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLnNhdmUoJHByZWZidXR0b24sIGRsZ3Rib2R5KTtcblx0XHRcdFx0ZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHR9LFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn5L+d5a2Y5L+u5pS5JywgJ+WEsuWtmOS/ruaUuScpO1xuXHRcdGRpYWxvZ2NvbnRlbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblx0XHRidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRidXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3N1Ym1pdCcpOyAvLyBzbyBNb3JlYml0cy5zaW1wbGVXaW5kb3cgcHV0cyB0aGUgYnV0dG9uIGluIHRoZSBidXR0b24gcGFuZVxuXHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0J2NsaWNrJyxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5yZXNldCgkcHJlZmJ1dHRvbiwgZGxndGJvZHkpO1xuXHRcdFx0fSxcblx0XHRcdGZhbHNlXG5cdFx0KTtcblx0XHRidXR0b24udGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+WkjeS9jScsICflvqnkvY0nKTtcblx0XHRkaWFsb2djb250ZW50LmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cdFx0YnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdzdWJtaXQnKTsgLy8gc28gTW9yZWJpdHMuc2ltcGxlV2luZG93IHB1dHMgdGhlIGJ1dHRvbiBpbiB0aGUgYnV0dG9uIHBhbmVcblx0XHRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGRpYWxvZy5jbG9zZSgpOyAvLyB0aGUgZXZlbnQgcGFyYW1ldGVyIG9uIHRoaXMgZnVuY3Rpb24gc2VlbXMgdG8gYmUgYnJva2VuXG5cdFx0XHR9LFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9ICflj5bmtognO1xuXHRcdGRpYWxvZ2NvbnRlbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblx0XHRkaWFsb2cuc2V0Q29udGVudChkaWFsb2djb250ZW50KTtcblx0XHRkaWFsb2cuZGlzcGxheSgpO1xuXHR9O1xuXHQvLyBSZXNldHMgdGhlIGRhdGEgdmFsdWUsIHJlLXBvcHVsYXRlcyBiYXNlZCBvbiB0aGUgbmV3IChkZWZhdWx0KSB2YWx1ZSwgdGhlbiBzYXZlcyB0aGVcblx0Ly8gb2xkIGRhdGEgdmFsdWUgYWdhaW4gKGxlc3Mgc3VycHJpc2luZyBiZWhhdmlvdXIpXG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cucmVzZXQgPSAoYnV0dG9uLCB0Ym9keSkgPT4ge1xuXHRcdC8vIHJlc2V0IHZhbHVlIG9uIGJ1dHRvblxuXHRcdGNvbnN0ICRidXR0b24gPSAkKGJ1dHRvbik7XG5cdFx0Y29uc3QgY3VycHJlZiA9ICRidXR0b24uZGF0YSgncHJlZicpO1xuXHRcdGNvbnN0IG9sZHZhbHVlID0gJGJ1dHRvbi5kYXRhKCd2YWx1ZScpO1xuXHRcdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZihjdXJwcmVmKTtcblx0XHQvLyByZXNldCBmb3JtXG5cdFx0Y29uc3QgJHRib2R5ID0gJCh0Ym9keSk7XG5cdFx0JHRib2R5LmZpbmQoJ3RyJykuc2xpY2UoMSkucmVtb3ZlKCk7IC8vIGFsbCByb3dzIGV4Y2VwdCB0aGUgZmlyc3QgKGhlYWRlcikgcm93XG5cdFx0Ly8gYWRkIHRoZSBuZXcgdmFsdWVzXG5cdFx0Y29uc3QgY3VydmFsdWUgPSAkYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0Zm9yIChjb25zdCB2IG9mIGN1cnZhbHVlKSB7XG5cdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLmFkZFJvdyh0Ym9keSwgdi52YWx1ZSwgdi5sYWJlbCk7XG5cdFx0fVxuXHRcdC8vIHNhdmUgdGhlIG9sZCB2YWx1ZVxuXHRcdCRidXR0b24uZGF0YSgndmFsdWUnLCBvbGR2YWx1ZSk7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuc2F2ZSA9IChidXR0b24sIHRib2R5KSA9PiB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0bGV0IGN1cnJlbnQgPSB7fTtcblx0XHQkKHRib2R5KVxuXHRcdFx0LmZpbmQoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcblx0XHRcdC5lYWNoKChpbnB1dGtleSwgaW5wdXQpID0+IHtcblx0XHRcdFx0aWYgKCQoaW5wdXQpLmhhc0NsYXNzKCd0d2lua2xlLWNvbmZpZy1jdXN0b21saXN0LXZhbHVlJykpIHtcblx0XHRcdFx0XHRjdXJyZW50ID0ge1xuXHRcdFx0XHRcdFx0dmFsdWU6IGlucHV0LnZhbHVlLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudC5sYWJlbCA9IGlucHV0LnZhbHVlO1xuXHRcdFx0XHRcdC8vIGV4Y2x1ZGUgdG90YWxseSBlbXB0eSByb3dzXG5cdFx0XHRcdFx0aWYgKGN1cnJlbnQudmFsdWUgfHwgY3VycmVudC5sYWJlbCkge1xuXHRcdFx0XHRcdFx0cmVzdWx0LnB1c2goY3VycmVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHQkKGJ1dHRvbikuZGF0YSgndmFsdWUnLCByZXN1bHQpO1xuXHR9O1xuXHQvLyByZXNldC9yZXN0b3JlIGRlZmF1bHRzXG5cdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZkxpbmsgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHdhbnRlZHByZWYgPSBlLnRhcmdldC5pZC5zbGljZSgyMSk7IC8vIFwidHdpbmtsZS1jb25maWctcmVzZXQtXCIgcHJlZml4IGlzIHN0cmlwcGVkXG5cdFx0Ly8gc2VhcmNoIHRhY3RpY3Ncblx0XHQkKFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zKS5lYWNoKChzZWN0aW9ua2V5LCBzZWN0aW9uKSA9PiB7XG5cdFx0XHRpZiAoc2VjdGlvbi5oaWRkZW4gfHwgKHNlY3Rpb24uYWRtaW5Pbmx5ICYmICFNb3JlYml0cy51c2VySXNTeXNvcCkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGNvbnRpbnVlOiBza2lwIGltcG9zc2liaWxpdGllc1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgZm91bmRpdCA9IGZhbHNlO1xuXHRcdFx0JChzZWN0aW9uLnByZWZlcmVuY2VzKS5lYWNoKChwcmVma2V5LCBwcmVmKSA9PiB7XG5cdFx0XHRcdGlmIChwcmVmLm5hbWUgIT09IHdhbnRlZHByZWYpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWVcblx0XHRcdFx0fVxuXG5cdFx0XHRcdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZihwcmVmKTtcblx0XHRcdFx0Zm91bmRpdCA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBmYWxzZTsgLy8gYnJlYWtcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoZm91bmRpdCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7IC8vIGJyZWFrXG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gZmFsc2U7IC8vIHN0b3AgbGluayBmcm9tIHNjcm9sbGluZyBwYWdlXG5cdH07XG5cblx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmID0gKHByZWYpID0+IHtcblx0XHRzd2l0Y2ggKHByZWYudHlwZSkge1xuXHRcdFx0Y2FzZSAnYm9vbGVhbic6XG5cdFx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1gKS5jaGVja2VkID0gVHdpbmtsZS5kZWZhdWx0Q29uZmlnW3ByZWYubmFtZV07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3RyaW5nJzpcblx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0Y2FzZSAnZW51bSc6XG5cdFx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1gKS52YWx1ZSA9IFR3aW5rbGUuZGVmYXVsdENvbmZpZ1twcmVmLm5hbWVdO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3NldCc6XG5cdFx0XHRcdGZvciAoY29uc3QgW2l0ZW1rZXldIG9mIE9iamVjdC5lbnRyaWVzKHByZWYuc2V0VmFsdWVzKSkge1xuXHRcdFx0XHRcdGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gKSkge1xuXHRcdFx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7cHJlZi5uYW1lfV8ke2l0ZW1rZXl9YCkuY2hlY2tlZCA9XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZ1twcmVmLm5hbWVdLmluY2x1ZGVzKGl0ZW1rZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2N1c3RvbUxpc3QnOlxuXHRcdFx0XHQkKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1gKSkuZGF0YSgndmFsdWUnLCBUd2lua2xlLmRlZmF1bHRDb25maWdbcHJlZi5uYW1lXSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiB1bmtub3duIGRhdGEgdHlwZSBmb3IgcHJlZmVyZW5jZSAke3ByZWYubmFtZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjb25maWcnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNvbmZpZy5yZXNldEFsbFByZWZzID0gKCkgPT4ge1xuXHRcdC8vIG5vIGNvbmZpcm1hdGlvbiBtZXNzYWdlIC0gdGhlIHVzZXIgY2FuIGp1c3QgcmVmcmVzaC9jbG9zZSB0aGUgcGFnZSB0byBhYm9ydFxuXHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdGlmIChzZWN0aW9uLmhpZGRlbiB8fCAoc2VjdGlvbi5hZG1pbk9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWU6IHNraXAgaW1wb3NzaWJpbGl0aWVzXG5cdFx0XHR9XG5cblx0XHRcdCQoc2VjdGlvbi5wcmVmZXJlbmNlcykuZWFjaCgocHJlZmtleSwgcHJlZikgPT4ge1xuXHRcdFx0XHRpZiAoIXByZWYuYWRtaW5Pbmx5IHx8IE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmKHByZWYpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0pO1xuXHRcdHJldHVybiBmYWxzZTsgLy8gc3RvcCBsaW5rIGZyb20gc2Nyb2xsaW5nIHBhZ2Vcblx0fTtcblxuXHRUd2lua2xlLmNvbmZpZy5zYXZlID0gKGUpID0+IHtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdHdpbmtsZS1jb25maWctY29udGVudCcpKTtcblx0XHRjb25zdCB1c2VyanMgPSBgJHttdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVttdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnVzZXJdfToke213LmNvbmZpZy5nZXQoXG5cdFx0XHQnd2dVc2VyTmFtZSdcblx0XHQpfS90d2lua2xlb3B0aW9ucy5qc2A7XG5cdFx0Y29uc3QgeXNhcmNoaXZlc19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdHVzZXJqcyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2Y5Y+C5pWw6K6+572u5YiwICcsICflhLLlrZjlgY/lpb3oqK3lrprliLAgJykgKyB1c2VyanNcblx0XHQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMoZS50YXJnZXQpO1xuXHRcdHlzYXJjaGl2ZXNfcGFnZS5sb2FkKFR3aW5rbGUuY29uZmlnLndyaXRlUHJlZnMpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcblx0VHdpbmtsZS5jb25maWcud3JpdGVQcmVmcyA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Ly8gdGhpcyBpcyB0aGUgb2JqZWN0IHdoaWNoIGdldHMgc2VyaWFsaXplZCBpbnRvIEpTT047IG9ubHlcblx0XHQvLyBwcmVmZXJlbmNlcyB0aGF0IHRoaXMgc2NyaXB0IGtub3dzIGFib3V0IGFyZSBrZXB0XG5cdFx0Y29uc3QgbmV3Q29uZmlnID0ge1xuXHRcdFx0b3B0aW9uc1ZlcnNpb246IDIuMSxcblx0XHR9O1xuXHRcdC8vIGEgY29tcGFyaXNvbiBmdW5jdGlvbiBpcyBuZWVkZWQgbGF0ZXIgb25cblx0XHQvLyBpdCBpcyBqdXN0IGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzIChpLmUuIGNvbXBhcmluZyBzdHJpbmdzLCBudW1iZXJzLCBib29sZWFucyxcblx0XHQvLyBhcnJheXMgb2Ygc3RyaW5ncywgYW5kIGFycmF5cyBvZiB7IHZhbHVlLCBsYWJlbCB9KVxuXHRcdC8vIGFuZCBpdCBpcyBub3QgdmVyeSByb2J1c3Q6IGUuZy4gY29tcGFyZShbMl0sIFtcIjJcIl0pID09PSB0cnVlLCBhbmRcblx0XHQvLyBjb21wYXJlKHt9LCB7fSkgPT09IGZhbHNlLCBidXQgaXQncyBnb29kIGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzIGhlcmVcblx0XHRjb25zdCBjb21wYXJlID0gKGEsIGIpID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG5cdFx0XHRcdGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0YS5zb3J0KCk7XG5cdFx0XHRcdGIuc29ydCgpO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgYVtpXTsgKytpKSB7XG5cdFx0XHRcdFx0Ly8gY29tcGFyaXNvbiBvZiB0aGUgdHdvIHByb3BlcnRpZXMgb2YgY3VzdG9tIGxpc3RzXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBhW2ldID09PSAnb2JqZWN0JyAmJiAoYVtpXS5sYWJlbCAhPT0gYltpXS5sYWJlbCB8fCBhW2ldLnZhbHVlICE9PSBiW2ldLnZhbHVlKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYVtpXS50b1N0cmluZygpICE9PSBiW2ldLnRvU3RyaW5nKCkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYSA9PT0gYjtcblx0XHR9O1xuXHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdGlmIChzZWN0aW9uLmFkbWluT25seSAmJiAhTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0cmV0dXJuOyAvLyBpLmUuIFwiY29udGludWVcIiBpbiB0aGlzIGNvbnRleHRcblx0XHRcdH1cblx0XHRcdC8vIHJlYWNoIGVhY2ggb2YgdGhlIHByZWZlcmVuY2VzIGZyb20gdGhlIGZvcm1cblx0XHRcdCQoc2VjdGlvbi5wcmVmZXJlbmNlcykuZWFjaCgocHJlZmtleSwgcHJlZikgPT4ge1xuXHRcdFx0XHRsZXQgdXNlclZhbHVlOyAvLyA9IHVuZGVmaW5lZFxuXHRcdFx0XHQvLyBvbmx5IHJlYWQgZm9ybSB2YWx1ZXMgZm9yIHRob3NlIHByZWZzIHRoYXQgaGF2ZSB0aGVtXG5cdFx0XHRcdGlmICghcHJlZi5hZG1pbk9ubHkgfHwgTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0XHRpZiAoIXNlY3Rpb24uaGlkZGVuKSB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHByZWYudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlICdib29sZWFuJzpcblx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIGZyb20gdGhlIGNoZWNrYm94XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gZm9ybVtwcmVmLm5hbWVdLmNoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3N0cmluZyc6IC8vIHJlYWQgZnJvbSB0aGUgaW5wdXQgYm94IG9yIGNvbWJvIGJveFxuXHRcdFx0XHRcdFx0XHRjYXNlICdlbnVtJzpcblx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBmb3JtW3ByZWYubmFtZV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgZnJvbSB0aGUgaW5wdXQgYm94XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gTnVtYmVyLnBhcnNlSW50KGZvcm1bcHJlZi5uYW1lXS52YWx1ZSwgMTApO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChOdW1iZXIuaXNOYU4odXNlclZhbHVlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2YJywgJ+WEsuWtmCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+aCqOS4uiAnLCAn5oKo54K6ICcpICsgcHJlZi5uYW1lfSDmjIflrprnmoTlgLzvvIgke3ByZWYudmFsdWV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ieS4jeWQiOazle+8jOS8mue7p+e7reS/neWtmOaTjeS9nO+8jOS9huatpOWAvOWwhuS8mui3s+i/h+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J++8ieS4jeWQiOazle+8jOacg+e5vOe6jOWEsuWtmOaTjeS9nO+8jOS9huatpOWAvOWwh+acg+i3s+mBjuOAgidcblx0XHRcdFx0XHRcdFx0XHRcdFx0KX1gXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3NldCc6XG5cdFx0XHRcdFx0XHRcdFx0Ly8gcmVhZCBmcm9tIHRoZSBzZXQgb2YgY2hlY2sgYm94ZXNcblx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAocHJlZi5zZXREaXNwbGF5T3JkZXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgb25seSB0aG9zZSBrZXlzIHNwZWNpZmllZCBpbiB0aGUgZGlzcGxheSBvcmRlclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHByZWYuc2V0RGlzcGxheU9yZGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChmb3JtW2Ake3ByZWYubmFtZX1fJHtpdGVtfWBdLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUucHVzaChpdGVtKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIGFsbCB0aGUga2V5cyBpbiB0aGUgbGlzdCBvZiB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2l0ZW1rZXldIG9mIE9iamVjdC5lbnRyaWVzKHByZWYuc2V0VmFsdWVzKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZm9ybVtgJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gXS5jaGVja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlLnB1c2goaXRlbWtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2N1c3RvbUxpc3QnOlxuXHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgZnJvbSB0aGUgalF1ZXJ5IGRhdGEgc3RvcmVkIG9uIHRoZSBidXR0b24gb2JqZWN0XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gJChmb3JtW3ByZWYubmFtZV0pLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0bXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiDmnKrnn6XmlbDmja7nsbvlnovvvIzlsZ7mgKcgJHtwcmVmLm5hbWV9YCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWNvbmZpZycsXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLnByZWZzKSB7XG5cdFx0XHRcdFx0XHQvLyBSZXRhaW4gdGhlIGhpZGRlbiBwcmVmZXJlbmNlcyB0aGF0IG1heSBoYXZlIGN1c3RvbWlzZWQgYnkgdGhlIHVzZXIgZnJvbSB0d2lua2xlb3B0aW9ucy5qc1xuXHRcdFx0XHRcdFx0Ly8gdW5kZWZpbmVkIGlmIG5vdCBzZXRcblx0XHRcdFx0XHRcdHVzZXJWYWx1ZSA9IFR3aW5rbGUucHJlZnNbcHJlZi5uYW1lXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb25seSBzYXZlIHRob3NlIHByZWZlcmVuY2VzIHRoYXQgYXJlICpkaWZmZXJlbnQqIGZyb20gdGhlIGRlZmF1bHRcblx0XHRcdFx0aWYgKHVzZXJWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFjb21wYXJlKHVzZXJWYWx1ZSwgVHdpbmtsZS5kZWZhdWx0Q29uZmlnW3ByZWYubmFtZV0pKSB7XG5cdFx0XHRcdFx0bmV3Q29uZmlnW3ByZWYubmFtZV0gPSB1c2VyVmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGNvbnN0IG5vd2lraSA9ICdub3dpa2knO1xuXHRcdGxldCB0ZXh0ID0gYC8vIDwke25vd2lraX0+XFxuJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRgLy8gdHdpbmtsZW9wdGlvbnMuanPvvJrnlKjmiLdUd2lua2xl5Y+C5pWw6K6+572u5paH5Lu2XFxuLy9cXG4vLyDms6jvvJrkv67mlLnmgqjnmoTlj4LmlbDorr7nva7mnIDnroDljZXnmoTlip7ms5XmmK/kvb/nlKhcXG4vLyBUd2lua2xl5Y+C5pWw6K6+572u6Z2i5p2/77yM5ZyoW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXeOAglxcbi8vXFxuLy8g6L+Z5Liq5paH5Lu25piv6Ieq5Yqo55Sf5oiQ55qE77yM5oKo5omA5YGa55qE5Lu75L2V5L+u5pS577yI6Zmk5LqGXFxuLy8g5Lul5LiA56eN5ZCI5rOV55qESmF2YVNjcmlwdOeahOaWueW8j+adpeS/ruaUuei/meS6m+WxnuaAp+WAvO+8ieS8mlxcbi8vIOWcqOS4i+S4gOasoeaCqOeCueWHu+KAnOS/neWtmOKAneaXtuiiq+imhuebluOAglxcbi8vIOS/ruaUueatpOaWh+S7tuaXtu+8jOivt+iusOW+l+S9v+eUqOWQiOazleeahEphdmFTY3JpcHTjgIJcXG5gLFxuXHRcdFx0YC8vIHR3aW5rbGVvcHRpb25zLmpz77ya5L2/55So6ICFVHdpbmtsZeWPg+aVuOioreWumuaqlOahiFxcbi8vXFxuLy8g6Ki777ya5L+u5pS55oKo55qE5Y+D5pW46Kit5a6a5pyA57Ch5Zau55qE6L6m5rOV5piv5L2/55SoXFxuLy8gVHdpbmtsZeWPg+aVuOioreWumumdouadv++8jOWcqFtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV3jgIJcXG4vL1xcbi8vIOmAmeWAi+aqlOahiOaYr+iHquWLleeUoueUn+eahO+8jOaCqOaJgOWBmueahOS7u+S9leS/ruaUue+8iOmZpOS6hlxcbi8vIOS7peS4gOeoruWQiOazleeahEphdmFTY3JpcHTnmoTmlrnlvI/kvobkv67mlLnpgJnkupvlsazmgKflgLzvvInmnINcXG4vLyDlnKjkuIvkuIDmrKHmgqjpu57mk4rjgIzlhLLlrZjjgI3mmYLooqvopobok4vjgIJcXG4vLyDkv67mlLnmraTmqpTmoYjmmYLvvIzoq4voqJjlvpfkvb/nlKjlkIjms5XnmoRKYXZhU2NyaXB044CCXFxuYFxuXHRcdCl9YDtcblx0XHR0ZXh0ICs9XG5cdFx0XHQnXFxud2luZG93LlR3aW5rbGUgPSB3aW5kb3cuVHdpbmtsZSB8fCB7fTtcXG53aW5kb3cuVHdpbmtsZS5wcmVmcyA9IHdpbmRvdy5Ud2lua2xlLnByZWZzIHx8IHt9O1xcbndpbmRvdy5Ud2lua2xlLnByZWZzID0gJztcblx0XHR0ZXh0ICs9IEpTT04uc3RyaW5naWZ5KG5ld0NvbmZpZywgbnVsbCwgMik7XG5cdFx0dGV4dCArPSBgO1xcblxcbiR7d2luZG93LndnVUxTKCcvLyB0d2lua2xlb3B0aW9ucy5qc+WIsOatpOS4uuatolxcbicsICcvLyB0d2lua2xlb3B0aW9ucy5qc+WIsOatpOeCuuatolxcbicpfS8vIDwvJHtub3dpa2l9PmA7XG5cdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0d2luZG93LndnVUxTKCfkv53lrZhUd2lua2xl5Y+C5pWw6K6+572u77ya5p2l6IeqW1snLCAn5YSy5a2YVHdpbmtsZeWBj+WlveioreWumu+8muS+huiHqltbJykgK1xuXHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ11d55qE6Ieq5Yqo57yW6L6RJywgJ11d55qE6Ieq5YuV57eo6LyvJylcblx0XHQpO1xuXHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLmNvbmZpZy5zYXZlU3VjY2Vzcyk7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLnNhdmVTdWNjZXNzID0gKHBhZ2VvYmopID0+IHtcblx0XHRwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCfmiJDlip8nKTtcblx0XHRjb25zdCBub3RpY2Vib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRub3RpY2Vib3guY2xhc3NOYW1lID0gJ213LW1lc3NhZ2UtYm94IG13LW1lc3NhZ2UtYm94LXN1Y2Nlc3MnO1xuXHRcdG5vdGljZWJveC5zdHlsZS5mb250U2l6ZSA9ICcxMDAlJztcblx0XHRub3RpY2Vib3guc3R5bGUubWFyZ2luVG9wID0gJzJlbSc7XG5cdFx0bm90aWNlYm94LmlubmVySFRNTCA9IGA8cD48Yj4ke3dpbmRvdy53Z1VMUyhcblx0XHRcdCfmgqjnmoRUd2lua2xl5Y+C5pWw6K6+572u5bey6KKr5L+d5a2Y44CCJyxcblx0XHRcdCfmgqjnmoRUd2lua2xl5YGP5aW96Kit5a6a5bey6KKr5YSy5a2Y44CCJ1xuXHRcdCl9PC9iPjwvcD48cD4ke3dpbmRvdy53Z1VMUygn6KaB55yL5Yiw6L+Z5Lqb5pu05pS577yM5oKo5Y+v6IO96ZyA6KaBJywgJ+imgeeci+WIsOmAmeS6m+abtOaUue+8jOaCqOWPr+iDvemcgOimgScpfTxhIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKFxuXHRcdFx0J0xJQjpCWVBBU1MnXG5cdFx0KX1cIiB0aXRsZT1cIkxJQjpCWVBBU1NcIj48Yj4ke3dpbmRvdy53Z1VMUygn57uV6L+H5rWP6KeI5Zmo57yT5a2YJywgJ+e5numBjueAj+imveWZqOW/q+WPlicpfTwvYj48L2E+44CCPC9wPmA7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQobm90aWNlYm94KTtcblx0XHRjb25zdCBub3RpY2VjbGVhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7XG5cdFx0bm90aWNlY2xlYXIuc3R5bGUuY2xlYXIgPSAnYm90aCc7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQobm90aWNlY2xlYXIpO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmNvbmZpZy5pbml0KTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICJpbXBvcnQgJy4vVHdpbmtsZS5sZXNzJztcblxuKGFzeW5jIGZ1bmN0aW9uIHR3aW5rbGVMb2FkKCkge1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVhcnYnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZXdhcm4nKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJsb2NrJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL2ZyaWVuZGx5dGFsa2JhY2snKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZXNwZWVkeScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlY29weXZpbycpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xleGZkJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVpbWFnZScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlcHJvdGVjdCcpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy9mcmllbmRseXRhZycpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlc3R1YicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlZGlmZicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xldW5saW5rJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVmbHVmZicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlYmF0Y2hkZWxldGUnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJhdGNodW5kZWxldGUnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJhdGNocHJvdGVjdCcpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlY2xvc2UnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWNvbmZpZycpO1xufSkoKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUEsNkZBQUFBLFNBQUE7QUFBQTtBQUNBLFFBQUksUUFBUSxTQUFVLElBQUk7QUFDeEIsYUFBTyxNQUFNLEdBQUcsU0FBUyxRQUFRO0FBQUEsSUFDbkM7QUFHQSxJQUFBQSxRQUFPO0FBQUEsSUFFTCxNQUFNLE9BQU8sY0FBYyxZQUFZLFVBQVUsS0FDakQsTUFBTSxPQUFPLFVBQVUsWUFBWSxNQUFNO0FBQUEsSUFFekMsTUFBTSxPQUFPLFFBQVEsWUFBWSxJQUFJLEtBQ3JDLE1BQU0sT0FBTyxVQUFVLFlBQVksTUFBTSxLQUN6QyxNQUFNLE9BQU8sV0FBUSxZQUFZLE9BQUk7QUFBQSxJQUVwQywyQkFBWTtBQUFFLGFBQU87QUFBQSxJQUFNLEVBQUcsS0FBSyxTQUFTLGFBQWEsRUFBRTtBQUFBO0FBQUE7OztBQ2Y5RDtBQUFBLHVGQUFBQyxTQUFBO0FBQUE7QUFDQSxJQUFBQSxRQUFPLFVBQVUsU0FBVSxNQUFNO0FBQy9CLFVBQUk7QUFDRixlQUFPLENBQUMsQ0FBQyxLQUFLO0FBQUEsTUFDaEIsU0FBUyxPQUFPO0FBQ2QsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDUEE7QUFBQSw2RkFBQUMsU0FBQTtBQUFBO0FB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LEdBQUFELHFCQUFBO0FBQ04sVUFBTW1iLFFBQUFDLFFBQUEsRUFBQW4yQyxLQUFBLE9BQUF1aEMsd0JBQUEsR0FBQUQsMkJBQUE7QUFDTixVQUFNNFUsUUFBQUMsUUFBQSxFQUFBbjJDLEtBQUEsT0FBQTJtQywwQkFBQSxHQUFBRCw2QkFBQTtBQUNOLFVBQU13UCxRQUFBQyxRQUFBLEVBQUFuMkMsS0FBQSxPQUFBMG5DLHlCQUFBLEdBQUFELDRCQUFBO0FBQ04sVUFBTXlPLFFBQUFDLFFBQUEsRUFBQW4yQyxLQUFBLE9BQUE0b0Msa0JBQUEsR0FBQUQscUJBQUE7QUFDTixVQUFNdU4sUUFBQUMsUUFBQSxFQUFBbjJDLEtBQUEsT0FBQTZzQyxtQkFBQSxHQUFBRCxzQkFBQTtFQUNQLENBQUE7QUFBQSxXQXJCZ0J3SixjQUFBO0FBQUEsV0FBQUMsYUFBQUMsTUFBQSxNQUFBQyxTQUFBO0VBQUE7QUFBQSxTQUFBSDtBQUFBLEdBQUEsRUFxQmI7IiwKICAibmFtZXMiOiBbIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiU3ltYm9sIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZG9jdW1lbnQiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJUeXBlRXJyb3IiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgInR3aW5rbGVfZXhwb3J0cyIsICJpbml0X3R3aW5rbGUiLCAiX19lc20iLCAidHdpbmtsZSIsICIkIiwgIl93aW5kb3ciLCAiJGJvZHkiLCAiVHdpbmtsZTIiLCAid2luZG93IiwgIlR3aW5rbGUiLCAiTW9yZWJpdHMiLCAidXNlcklzSW5Hcm91cCIsICJjb25zb2xlIiwgIndhcm4iLCAiY2hhbmdlVGFncyIsICJzdW1tYXJ5QWQiLCAiaGF0bm90ZVJlZ2V4IiwgImluaXRDYWxsYmFja3MiLCAiYWRkSW5pdENhbGxiYWNrIiwgImZ1bmMiLCAibmFtZSIsICJwdXNoIiwgImRlZmF1bHRDb25maWciLCAidXNlclRhbGtQYWdlTW9kZSIsICJkaWFsb2dMYXJnZUZvbnQiLCAiZGlzYWJsZWRNb2R1bGVzIiwgInVzZXJJc1N5c29wIiwgImRpc2FibGVkU3lzb3BNb2R1bGVzIiwgInNwaVdhdGNoUmVwb3J0IiwgImRlZmF1bHRUb0Jsb2NrNjQiLCAiZGVmYXVsdFRvUGFydGlhbEJsb2NrcyIsICJibGFua1RhbGtwYWdlT25JbmRlZkJsb2NrIiwgIndhdGNoQmxvY2tOb3RpY2VzIiwgImN1c3RvbUJsb2NrUmVhc29uTGlzdCIsICJvcGVuVGFsa1BhZ2UiLCAib3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0IiwgInJvbGxiYWNrSW5QbGFjZSIsICJtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3IiLCAid2F0Y2hSZXZlcnRlZFBhZ2VzIiwgIndhdGNoUmV2ZXJ0ZWRFeHBpcnkiLCAib2ZmZXJSZWFzb25Pbk5vcm1hbFJldmVydCIsICJjb25maXJtT25GbHVmZiIsICJzaG93Um9sbGJhY2tMaW5rcyIsICJjdXN0b21SZXZlcnRTdW1tYXJ5IiwgIm5vdGlmeVVzZXJPbkRlbGkiLCAiZGVsaVdhdGNoUGFnZSIsICJkZWxpV2F0Y2hVc2VyIiwgIndhdGNoUmVxdWVzdGVkUGFnZXMiLCAid2F0Y2hQUFRhZ2dlZFBhZ2VzIiwgIndhdGNoUHJvdGVjdGVkUGFnZXMiLCAic3BlZWR5U2VsZWN0aW9uU3R5bGUiLCAid2F0Y2hTcGVlZHlQYWdlcyIsICJ3YXRjaFNwZWVkeUV4cGlyeSIsICJtYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZCIsICJ3YXRjaFNwZWVkeVVzZXIiLCAibm90aWZ5VXNlck9uU3BlZWR5RGVsZXRpb25Ob21pbmF0aW9uIiwgIndhcm5Vc2VyT25TcGVlZHlEZWxldGUiLCAicHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5IiwgIm9wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZSIsICJkZWxldGVUYWxrUGFnZU9uRGVsZXRlIiwgImRlbGV0ZVJlZGlyZWN0c09uRGVsZXRlIiwgImRlbGV0ZVN5c29wRGVmYXVsdFRvRGVsZXRlIiwgInNwZWVkeVdpbmRvd0hlaWdodCIsICJzcGVlZHlXaW5kb3dXaWR0aCIsICJsb2dTcGVlZHlOb21pbmF0aW9ucyIsICJzcGVlZHlMb2dQYWdlTmFtZSIsICJub0xvZ09uU3BlZWR5Tm9taW5hdGlvbiIsICJlbmxhcmdlRzdJbnB1dCIsICJ1bmxpbmtOYW1lc3BhY2VzIiwgImRlZmF1bHRXYXJuaW5nR3JvdXAiLCAiY29tYmluZWRTaW5nbGV0TWVudXMiLCAid2F0Y2hXYXJuaW5ncyIsICJvbGRTZWxlY3QiLCAiY3VzdG9tV2FybmluZ0xpc3QiLCAiYXV0b01lbnVBZnRlclJvbGxiYWNrIiwgImxvZ1hmZE5vbWluYXRpb25zIiwgInhmZExvZ1BhZ2VOYW1lIiwgIm5vTG9nT25YZmROb21pbmF0aW9uIiwgInhmZFdhdGNoRGlzY3Vzc2lvbiIsICJ4ZmRXYXRjaFBhZ2UiLCAieGZkV2F0Y2hVc2VyIiwgIm1hcmtYZmRQYWdlc0FzUGF0cm9sbGVkIiwgIkZ3ZENzZFRvWGZkIiwgImFmZERlZmF1bHRDYXRlZ29yeSIsICJhZmRGYW1lRGVmYXVsdFJlYXNvbiIsICJhZmRTdWJzdHViRGVmYXVsdFJlYXNvbiIsICJYZmRDbG9zZSIsICJjb3B5dmlvV2F0Y2hQYWdlIiwgImNvcHl2aW9XYXRjaFVzZXIiLCAibWFya0NvcHl2aW9QYWdlc0FzUGF0cm9sbGVkIiwgImF1dG9sZXZlbFN0YWxlRGF5cyIsICJyZXZlcnRNYXhSZXZpc2lvbnMiLCAiYmF0Y2hNYXgiLCAiYmF0Y2hDaHVua3MiLCAiY29uZmlnUGFnZSIsICJwcm9qZWN0TmFtZXNwYWNlTmFtZSIsICJtdyIsICJjb25maWciLCAiZ2V0IiwgInNhbmRib3hQYWdlIiwgImRlbGV0aW9uU3VtbWFyeUFkIiwgInByb3RlY3Rpb25TdW1tYXJ5QWQiLCAiYmxvY2tTdW1tYXJ5QWQiLCAiZ3JvdXBCeURlZmF1bHQiLCAid2F0Y2hUYWdnZWRQYWdlcyIsICJ3YXRjaE1lcmdlRGlzY3Vzc2lvbnMiLCAibWFya1RhZ2dlZFBhZ2VzQXNNaW5vciIsICJtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZCIsICJ0YWdBcnRpY2xlU29ydE9yZGVyIiwgImN1c3RvbVRhZ0xpc3QiLCAiY3VzdG9tRmlsZVRhZ0xpc3QiLCAiY3VzdG9tUmVkaXJlY3RUYWdMaXN0IiwgIndhdGNoU3R1YmJlZFBhZ2VzIiwgIm1hcmtTdHViYmVkUGFnZXNBc01pbm9yIiwgIm1hcmtTdHViYmVkUGFnZXNBc1BhdHJvbGxlZCIsICJzdHViQXJ0aWNsZVNvcnRPcmRlciIsICJjdXN0b21TdHViTGlzdCIsICJtYXJrVGFsa2JhY2tBc01pbm9yIiwgImluc2VydFRhbGtiYWNrU2lnbmF0dXJlIiwgInRhbGtiYWNrSGVhZGluZyIsICJ3Z1VMUyIsICJtYWlsSGVhZGluZyIsICJwb3J0bGV0QXJlYSIsICJwb3J0bGV0SWQiLCAicG9ydGxldE5hbWUiLCAicG9ydGxldFR5cGUiLCAicG9ydGxldE5leHQiLCAiZmluZCIsICJsZW5ndGgiLCAiZ2V0UHJlZiIsICJwcmVmcyIsICJUd2lua2xlQ29uZmlnIiwgImFkZFBvcnRsZXQiLCAibmF2aWdhdGlvbiIsICJpZCIsICJ0ZXh0IiwgInR5cGUiLCAibmV4dG5vZGVpZCIsICJyb290IiwgImRvY3VtZW50IiwgInF1ZXJ5U2VsZWN0b3IiLCAidGVzdCIsICJjb25jYXQiLCAiaXRlbSIsICJwYXJlbnROb2RlIiwgIm5leHRub2RlIiwgInNraW4iLCAib3V0ZXJOYXZDbGFzcyIsICJpbm5lckRpdkNsYXNzIiwgIm91dGVyTmF2IiwgImhlYWRpbmciLCAiY3JlYXRlRWxlbWVudCIsICJzZXRBdHRyaWJ1dGUiLCAiY2xhc3NOYW1lIiwgImluc2VydEJlZm9yZSIsICJhcHBlbmRDaGlsZCIsICJ1bCIsICJpbmNsdWRlcyIsICJjaGtib3giLCAic3BhbiIsICJjcmVhdGVUZXh0Tm9kZSIsICJhIiwgImhyZWYiLCAib24iLCAiZSIsICJwcmV2ZW50RGVmYXVsdCIsICJpbm5lckRpdiIsICJhZGRQb3J0bGV0TGluayIsICJ0YXNrIiwgInRvb2x0aXAiLCAibGluayIsICJ1dGlsIiwgImNzcyIsICJldiIsICJjb2xsYXBzaWJsZVRhYnMiLCAiaGFuZGxlUmVzaXplIiwgInNjcmlwdHVybCIsICJnZXRVcmwiLCAiYWN0aW9uIiwgImN0eXBlIiwgImhhcHB5IiwgImxvYWRlciIsICJnZXRTY3JpcHQiLCAiZmFpbCIsICJub3RpZnkiLCAidGFnIiwgImFsd2F5cyIsICJsb2FkIiwgImFjdGl2ZVNwZWNpYWxQYWdlTGlzdCIsICJ0b3AiLCAic2VsZiIsICJ1c2VyQWdlbnQiLCAid2lraSIsICJhcGkiLCAic2V0QXBpVXNlckFnZW50IiwgIl9pdGVyYXRvciIsICJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsICJfc3RlcCIsICJzIiwgIm4iLCAiZG9uZSIsICJtb2R1bGUyIiwgInZhbHVlIiwgImVyciIsICJmIiwgImFkZENTUyIsICJpc1ZlY3RvciIsICJzb3J0QnlOYW1lc3BhY2UiLCAiZmlyc3QiLCAic2Vjb25kIiwgIm5zIiwgInRpdGxlIiwgImdlbmVyYXRlQmF0Y2hQYWdlTGlua3MiLCAiY2hlY2tib3giLCAiJGNoZWNrYm94IiwgImh0bWxOb2RlIiwgInZhbCIsICJuZXh0IiwgInByZXBlbmQiLCAialF1ZXJ5IiwgInR3aW5rbGVhcnZfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVhcnYiLCAidHdpbmtsZWFydiIsICJhcnYiLCAidXNlcm5hbWUiLCAiaXNJUCIsICJpc0lQQWRkcmVzcyIsICJjYWxsYmFjayIsICJ1aWQiLCAiV2luZG93IiwgInNpbXBsZVdpbmRvdyIsICJzZXRUaXRsZSIsICJzZXRTY3JpcHROYW1lIiwgImFkZEZvb3RlckxpbmsiLCAiZm9ybSIsICJxdWlja0Zvcm0iLCAiZXZhbHVhdGUiLCAiY2F0ZWdvcmllcyIsICJhcHBlbmQiLCAibGFiZWwiLCAiZXZlbnQiLCAiY2hhbmdlQ2F0ZWdvcnkiLCAiZGlzYWJsZWQiLCAic3R5bGUiLCAicmVzdWx0IiwgInJlbmRlciIsICJzZXRDb250ZW50IiwgImRpc3BsYXkiLCAicXVlcnkiLCAibGlzdCIsICJia3Byb3AiLCAiZm9ybWF0IiwgImJraXAiLCAiYmt1c2VycyIsICJhcGlvYmoiLCAiYmxvY2tsaXN0IiwgImdldFJlc3BvbnNlIiwgImJsb2NrcyIsICJibG9jayIsICJtZXNzYWdlIiwgInBhcnRpYWwiLCAicmFuZ2VzdGFydCIsICJyYW5nZWVuZCIsICJwb3N0IiwgImV2dCIsICJjcmVhdGVFdmVudCIsICJpbml0RXZlbnQiLCAiY2F0ZWdvcnkiLCAiZGlzcGF0Y2hFdmVudCIsICJsdGFfbGlzdCIsICJzb2NrbWFzdGVyX2NoYW5nZWQiLCAic2V0X3NvY2ttYXN0ZXIiLCAidGFyZ2V0IiwgInNvY2ttYXN0ZXIiLCAidmFsdWVfIiwgInJvb3RfIiwgIm9sZF9hcmVhIiwgImdldEVsZW1lbnRzIiwgIndvcmtfYXJlYSIsICJwcmV2aWV3bGluayIsICJjdXJzb3IiLCAidGV4dENvbnRlbnQiLCAicHJldmlldyIsICJlbGVtZW50IiwgInN1YmxhYmVsIiwgIm1pbiIsICJtYXgiLCAicmVwbGFjZUNoaWxkIiwgImFkZENsYXNzIiwgInNwaW5vdGljZXByZXZpZXdlciIsICJsYXN0IiwgImdldFBhcmFtVmFsdWUiLCAiYmFkaWQiLCAiZ29vZGlkIiwgInByZXZpZXdlciIsICJyZWFzb24iLCAiZ2V0UmVwb3J0V2lraXRleHQiLCAiaW5wdXQiLCAiZ2V0SW5wdXREYXRhIiwgImJlZ2luUmVuZGVyIiwgImNvbW1lbnQiLCAiY2hlY2tUaXRsZSIsICJyZXZpZCIsICJwYWdlXyIsICJUaXRsZSIsICJuYW1lc3BhY2UiLCAicGFnZSIsICJwYWdlcyIsICJtYXAiLCAibyIsICJfaXRlcmF0b3IyIiwgIl9zdGVwMiIsICJnZXRQcmVmaXhlZFRleHQiLCAicmVwbGFjZSIsICJ0cmltIiwgInN0cmluZyIsICJhcHBlbmRQdW5jdHVhdGlvbiIsICJ0eXBlcyIsICJhcnZ0eXBlIiwgInRvTG93ZXJDYXNlRmlyc3RDaGFyIiwgImhhc1NoYXJlZCIsICJzcGxpY2UiLCAiaW5kZXhPZiIsICJjb25maXJtIiwgImpvaW4iLCAic2xpY2UiLCAiaGlkZW5hbWUiLCAidG9VcHBlckNhc2VGaXJzdENoYXIiLCAic29ja3B1cHBldHMiLCAiYXJyYXkiLCAidW5pcSIsICJzb2NrIiwgImluZGV4IiwgImNoZWNrdXNlciIsICJ2IiwgIl9pbnB1dCRnb29kaWQiLCAic3VtbWFyeSIsICJzZXRCdXR0b25zRW5hYmxlZCIsICJzdGF0dXMiLCAiaW5pdCIsICJhY3Rpb25Db21wbGV0ZWQiLCAicmVkaXJlY3QiLCAibm90aWNlIiwgImV3aXBQYWdlIiwgInNldEZvbGxvd1JlZGlyZWN0IiwgImdldFBhZ2VUZXh0IiwgIiRld2lwTGluayIsICJSZWdFeHAiLCAiZXNjYXBlUmVnRXhwIiwgImdldFN0YXR1c0VsZW1lbnQiLCAiZXJyb3IiLCAicHJpbnRVc2VyVGV4dCIsICJzZXRQYWdlU2VjdGlvbiIsICJzZXRFZGl0U3VtbWFyeSIsICJzZXRDaGFuZ2VUYWdzIiwgInNldEFwcGVuZFRleHQiLCAidWFhUGFnZSIsICIkdWFhTGluayIsICJyZXBvcnRwYWdlIiwgInNwaVBhZ2UiLCAic2V0V2F0Y2hsaXN0IiwgImFpdlBhZ2UiLCAiJGFpdkxpbmsiLCAidHdpbmtsZXdhcm5fZXhwb3J0cyIsICJpbml0X3R3aW5rbGV3YXJuIiwgInR3aW5rbGV3YXJuIiwgInJlbGV2YW50VXNlck5hbWUiLCAiJHZhbmRhbFRhbGtMaW5rIiwgIm1ha2VWYW5kYWxUYWxrTGluayIsICJwYWdlTmFtZU5vcm0iLCAiYWZUYWxrTGluayIsICJwYWdlX3ByZWZpeGVkdGl0bGUiLCAicGFnZW5hbWUiLCAid3JhcElubmVyIiwgImF0dHIiLCAiZXh0cmFQYXJhbSIsICJyYXd1cmxlbmNvZGUiLCAiZGlhbG9nIiwgIm1haW5fc2VsZWN0IiwgIm1haW5fZ3JvdXAiLCAiY2hhbmdlX2NhdGVnb3J5IiwgImRlZmF1bHRHcm91cCIsICJOdW1iZXIiLCAicGFyc2VJbnQiLCAic2VsZWN0ZWQiLCAiY2hhbmdlX3N1YmNhdGVnb3J5IiwgInNpemUiLCAicGxhY2Vob2xkZXIiLCAibW9yZSIsICJjYWxsYmFja3MiLCAidmFucmV2aWQiLCAidGl0bGVzIiwgInByb3AiLCAicnZzdGFydGlkIiwgInJ2bGltaXQiLCAicnZkaXIiLCAicnZwcm9wIiwgInJldmVydFVzZXIiLCAiZ2V0QXR0cmlidXRlIiwgImNoZWNrU3RhbGUiLCAidmFudGltZXN0YW1wXyIsICJyZXZEYXRlIiwgImRhdGUiLCAiaXNWYWxpZCIsICJhZGQiLCAiaXNCZWZvcmUiLCAiRGF0ZSIsICJ2YW50aW1lc3RhbXAiLCAicmV2aWRzIiwgIm1lc3NhZ2VzIiwgImxldmVscyIsICJsZXZlbDEiLCAibGV2ZWwyIiwgInNpbmdsZW5vdGljZSIsICJzaW5nbGV3YXJuIiwgInN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeSIsICJwcmV2X2FydGljbGUiLCAicHJldl9yZWFzb24iLCAidGFsa3BhZ2VPYmoiLCAic3ViX2dyb3VwIiwgIm9sZF9zdWJ2YWx1ZSIsICJvbGRfc3VidmFsdWVfcmUiLCAiaGFzQ2hpbGROb2RlcyIsICJyZW1vdmVDaGlsZCIsICJmaXJzdENoaWxkIiwgImNyZWF0ZUVudHJpZXMiLCAiY29udGVudHMiLCAiY29udGFpbmVyIiwgIndyYXBJbk9wdGdyb3VwIiwgImxldmVsIiwgImNsaWVudCIsICJwcm9maWxlIiwgInBsYXRmb3JtIiwgIndyYXBwZXJPcHRncm91cCIsICJfaTIiLCAiX09iamVjdCRlbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgIml0ZW1LZXkiLCAiaXRlbVByb3BlcnRpZXMiLCAia2V5IiwgInRlbXBsYXRlIiwgImVsZW0iLCAiZGF0YSIsICJlbGVtUmVuZGVyZWQiLCAidW5Tb3J0ZWRTaW5nbGV0cyIsICJzb3J0ZWRTaW5nbGV0TWVzc2FnZXMiLCAiX2l0ZXJhdG9yMyIsICJrZXlzIiwgInNvcnQiLCAiX3N0ZXAzIiwgIl9pMyIsICJfYXJyIiwgImx2bCIsICJfaXRlcmF0b3I0IiwgIl9zdGVwNCIsICJsZXZlbEdyb3VwIiwgIl9pdGVyYXRvcjUiLCAiX3N0ZXA1IiwgIm9wdGdyb3VwIiwgImF1dG9sZXZlbFByb2MiLCAid2lraXRleHQiLCAibGF0ZXN0IiwgImRhdGVQcm9jZXNzaW5nIiwgInBhcmFtcyIsICJhcnRpY2xlIiwgImF1dG9sZXZlbFBhcnNlV2lraXRleHQiLCAiX2l0ZXJhdG9yNiIsICJfc3RlcDYiLCAicG9zdENhdGVnb3J5Q2xlYW51cCIsICJ1c2VydGFsa19wYWdlIiwgInBhZ2VvYmoiLCAiJG5vVGFsa1BhZ2VOb2RlIiwgImNsb3NlUHJldmlldyIsICJyZW1vdmUiLCAic2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5IiwgInJlc2V0RWxlbWVudExhYmVsIiwgInNlbGVjdDIiLCAid2lkdGgiLCAibWF0Y2hlciIsICJtYXRjaGVycyIsICJvcHRncm91cEZ1bGwiLCAidGVtcGxhdGVSZXN1bHQiLCAiaGlnaGxpZ2h0U2VhcmNoTWF0Y2hlcyIsICJsYW5ndWFnZSIsICJzZWFyY2hpbmciLCAicXVlcnlJbnRlcmNlcHRvciIsICJjaGFuZ2UiLCAiYXV0b1N0YXJ0IiwgInRyaWdnZXIiLCAibm90TGlua2VkQXJ0aWNsZSIsICJub3RBcnRpY2xlIiwgIm92ZXJyaWRlRWxlbWVudExhYmVsIiwgImdldFdhcm5pbmdXaWtpdGV4dCIsICJ0ZW1wbGF0ZU5hbWUiLCAiaXNDdXN0b20iLCAibm9TaWduIiwgInNob3dQcmV2aWV3IiwgInRlbXBsYXRlbmFtZSIsICJsaW5rZWRhcnRpY2xlIiwgInRlbXBsYXRldGV4dCIsICJtZXNzYWdlRGF0YSIsICJoaXN0b3J5X3JlIiwgImhpc3RvcnkiLCAiY3VycmVudCIsICJleGVjIiwgImN1cnJlbnRfZGF0ZSIsICJpc0FmdGVyIiwgInN0YXRlbGVtIiwgIiRhdXRvbGV2ZWxNZXNzYWdlIiwgImlzTmFOIiwgImF1dG9UaW1lb3V0IiwgImdldFRpbWUiLCAiJGxpbmsiLCAiY2xvc2UiLCAic3RhdHVzTm9kZSIsICJpbnNlcnRBZnRlciIsICJtYWluIiwgImdldENhbGxiYWNrUGFyYW1ldGVycyIsICJ3YXJuaW5nSGlzdG9yeSIsICJub3ciLCAiZ2V0TG9hZFRpbWUiLCAidGVtcGxhdGVBbmRMZXZlbCIsICJjdXN0b21Qcm9jZXNzIiwgInNwbGl0IiwgInByZWZpeCIsICJzdWIiLCAid2FybmluZ1RleHQiLCAic2VjdGlvbkV4aXN0cyIsICJzZWN0aW9uTnVtYmVyIiwgInNlY3Rpb25zIiwgIm1hdGNoIiwgImRhdGVIZWFkZXJSZWdleCIsICJtb250aEhlYWRlclJlZ2V4IiwgInJldmVyc2UiLCAic29tZSIsICJzZWMiLCAiaWR4IiwgInNldE5ld1NlY3Rpb25UaXRsZSIsICJpbmZvIiwgIm1vbnRoSGVhZGVyIiwgInNldE5ld1NlY3Rpb25UZXh0IiwgIm5ld1NlY3Rpb24iLCAidXNlclRhbGtQYWdlIiwgImdldEZyYWdtZW50IiwgImFsZXJ0IiwgIiRzZWxlY3RlZEVsIiwgInlzYXJjaGl2ZXNfcGFnZSIsICJzZXRDYWxsYmFja1BhcmFtZXRlcnMiLCAidHdpbmtsZWJsb2NrX2V4cG9ydHMiLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAiaW5pdF90d2lua2xlYmxvY2siLCAicmVxdWlyZSIsICJ0d2lua2xlYmxvY2siLCAiaW5pdE13QXBpIiwgImJsb2NrZWRVc2VyTmFtZSIsICJtZW51Rm9ybWF0dGVkTmFtZXNwYWNlcyIsICJibG9ja0FjdGlvblRleHQiLCAicmVibG9jayIsICJ1bmJsb2NrIiwgImlwIiwgImlzUmFuZ2UiLCAidmFsaWRDSURSIiwgImN1cnJlbnRCbG9ja0luZm8iLCAiZmllbGRfYmxvY2tfb3B0aW9ucyIsICJmaWVsZF90ZW1wbGF0ZV9vcHRpb25zIiwgImFjdGlvbmZpZWxkIiwgImNoYW5nZV9hY3Rpb24iLCAiaGlkZGVuIiwgImNoZWNrZWQiLCAic2l4dHlGb3VyIiwgImdldDY0IiwgImJsb2NrNjRmaWVsZCIsICJjaGFuZ2VfYmxvY2s2NCIsICJmZXRjaFVzZXJJbmZvIiwgImlzUmVnaXN0ZXJlZCIsICIkZm9ybSIsICJzZXRFbGVtZW50VmlzaWJpbGl0eSIsICJwYXJlbnQiLCAidHJhbnNmb3JtQmxvY2tQcmVzZXRzIiwgImJsb2NrNjQiLCAiYWN0aW9udHlwZSIsICJmZXRjaGVkRGF0YSIsICJwcm9jZXNzVXNlckluZm8iLCAiZm4iLCAiYmxvY2tpbmZvIiwgInVzZXJpbmZvIiwgInVzZXJzIiwgInVzZXIiLCAidXNlcmlkIiwgInVzZXJJc0JvdCIsICJncm91cG1lbWJlcnNoaXBzIiwgImdyb3VwIiwgImRpc2FibGV0YWxrIiwgImFsbG93dXNlcnRhbGsiLCAiaGFyZGJsb2NrIiwgImFub25vbmx5IiwgImhhc0Jsb2NrTG9nIiwgImxvZ2V2ZW50cyIsICJibG9ja0xvZyIsICJibG9ja0xvZ0lkIiwgImxvZ2lkIiwgImxldHlwZSIsICJsZWxpbWl0IiwgImxldGl0bGUiLCAidXN1c2VycyIsICJ1c3Byb3AiLCAidGhlbiIsICJzYXZlRmllbGRzZXQiLCAiZmllbGRzZXQiLCAiX2l0ZXJhdG9yNyIsICJzZXJpYWxpemVBcnJheSIsICJfc3RlcDciLCAiZWwiLCAiJGJsb2NrNjQiLCAicHJpb3JOYW1lIiwgImlzIiwgIm9yaWdpbmFsSXNSYW5nZSIsICJyZWdlbmVyYXRlRm9ybSIsICJ0aXRsZUJhciIsICJuZXh0U2libGluZyIsICJub2RlVmFsdWUiLCAiZmllbGRfcHJlc2V0IiwgImZpZWxkX3RhZ19vcHRpb25zIiwgImZpZWxkX3VuYmxvY2tfb3B0aW9ucyIsICIkYmxvY2siLCAiYmxvY2tCb3giLCAiJHRlbXBsYXRlIiwgInRlbXBsYXRlQm94IiwgIiR0YWciLCAidGFnQm94IiwgIiRwcm90ZWN0IiwgIiRwYXJ0aWFsIiwgInBhcnRpYWxCb3giLCAiJHVuYmxvY2siLCAidW5ibG9ja0JveCIsICJibG9ja0dyb3VwIiwgImJsb2NrR3JvdXBzUGFydGlhbCIsICJibG9ja0dyb3VwcyIsICJwcmlvciIsICJibG9ja1ByZXNldHNJbmZvIiwgImJnIiwgImlzSW5maW5pdHkiLCAiZXhwaXJ5IiwgImZpbHRlciIsICJjaGFuZ2VfcHJlc2V0IiwgImZpbHRlcmVkX2Jsb2NrX2dyb3VwcyIsICJjaGFuZ2VfZXhwaXJ5IiwgInRlbXBsYXRlX2V4cGlyeSIsICJtdWx0aXBsZSIsICJfaTQiLCAiX09iamVjdCRlbnRyaWVzMiIsICJudW1iZXIiLCAiYmxvY2tvcHRpb25zIiwgIm5vY3JlYXRlIiwgIm5vZW1haWwiLCAiYXV0b2Jsb2NrIiwgIndhdGNodXNlciIsICJ0b2dnbGVfc2VlX2Fsc29zIiwgImNoYW5nZV90ZW1wbGF0ZSIsICJibG9ja19yZWFzb24iLCAiYmxhbmtfZHVyYXRpb24iLCAibm90YWxrIiwgIm5vZW1haWxfdGVtcGxhdGUiLCAibm9jcmVhdGVfdGVtcGxhdGUiLCAiJHByZXZpZXdsaW5rIiwgIm9mZiIsICJzdWJncm91cCIsICJvbGRmaWVsZCIsICJoaWRlIiwgInNob3ciLCAiZXJyb3JMb2FkaW5nIiwgIm1heGltdW1TZWxlY3Rpb25MZW5ndGgiLCAibWluaW11bUlucHV0TGVuZ3RoIiwgImFqYXgiLCAidXJsIiwgIndpa2lTY3JpcHQiLCAiZGF0YVR5cGUiLCAiZGVsYXkiLCAibmV3RnJvbVRleHQiLCAidGVybSIsICJhcGZyb20iLCAiYXBuYW1lc3BhY2UiLCAiYXBsaW1pdCIsICJwcm9jZXNzUmVzdWx0cyIsICJyZXN1bHRzIiwgImFsbHBhZ2VzIiwgInRvVGV4dCIsICJ0ZW1wbGF0ZVNlbGVjdGlvbiIsICJjaG9pY2UiLCAicmVsIiwgIndvcmRCZWdpbm5pbmciLCAic2FtZVVzZXIiLCAic3RhdHVzU3RyIiwgIiRyYW5nZWJsb2NrbG9nbGluayIsICJodG1sIiwgImNhbGVuZGFyIiwgImluZm9TdHIiLCAidXBkYXRlX2Zvcm0iLCAiYmxvY2tsb2dpbmZvIiwgIiRibG9ja2xvZ2xpbmsiLCAibGFzdEJsb2NrQWN0aW9uIiwgImJsb2NrQWN0aW9uIiwgInRpbWVzdGFtcCIsICJmb3JtYXRUaW1lIiwgImR1cmF0aW9uIiwgImZvclJlZ2lzdGVyZWRPbmx5IiwgInBhZ2VQYXJhbSIsICJyZWFzb25QYXJhbSIsICJub25zdGFuZGFyZCIsICJmb3JBbm9uT25seSIsICJzaWciLCAiY2hlY2t1c2VyYmxvY2siLCAiYmlvYmxvY2siLCAidWNibG9jayIsICJucGJsb2NrIiwgIl9pdGVyYXRvcjgiLCAiX3N0ZXA4IiwgIm5ld0tleSIsICJjdXN0b20iLCAiX2k1IiwgIl9PYmplY3QkZW50cmllczMiLCAicHJlc2V0IiwgInNldHRpbmdzIiwgImluZGVmaW5pdGUiLCAibWV0YSIsICJzaG93X3RlbXBsYXRlIiwgInRlbXBsYXRlcyIsICJibG9ja1ByZXNldCIsICJibG9ja1NldHRpbmdzIiwgInJlZ2lzdHJhdGlvblJlc3RyaWN0IiwgInNlZUFsc29zIiwgInNlZUFsc29NZXNzYWdlIiwgInVzZUluaXRpYWxPcHRpb25zIiwgInBhcnNlIiwgInRvR01UU3RyaW5nIiwgImV4cGlyeV9wcmVzZXQiLCAiZWFjaCIsICJfaSIsICJjaGVjayIsICJwcmVwZW5kUmVhc29uIiwgInBhZ2VyZXN0cmljdGlvbnMiLCAiJHBhZ2VTZWxlY3QiLCAiJG5hbWVzcGFjZVNlbGVjdCIsICJyZXN0cmljdGlvbnMiLCAicHIiLCAiX2l0ZXJhdG9yOSIsICJfc3RlcDkiLCAiZXNjYXBlU2VsZWN0b3IiLCAibmV3T3B0aW9uIiwgIk9wdGlvbiIsICJBcnJheSIsICJpc0FycmF5IiwgIm5hbWVzcGFjZXMiLCAicHJldl90ZW1wbGF0ZV9leHBpcnkiLCAiYXJlYSIsICJuYW1lc3BhY2VyZXN0cmljdGlvbnMiLCAidGVtcGxhdGVUZXh0IiwgImdldEJsb2NrTm90aWNlV2lraXRleHQiLCAiX3RlbXBsYXRlb3B0aW9ucyIsICJ0b0Jsb2NrIiwgInRvV2FybiIsICJ0b1BhcnRpYWwiLCAidG9UYWciLCAidG9Qcm90ZWN0IiwgInRvVW5ibG9jayIsICJ0ZW1wbGF0ZW9wdGlvbnMiLCAidW5ibG9ja29wdGlvbnMiLCAidG9DbG9zZXZpcCIsICJjbG9zZXZpcCIsICJjaGVja0luY29tcGF0aWJsZSIsICJjb25mbGljdHMiLCAiZXh0cmEiLCAiY291bnQiLCAicmVkdWNlIiwgInN1bSIsICJzcHBVc2VybmFtZSIsICJzdGF0dXNFbGVtZW50IiwgImxvZ0V4cGlyeSIsICJleHBpcnlEYXRlIiwgImdyb3Vwc0NhbkJlUmVtb3ZlZCIsICJncm91cHNUb0JlUmVtb3ZlZCIsICJncm91cHMiLCAidGFncyIsICJ0b2tlbiIsICJ0b2tlbnMiLCAibWJBcGkiLCAiaXNzdWVfdGVtcGxhdGUiLCAidmlwUGFnZSIsICJjbG9zZVJlcXVlc3QiLCAicmlnaHRTdGF0dXNFbGVtZW50IiwgInJldm9rZU9wdGlvbnMiLCAidXNlcnJpZ2h0c3Rva2VuIiwgIm1yQXBpIiwgInVzZXJQYWdlIiwgInRhZ3VzZXJwYWdlIiwgInVuYmxvY2tTdGF0dXNFbGVtZW50IiwgInVuYmxvY2tNYkFwaSIsICJfaXRlcmF0b3IxMCIsICJfc3RlcDEwIiwgInRhZ3RleHQiLCAic3BwVHlwZSIsICJzcHBFdmlkZW5jZSIsICJzcG1DaGVja2VkIiwgInNwbUV2aWRlbmNlIiwgInNldFBhZ2VUZXh0IiwgInNhdmUiLCAicHJvdGVjdHVzZXJwYWdlIiwgImV4aXN0cyIsICJzZXRFZGl0UHJvdGVjdGlvbiIsICJzZXRNb3ZlUHJvdGVjdGlvbiIsICJzZXRDcmVhdGVQcm90ZWN0aW9uIiwgInByb3RlY3QiLCAiZm9ybURhdGEiLCAidXNlcnRhbGtfc3VtbWFyeSIsICJ1c2VyTmFtZSIsICJleHBpcnlUZXh0IiwgInJlcXVlc3RMaXN0IiwgImZvdW5kIiwgInZpcFJlIiwgInBhZ2VOYW1lUmVnZXgiLCAiaSIsICJ0cmltRW5kIiwgIm5ld1RleHQiLCAibWFrZVNlbnRlbmNlIiwgInBvcCIsICJwIiwgIm5hbWVzcGFjZU5hbWVzIiwgImRhdGVIZWFkZXJSZWdleExhc3QiLCAiZGF0ZUhlYWRlclJlZ2V4UmVzdWx0IiwgImxhc3RIZWFkZXJJbmRleCIsICJsYXN0SW5kZXhPZiIsICJmcmllbmRseXRhbGtiYWNrX2V4cG9ydHMiLCAiaW5pdF9mcmllbmRseXRhbGtiYWNrIiwgImZyaWVuZGx5dGFsa2JhY2siLCAidGFsa2JhY2siLCAiY2hhbmdlVGFyZ2V0IiwgInRidGFyZ2V0IiwgImVscXVlcnkiLCAiZWxsaW1pdCIsICJ5c2FyY2hpdmVzX2FwaSIsICJvcHRvdXRTdGF0dXMiLCAib3B0b3V0IiwgIiRlbCIsICJnZXRYTUwiLCAicHJldl9wYWdlIiwgInByZXZfc2VjdGlvbiIsICJwcmV2X21lc3NhZ2UiLCAidmFsdWVzIiwgInNlY3Rpb24iLCAicmVxdWlyZWQiLCAibm90aWNlYm9hcmQiLCAiX2k2IiwgIl9PYmplY3QkZW50cmllczQiLCAibm90aWNlYm9hcmRzIiwgIm5ibmFtZSIsICJkZWZhdWx0U2VsZWN0ZWQiLCAiYWZmcCIsICJjb250ZW50IiwgImVkaXRTdW1tYXJ5IiwgInNibCIsICJzaGwiLCAiZ2V0Q2hlY2tlZCIsICJuYW1lc3BhY2VSZWdleCIsICJmdWxsVXNlclRhbGtQYWdlTmFtZSIsICJ1c2VyX3RhbGsiLCAiZ2V0Tm90aWNlV2lraXRleHQiLCAidGFsa3BhZ2UiLCAic2V0Q3JlYXRlT3B0aW9uIiwgInNldE1pbm9yRWRpdCIsICJub3RpY2V0ZXh0IiwgInNhZmVSZXBsYWNlIiwgInR3aW5rbGVzcGVlZHlfZXhwb3J0cyIsICJpbXBvcnRfZXh0X2dhZGdldDIiLCAiaW5pdF90d2lua2xlc3BlZWR5IiwgInR3aW5rbGVzcGVlZHkiLCAic3BlZWR5IiwgImluaXREaWFsb2ciLCAiZXZhbHVhdGVTeXNvcCIsICJldmFsdWF0ZVVzZXIiLCAiaGFzQ1NEIiwgIm1vZGUiLCAic3lzb3BTaW5nbGVTdWJtaXQiLCAic3lzb3BSYWRpb0NsaWNrIiwgInN5c29wTXVsdGlwbGVTdWJtaXQiLCAic3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2siLCAidXNlck11bHRpcGxlU3VibWl0IiwgInVzZXJNdWx0aXBsZVJhZGlvQ2xpY2siLCAidXNlclNpbmdsZVN1Ym1pdCIsICJ1c2VyU2luZ2xlUmFkaW9DbGljayIsICJpc1N5c29wIiwgImhhc1N1Ym1pdEJ1dHRvbiIsICJpc011bHRpcGxlIiwgImNhbGxiYWNrZnVuYyIsICJjRm9ybSIsICJjQ2hlY2tlZCIsICJyZWRpcmVjdHMiLCAiZGVsbXVsdGlwbGUiLCAib3BlbnVzZXJ0YWxrIiwgInNhbHRpbmciLCAibW9kZUNoYW5nZWQiLCAic3RvcFByb3BhZ2F0aW9uIiwgImRlbGV0ZU9wdGlvbnMiLCAidGFnT3B0aW9ucyIsICJwcmlvckRlbGV0aW9uQ291bnQiLCAiZ2V0TW9kZSIsICJ0YWdfb25seSIsICJpc1N5c29wTW9kZSIsICJldmFsdWF0ZVR5cGUiLCAicmFkaW9PckNoZWNrYm94IiwgImdlbmVyYXRlQ3NkTGlzdCIsICJjdXN0b21SYXRpb25hbGUiLCAiYXJ0aWNsZUxpc3QiLCAidXNlckxpc3QiLCAidXNlcnRhbGtMaXN0IiwgImZpbGVMaXN0IiwgImNhdGVnb3J5TGlzdCIsICJkcmFmdExpc3QiLCAidGFsa0xpc3QiLCAiZ2VuZXJhbENyaXRlcmlhIiwgImdlbmVyYWxMaXN0IiwgImdlbmVyYXRlQXJyYXkiLCAicmVkaXJlY3RMaXN0IiwgImN1c3RvbU9wdGlvbiIsICJjbGljayIsICJkZWNvZGVVUklDb21wb25lbnQiLCAibGFiZWxzIiwgImVtcHR5IiwgImxlYWN0aW9uIiwgImxlcHJvcCIsICJyZXNwb25zZSIsICJkZWxDb3VudCIsICJjb250aW51ZSIsICJvcGVuU3ViZ3JvdXBIYW5kbGVyIiwgImNoaWxkcmVuIiwgImZvY3VzIiwgInN1Ym1pdFN1Ymdyb3VwSGFuZGxlciIsICJwcm90b3R5cGUiLCAiY2FsbCIsICJjcml0RWxlbWVudCIsICJjcml0ZXJpb24iLCAiaGlkZVdoZW5NdWx0aXBsZSIsICJoaWRlU3ViZ3JvdXBXaGVuTXVsdGlwbGUiLCAiaGlkZVdoZW5TaW5nbGUiLCAiaGlkZVN1Ymdyb3VwV2hlblNpbmdsZSIsICJoaWRlV2hlblN5c29wIiwgImhpZGVTdWJncm91cFdoZW5TeXNvcCIsICJoaWRlV2hlblVzZXIiLCAiaGlkZVN1Ymdyb3VwV2hlblVzZXIiLCAiaGlkZVdoZW5SZWRpcmVjdCIsICJzaG93SW5OYW1lc3BhY2VzIiwgImhpZGVJbk5hbWVzcGFjZXMiLCAib3JpZ2luYWxFdmVudCIsICJub3JtYWxpemVkQ3JpdGVyaW9uIiwgIm5vcm1hbGl6ZUhhc2giLCAiZzEiLCAiZzIiLCAiZzMiLCAiZzQiLCAiZzUiLCAiZzYiLCAiZzciLCAiZzgiLCAiZzkiLCAiYTEiLCAiYTIiLCAiYTMiLCAicjEiLCAicjIiLCAiZjEiLCAiZjIiLCAiZjMiLCAiZjQiLCAiZjUiLCAibzEiLCAibzIiLCAibzMiLCAiZ2V0VGVtcGxhdGVDb2RlQW5kUGFyYW1zIiwgImNvZGUiLCAicGFyYW1ldGVycyIsICJub3JtYWxpemVkcyIsICJ1dHBhcmFtcyIsICJfaXRlcmF0b3IxMSIsICJfc3RlcDExIiwgIm5vcm0iLCAidG9VcHBlckNhc2UiLCAidGVtcGxhdGVQYXJhbXMiLCAiaV8iLCAiZ2V0VXNlclRhbGtQYXJhbWV0ZXJzIiwgInBhcnNlV2lraXRleHQiLCAicHN0IiwgImNvbnRlbnRtb2RlbCIsICJzdGF0dXNJbmRpY2F0b3IiLCAiYXBpT2JqIiwgImNoaWxkTm9kZXMiLCAic3lzb3AiLCAicHJvbXB0IiwgImRlbGV0ZVBhZ2UiLCAiZGVsZXRlUmVhc29uIiwgInByb21wdEZvclN1bW1hcnkiLCAidGhpc3BhZ2UiLCAiZGVsZXRlTWFpbiIsICJ3YXRjaCIsICJkZWxldGVUYWxrIiwgIm9wZW5Vc2VyVGFsayIsICJsb29rdXBDcmVhdGlvbiIsICJvcGVuVXNlclRhbGtQYWdlIiwgImRlbGV0ZVRhbGtQYWdlIiwgIm5vcm1hbGl6ZWQiLCAiY2xhc3NMaXN0IiwgImNvbnRhaW5zIiwgInNldFRpbWVvdXQiLCAiZGVsZXRlUmVkaXJlY3RzIiwgInJkbGltaXQiLCAiZGVsZXRlUmVkaXJlY3RzTWFpbiIsICIkYmlndGV4dCIsICJzZXQiLCAidW5saW5rIiwgImdldENyZWF0b3IiLCAidmFuYXJ0aWNsZSIsICJvcGVuIiwgInhtbERvYyIsICIkc25hcHNob3QiLCAidG90YWwiLCAib25zdWNjZXNzIiwgImFwaW9iaklubmVyIiwgInVwZGF0ZSIsICJyZW1vdmVDaGVja3BvaW50IiwgImFkZENoZWNrcG9pbnQiLCAiX2tleSIsICJ0ZXh0Tm9TZCIsICJjb3B5dmlvIiwgInhmZCIsICJidWlsZERhdGEiLCAicGF0cm9sIiwgInJlcXVlc3RzYWx0IiwgImVkaXRzdW1tYXJ5IiwgIl9pdGVyYXRvcjEyIiwgIl9zdGVwMTIiLCAiTWF0aCIsICJibGFuayIsICJpbnNlcnRBZnRlclRlbXBsYXRlcyIsICJnZXRUZXh0IiwgInRhZ0NvbXBsZXRlIiwgInVzZXJ0YWxrIiwgInBhZ2VPYmoiLCAiaW5pdGlhbENvbnRyaWIiLCAidGFsa1BhZ2VOYW1lIiwgInVzZXJ0YWxrcGFnZSIsICJub3RpZnl0ZXh0IiwgImxvZ25vbWluYXRpb24iLCAiYWRkVG9Mb2ciLCAidXNsIiwgInVzZXJzcGFjZUxvZ2dlciIsICJpbml0aWFsVGV4dCIsICJhcHBlbmRUZXh0IiwgImZyb21ESSIsICJfaXRlcmF0b3IxMyIsICJfc3RlcDEzIiwgImxvZyIsICJnZXRQYXJhbWV0ZXJzIiwgIl9pdGVyYXRvcjE0IiwgIl9zdGVwMTQiLCAiY3VycmVudFBhcmFtcyIsICJyZWRpbWFnZSIsICJkYnJhdGlvbmFsZSIsICJvdGhlcnBhZ2UiLCAiZmlsZW5hbWUiLCAicmVkaXJ0eXBlIiwgInJlc29sdmVDc2RWYWx1ZXMiLCAiX2UkdGFyZ2V0JGZvcm0iLCAiX2UkdGFyZ2V0JGZvcm0yIiwgIndhdGNoUGFnZSIsICJfaXRlcmF0b3IxNSIsICJfc3RlcDE1IiwgIl9lJHRhcmdldCRmb3JtMyIsICJfaXRlcmF0b3IxNiIsICJfc3RlcDE2IiwgIl9pNyIsICJfbm9ybWFsaXplZHMiLCAibm90aWZ5dXNlciIsICJfaXRlcmF0b3IxNyIsICJfc3RlcDE3IiwgImNzZGxvZyIsICJfaXRlcmF0b3IxOCIsICJfc3RlcDE4IiwgInR3aW5rbGVjb3B5dmlvX2V4cG9ydHMiLCAiaW5pdF90d2lua2xlY29weXZpbyIsICJ0d2lua2xlY29weXZpbyIsICJpc1BhZ2VSZWRpcmVjdCIsICJ0cnlUYWdnaW5nIiwgInRhZ2dpbmdBcnRpY2xlIiwgImxvZ3BhZ2UiLCAiY29weXZpb0xpc3QiLCAicmV2aXNpb25JZCIsICJzb3VyY2UiLCAib2xkY3NkIiwgInNwZWVkeVRhZyIsICJnNF9wYWdlbmFtZSIsICJvdXRwdXQiLCAiZ2V0VVRDTW9udGgiLCAiZ2V0VVRDRGF0ZSIsICJ0d2lua2xleGZkX2V4cG9ydHMiLCAiaW5pdF90d2lua2xleGZkIiwgInR3aW5rbGV4ZmQiLCAiY3VycmVudFJhdGlvbmFsZSIsICJwcmludFJhdGlvbmFsZSIsICJvbGRyZWFzb250ZXh0Ym94IiwgIm9sZHJlYXNvbiIsICJhcHBlbmRSZWFzb25Cb3giLCAieGZkX2NhdCIsICJhZmRfY2F0ZWdvcnkiLCAiY2hhbmdlX2FmZF9jYXRlZ29yeSIsICJhZmRfY2F0IiwgImxvY2FsU3RvcmFnZSIsICJUd2lua2xlX2FmZENhdGVnb3J5IiwgInhmZGNhdCIsICJtZXJnZWludG8iLCAicGFyZW50RWxlbWVudCIsICJyZW1vdmVBdHRyaWJ1dGUiLCAiZndkY3NkcmVhc29uIiwgInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCAiaW5uZXJIVE1MIiwgInhmZHJlYXNvbiIsICJhZmQiLCAidGFnZ2luZ19wYWdlIiwgImRpc2N1c3Npb25fcGFnZSIsICJ0b2RheXNMaXN0IiwgImNyZWF0b3IiLCAiZm9ybWF0UmVhc29uVGV4dCIsICJub2luY2x1ZGUiLCAidGV4dE5vTm90TWFuZGFyaW4iLCAidGV4dE5vQWZjIiwgInRvIiwgImNvbW1lbnRUZXh0IiwgInNhZmVzdWJzdCIsICJmYW1lIiwgInN1YnN0dWIiLCAiYmF0Y2giLCAidGFyZ2V0X3BhZ2UiLCAiZmZkIiwgInRhZ2dpbmdJbWFnZSIsICJ4ZmRDYXROYW1lIiwgIndpa2lVcmxlbmNvZGUiLCAiZm9ybWF0UmVhc29uRm9yTG9nIiwgIm9uRXJyb3IiLCAic2V0TG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yIiwgInR3aW5rbGVpbWFnZV9leHBvcnRzIiwgImluaXRfdHdpbmtsZWltYWdlIiwgInR3aW5rbGVpbWFnZSIsICJpbWFnZSIsICJmaWVsZCIsICJfaXRlcmF0b3IxOSIsICJfc3RlcDE5IiwgInR5cGVfIiwgImNzZGNyaXQiLCAiRXJyb3IiLCAidG9Mb3dlckNhc2UiLCAiZjFfc291cmNlIiwgImY0X3R5cGUiLCAidXNlck5vdGlmaWNhdGlvbiIsICJub3RlRGF0YSIsICJpbWFnZUxpc3QiLCAidHdpbmtsZXByb3RlY3RfZXhwb3J0cyIsICJpbXBvcnRfZXh0X2dhZGdldDMiLCAiaW5pdF90d2lua2xlcHJvdGVjdCIsICJ0d2lua2xlcHJvdGVjdCIsICJjaGFuZ2VBY3Rpb24iLCAiZmV0Y2hQcm90ZWN0aW9uTGV2ZWwiLCAiaXNUZW1wbGF0ZSIsICJjdXJyZW50UHJvdGVjdGlvbkxldmVscyIsICJwcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMiLCAiX2FzeW5jVG9HZW5lcmF0b3IiLCAiaW5kZXhwYWdlaWRzIiwgImlucHJvcCIsICJwcm90ZWN0RGF0YSIsICJwYWdlaWQiLCAicGFnZWlkcyIsICJwcmV2aW91cyIsICJ3YXRjaGVkIiwgIndhdGNobGlzdGV4cGlyeSIsICJfaXRlcmF0b3IyMCIsICJwcm90ZWN0aW9uIiwgIl9zdGVwMjAiLCAiY2FzY2FkZSIsICJwcmV2aW91c1Byb3RlY3Rpb25Mb2ciLCAiX2l0ZXJhdG9yMjEiLCAiZGV0YWlscyIsICJfc3RlcDIxIiwgImhhc1Byb3RlY3RMb2ciLCAic2hvd0xvZ0FuZEN1cnJlbnRQcm90ZWN0SW5mbyIsICJjdXJyZW50bHlQcm90ZWN0ZWQiLCAiaGFzU3RhYmxlTG9nIiwgIiRsaW5rTWFya3VwIiwgImZvcm1hdFByb3RlY3Rpb25EZXNjcmlwdGlvbiIsICJwcm90ZWN0aW9uTm9kZSIsICJzdGF0dXNMZXZlbCIsICJmaWVsZDEiLCAiZmllbGQyIiwgImNoYW5nZVByZXNldCIsICJwcm90ZWN0aW9uVHlwZXNBZG1pbiIsICJwcm90ZWN0aW9uVHlwZXNDcmVhdGUiLCAiZm9ybWV2ZW50cyIsICJlZGl0bW9kaWZ5IiwgImVkaXRsZXZlbCIsICJwcm90ZWN0aW9uTGV2ZWxzIiwgImRvQ3VzdG9tRXhwaXJ5IiwgImNsb3Nlc3QiLCAic2VsZWN0ZWRJbmRleCIsICJwcm90ZWN0aW9uTGVuZ3RocyIsICJtb3ZlbW9kaWZ5IiwgIm1vdmVsZXZlbCIsICJjcmVhdGVsZXZlbCIsICJwcm90ZWN0aW9uVGFncyIsICJ0YWd0eXBlIiwgInByb3RlY3Rpb25UeXBlcyIsICJtYXJnaW5SaWdodCIsICJlZGl0ZXhwaXJ5IiwgImNvbG9yIiwgIm1vdmVleHBpcnkiLCAiY3JlYXRlZXhwaXJ5IiwgInNtYWxsIiwgInNob3dleHBpcnkiLCAib3B0aW9uIiwgInByb3RlY3Rpb25UeXBlc0NyZWF0ZU9ubHkiLCAicHJvdGVjdGlvblByZXNldHNJbmZvIiwgImVkaXQiLCAibW92ZSIsICJ1bnByb3RlY3QiLCAiY3JlYXRlIiwgImFjdGlvbnR5cGVzIiwgIl9pdGVyYXRvcjIyIiwgIl9zdGVwMjIiLCAiYWN0aW9uX3R5cGVfdmFsdWUiLCAicmVhc29uRmllbGQiLCAicHJvdGVjdFJlYXNvbiIsICJfaXRlbSR0ZW1wbGF0ZSIsICJ0YWdwYXJhbXMiLCAiY2xvc2VwYXJhbXMiLCAic3RhdHVzSW5pdGVkIiwgImFsbERvbmUiLCAidGFnZ2luZ1BhZ2VJbml0aWFsIiwgInJwcFBhZ2UiLCAicHJvdGVjdEl0IiwgImZvbGxvd1JlZGlyZWN0IiwgInR5cGVuYW1lIiwgInR5cGVyZWFzb24iLCAicnBwcGFyYW1zIiwgInJwcE5hbWUiLCAiZmlsZVJlcXVlc3QiLCAicGFnZU5hbWUiLCAicHJvdGVjdGVkUGFnZSIsICJ0YWdnaW5nUGFnZSIsICJnZXRUYWdnZWRQYWdlIiwgIm9sZHRhZ19yZSIsICJyZV9yZXN1bHQiLCAibmV3VmVyc2lvbiIsICJzdXBwcmVzc1Byb3RlY3RXYXJuaW5nIiwgInJwcFJlIiwgInJwcExpbmsiLCAiZ2V0UGFnZU5hbWUiLCAibmV3dGFnIiwgIlN0cmluZyIsICJyYXciLCAiX3RlbXBsYXRlT2JqZWN0IiwgIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCAid29yZHMiLCAicmVnIiwgIm9yaWdpbmFsVGV4dExlbmd0aCIsICJsaW5rbm9kZSIsICJ3YXRjaFByZWYiLCAib3B0aW9ucyIsICJ3YXRjaF9xdWVyeSIsICJsaW5rbm9kZTIiLCAic2VjdGlvblRleHQiLCAiX2k4IiwgIl9PYmplY3QkZW50cmllczUiLCAiZnJpZW5kbHl0YWdfZXhwb3J0cyIsICJpbml0X2ZyaWVuZGx5dGFnIiwgImZyaWVuZGx5dGFnIiwgIm1vZGVFbiIsICJjYW5SZW1vdmUiLCAiY2hlY2tlZFRhZ3MiLCAiJGFsbENoZWNrYm94RGl2cyIsICJsYWJlbF9lbGVtZW50IiwgIiRhbGxIZWFkZXJzIiwgInNlYXJjaFN0cmluZyIsICJzZWFyY2hSZWdleCIsICJfaW5kZXgiLCAibGFiZWxfdGV4dCIsICJzZWFyY2hIaXQiLCAicmFuZ2UiLCAiY3JlYXRlUmFuZ2UiLCAidGV4dG5vZGUiLCAic2VsZWN0Tm9kZUNvbnRlbnRzIiwgInNldFN0YXJ0IiwgInNldEVuZCIsICJ1bmRlcmxpbmVfc3BhbiIsICJzdXJyb3VuZENvbnRlbnRzIiwgImZsYXRPYmplY3QiLCAiX2l0ZXJhdG9yMjMiLCAidGFnTGlzdCIsICJfc3RlcDIzIiwgIl9pdGVyYXRvcjI0IiwgIl9zdGVwMjQiLCAiX2l0ZXJhdG9yMjUiLCAiX3N0ZXAyNSIsICJkZXNjcmlwdGlvbiIsICJleGNsdWRlTUkiLCAidXBkYXRlU29ydE9yZGVyIiwgImRpdkVsZW1lbnQiLCAiX2l0ZXJhdG9yMjYiLCAiX3N0ZXAyNiIsICJidWlsZEZpbGVuYW1lIiwgIl9pdGVyYXRvcjI3IiwgIl9zdGVwMjciLCAiX2l0ZXJhdG9yMjgiLCAiX3N0ZXAyOCIsICJxdWVyeVNlbGVjdG9yQWxsIiwgInF1aWNrZmlsdGVyIiwgImF1dG9jb21wbGV0ZSIsICJhZGRFdmVudExpc3RlbmVyIiwgImFscmVhZHlQcmVzZW50VGFncyIsICJ0YWdOYW1lIiwgImJveFRhZyIsICJmb250U2l6ZSIsICJudW1BZGRlZCIsICJudW1SZW1vdmVkIiwgImFmdGVyIiwgInNvcnRvcmRlciIsICJfaXRlcmF0b3IyOSIsICJfc3RlcDI5IiwgImdlbmVyYXRlTGlua3MiLCAibWFrZUNoZWNrYm94IiwgIm90aGVyVGFnTmFtZSIsICJtYWtlQ2hlY2tib3hlc0ZvckFscmVhZHlQcmVzZW50VGFncyIsICJzdWJkaXYiLCAiY2hlY2tib3hlcyIsICJ1bkNoZWNrZWRUYWdzIiwgImdldFVuY2hlY2tlZCIsICJfaXRlcmF0b3IzMCIsICJfc3RlcDMwIiwgImRvQ2F0ZWdvcnlDaGVja2JveGVzIiwgIl9pdGVyYXRvcjMxIiwgIl9zdGVwMzEiLCAiX2l0ZXJhdG9yMzIiLCAiX3N0ZXAzMiIsICJfaXRlcmF0b3IzMyIsICJfc3RlcDMzIiwgIl9Ud2lua2xlJHRhZyRhcnRpY2xlIiwgImFscGhhYmV0aWNhbExpc3QiLCAiX2l0ZXJhdG9yMzQiLCAiX3N0ZXAzNCIsICIkd29ya2FyZWEiLCAicmVuZGVyZWQiLCAiX2l0ZXJhdG9yMzUiLCAiX3N0ZXAzNSIsICJfaXRlcmF0b3IzNiIsICJfc3RlcDM2IiwgImZpcnN0UGFydCIsICJzZWNvbmRQYXJ0IiwgInRhZ25hbWUiLCAicGFnZVRleHQiLCAicG9zdFJlbW92YWwiLCAidGFnc1RvUmVtb3ZlIiwgIm1ha2VUZW1wbGF0ZUxpbmsiLCAic3VtbWFyeVRleHQiLCAiYWRkZWRUYWdzIiwgInJlbW92ZWRUYWdzIiwgIm1lcmdlUmVhc29uIiwgImRpc2N1c3NBcnRpY2xlIiwgIm5vbkRpc2N1c3NBcnRpY2xlIiwgIm1lcmdlVGFnT3RoZXIiLCAibWVyZ2VUYWciLCAibmV3UGFyYW1zIiwgInRhZ3NUb1JlbWFpbiIsICJtZXJnZVRhcmdldCIsICJ0YWxrRGlzY3Vzc2lvblRpdGxlIiwgInRhbGtEaXNjdXNzaW9uVGl0bGVMaW5rZWQiLCAibW92ZVJlYXNvbiIsICJtb3ZlVGFsa3BhZ2VUZXh0IiwgIm1vdmVUYXJnZXQiLCAibW92ZVRhbGtwYWdlIiwgInJlbW92ZVRhZ3MiLCAiZ2V0UmVkaXJlY3RzRm9yIiwgIl9pdGVyYXRvcjM3IiwgIl9zdGVwMzciLCAidGFnX3JlIiwgImxobmFtZXNwYWNlIiwgImxoc2hvdyIsICJsaGxpbWl0IiwgInJlc3BvbnNlWE1MIiwgIl9pZHgiLCAicmVtb3ZlZCIsICJ0YWdSZSIsICJ0YWdUZXh0IiwgImdyb3VwYWJsZVRhZ3MiLCAiZ3JvdXBhYmxlRXhpc3RpbmdUYWdzIiwgImFkZFRhZyIsICJjdXJyZW50VGFnIiwgImV4cGVydCIsICJleHBlcnQyIiwgImV4cGVydDMiLCAibWlzc2luZ0luZm9ybWF0aW9uIiwgIm5vdGFiaWxpdHkiLCAidGFyZ2V0MSIsICJ0YXJnZXQyIiwgInRhcmdldDMiLCAiY2xlYW51cFJlYXNvbiIsICJhZGRVbmdyb3VwZWRUYWdzIiwgIl9pOSIsICJfdGFncyIsICJ0ZW1wbGF0ZXNBZnRlciIsICJfaXRlcmF0b3IzOCIsICJfc3RlcDM4IiwgIm5vdGFiaWxpdHlMaXN0IiwgIl9pdGVyYXRvcjM5IiwgIl9zdGVwMzkiLCAibWlUZXN0IiwgIl9pdGVyYXRvcjQwIiwgIl9zdGVwNDAiLCAibWlSZWdleCIsICJhZGROZXdUYWdzVG9NSSIsICJfaXRlcmF0b3I0MSIsICJfc3RlcDQxIiwgIl9pdGVyYXRvcjQyIiwgIl9zdGVwNDIiLCAidGFnSW5kZXgiLCAiYWx0TGFuZ0Zyb20iLCAicmVxQXJ0aWNsZUxhbmciLCAicmVxQXJ0aWNsZVRpdGxlIiwgIl9pMTAiLCAiX3RhZ3MyIiwgIm9sZFRhZ3MiLCAicGFnZVRhZ3MiLCAib2xkUGFnZVRhZ3MiLCAiX2l0ZXJhdG9yNDMiLCAiX3N0ZXA0MyIsICJwYWdlVGFnIiwgInBhZ2VSZSIsICJmaWxlIiwgIl9pdGVyYXRvcjQ0IiwgIl9zdGVwNDQiLCAibm93Y29tbW9uc05hbWUiLCAia2VlcGxvY2FsTmFtZSIsICJrZWVwbG9jYWxSZWFzb24iLCAicmVuYW1lbWVkaWFOZXduYW1lIiwgInJlbmFtZW1lZGlhUmVhc29uIiwgIkRvTm90TW92ZVRvQ29tbW9uc19yZWFzb24iLCAiY2hlY2tQYXJhbWV0ZXIiLCAicGFyYW1ldGVyIiwgImV4aXN0aW5nVGFncyIsICJ0d2lua2xlc3R1Yl9leHBvcnRzIiwgImltcG9ydF9leHRfZ2FkZ2V0NCIsICJpbml0X3R3aW5rbGVzdHViIiwgInR3aW5rbGVzdHViIiwgInN0dWIiLCAiX1R3aW5rbGUkc3R1YiIsICJfVHdpbmtsZSRzdHViJGNoZWNrZWQiLCAiY3VzdG9tY2hlY2tib3hlcyIsICJfaXRlcmF0b3I0NSIsICJfc3RlcDQ1IiwgIl9pdGVyYXRvcjQ2IiwgIl9zdGVwNDYiLCAiX2kxMSIsICJfT2JqZWN0JGVudHJpZXM2IiwgInRhZ0NhdGVnb3JpZXMiLCAidGl0bGVOYW1lIiwgInRhZ0NhdGVnb3JpZXNIZWFkZXIiLCAiX2kxMiIsICJfT2JqZWN0JGVudHJpZXM3IiwgInN1YnRpdGxlIiwgInN1YmNvbnRlbnQiLCAiX2kxMyIsICJfT2JqZWN0JGVudHJpZXM4IiwgIl9pdGVyYXRvcjQ3IiwgIl9zdGVwNDciLCAiZ2VuZXJhbCIsICJnZW8iLCAib3RoZXJzIiwgImJpbyIsICJzY2llbmNlIiwgInNwb3J0IiwgInRlY2giLCAiYXJ0IiwgInRvdGFsVGFncyIsICJfaTE0IiwgIl90YWdzMyIsICJwYXRyb2xQYWdlIiwgInR3aW5rbGVkaWZmX2V4cG9ydHMiLCAiaW5pdF90d2lua2xlZGlmZiIsICJ0d2lua2xlZGlmZiIsICJkaWZmIiwgIm9sZGlkIiwgIm1lIiwgIm5vZGUiLCAicnZ1c2VyIiwgImxvY2F0aW9uIiwgInR3aW5rbGV1bmxpbmtfZXhwb3J0cyIsICJpbml0X3R3aW5rbGV1bmxpbmsiLCAidHdpbmtsZXVubGluayIsICJwcmVzZXRSZWFzb24iLCAiZmlsZVNwYWNlIiwgImxpbmtUZXh0QmVmb3JlIiwgImxpbmtUZXh0QWZ0ZXIiLCAibGlua1BsYWluQmVmb3JlIiwgImxpbmtUZW1wbGF0ZUJlZm9yZSIsICJsaW5rUGxhaW5BZnRlciIsICJfaTE1IiwgIl9hcnIyIiwgImZvbnRGYW1pbHkiLCAiZm9udFN0eWxlIiwgImJsdGl0bGUiLCAiYmxsaW1pdCIsICJibG5hbWVzcGFjZSIsICJyYXdjb250aW51ZSIsICJpdXRpdGxlIiwgIml1bGltaXQiLCAiaXVuYW1lc3BhY2UiLCAiYmxmaWx0ZXJyZWRpciIsICJiYWNrbGlua3MiLCAicGFkZGluZyIsICJpbWFnZXVzYWdlIiwgInVubGlua2VyIiwgImJhdGNoT3BlcmF0aW9uIiwgInNldE9wdGlvbiIsICJzZXRQYWdlTGlzdCIsICJydW4iLCAic2V0Qm90RWRpdCIsICJkb0JhY2tsaW5rcyIsICJkb0ltYWdldXNhZ2UiLCAidW5saW5rQmFja2xpbmtzIiwgImhhdmVjb250ZW50IiwgIl9pdGVyYXRvcjQ4IiwgIl9zdGVwNDgiLCAiY29udmVydE51bWJlciIsICJzaGlmdENsaWNrU3VwcG9ydCIsICJfaXRlcmF0b3I0OSIsICJfc3RlcDQ5IiwgIl9pdGVyYXRvcjUwIiwgIl9zdGVwNTAiLCAiX2l0ZXJhdG9yNTEiLCAiX3N0ZXA1MSIsICJvbGR0ZXh0IiwgIndhcm5pbmdTdHJpbmciLCAiY29tbWVudE91dEltYWdlIiwgInJlbW92ZUxpbmsiLCAicmVtb3ZlVGVtcGxhdGUiLCAid29ya2VyRmFpbHVyZSIsICJ3b3JrZXJTdWNjZXNzIiwgInR3aW5rbGVmbHVmZl9leHBvcnRzIiwgImluaXRfdHdpbmtsZWZsdWZmIiwgInR3aW5rbGVmbHVmZiIsICJmbHVmZiIsICJob29rIiwgImFkZExpbmtzIiwgInNraXBUYWxrIiwgImNvbnRyaWJ1dGlvbnMiLCAicmVjZW50Y2hhbmdlcyIsICJ0cnVzdGVkQm90cyIsICJoaWRkZW5OYW1lIiwgImxpbmtCdWlsZGVyIiwgInNwYW5UYWciLCAiYnVpbGRMaW5rIiwgInJvbGxiYWNrTGlua3MiLCAidmFuZGFsIiwgImlubGluZSIsICJyZXYiLCAicmV2Tm9kZSIsICJub3JtTm9kZSIsICJ2YW5kTm9kZSIsICJub3JtTGluayIsICJ2YW5kTGluayIsICJyZXZlcnQiLCAiZGlzYWJsZUxpbmtzIiwgInNlcGFyYXRvciIsICJyZXN0b3JlVGhpc1JldmlzaW9uTGluayIsICJyZXZpc2lvblJlZiIsICJyZXZlcnRUb1JldmlzaW9uTm9kZSIsICJmb250V2VpZ2h0IiwgInJldmVydFRvUmV2aXNpb25MaW5rIiwgInJldmVydFRvUmV2aXNpb24iLCAiJGxpc3QiLCAiZGF0YXNldCIsICJtd1JldmlkIiwgIm5vdCIsICJ0YXJnZXRQYWdlIiwgImhpc3RMaXN0IiwgInRvQXJyYXkiLCAic2hpZnQiLCAiX2l0ZXJhdG9yNTIiLCAiX3N0ZXA1MiIsICJfaXRlcmF0b3I1MyIsICJfc3RlcDUzIiwgIndhcm5Gcm9tVGFsayIsICJ4dGl0bGUiLCAidGFsa0xpbmsiLCAiZXh0cmFQYXJhbXMiLCAib2xkVGl0bGUiLCAicmV2ZXJ0c3VtbWFyeSIsICJfIiwgIm5ld1RpdGxlIiwgIm50aXRsZSIsICJpc0lQdjZBZGRyZXNzIiwgInNhbml0aXplSVB2NiIsICJnZXRFbGVtZW50c0J5TmFtZSIsICJub3RpZnlTdGF0dXMiLCAiYXV0b0hpZGUiLCAidXNlckhpZGRlbiIsICJpbnRlc3RhY3Rpb25zIiwgImN1cnRpbWVzdGFtcCIsICJvbGRyZXYiLCAidG9SZXZpc2lvbiIsICJsYXN0cmV2aWQiLCAidG91Y2hlZCIsICJsb2FkdGltZXN0YW1wIiwgImNzcmZ0b2tlbiIsICJyZXZlcnRUb1JldklEIiwgInJldmVydFRvVXNlciIsICJyZXZlcnRUb1VzZXJIaWRkZW4iLCAib3B0aW9uYWxfc3VtbWFyeSIsICJmb3JtYXRTdW1tYXJ5IiwgInVuZG8iLCAidW5kb2FmdGVyIiwgImJhc2V0aW1lc3RhbXAiLCAic3RhcnR0aW1lc3RhbXAiLCAibWlub3IiLCAiYm90IiwgIndhdGNoT3JFeHBpcnkiLCAid2F0Y2hsaXN0IiwgImNvbXBsZXRlIiwgInJldnMiLCAibGFzdHVzZXIiLCAidXNlck5vcm0iLCAiY29udCIsICJnb29kX3JldmlzaW9uIiwgInVzZXJIYXNBbHJlYWR5Q29uZmlybWVkQWN0aW9uIiwgImdvb2R1c2VyIiwgImdvb2R1c2VySGlkZGVuIiwgImV4dHJhX3N1bW1hcnkiLCAibm90aWZ5VXNlciIsICJ4bWwiLCAiJGVkaXQiLCAid2luZG93UXVlcnkiLCAidmFuYXJ0aWNsZXJldmlkIiwgInZhbmFydGljbGVnb29kcmV2aWQiLCAiYnVpbHRJblN0cmluZyIsICJjdXN0b21TdHJpbmciLCAicmVzdWx0TGVuIiwgInVuZXNjYXBlIiwgImVuY29kZVVSSUNvbXBvbmVudCIsICJjb250cmlic0xpbmsiLCAiY29udHJpYnNMZW4iLCAidHdpbmtsZWJhdGNoZGVsZXRlX2V4cG9ydHMiLCAiaW5pdF90d2lua2xlYmF0Y2hkZWxldGUiLCAidHdpbmtsZWJhdGNoZGVsZXRlIiwgImJhdGNoZGVsZXRlIiwgInVubGlua0NhY2hlIiwgInN1YnBhZ2VzTG9hZGVkIiwgInRvZ2dsZVN1YnBhZ2VzIiwgImRlbGV0ZXJlYXNvbmxpc3QiLCAiY2hhbmdlX2NvbW1vbl9yZWFzb24iLCAiZ2VuZXJhdG9yIiwgImdjbXRpdGxlIiwgImdjbWxpbWl0IiwgImdhcGxpbWl0IiwgImdhcG5hbWVzcGFjZSIsICJnYXBwcmVmaXgiLCAicGF0aFNwbGl0IiwgInBhdGhuYW1lIiwgInRpdGxlU3BsaXQiLCAiZ3FwcGFnZSIsICJncXBsaW1pdCIsICJncGxsaW1pdCIsICJzdGF0dXNkaXYiLCAiJHBhZ2VzIiwgIiRwYWdlIiwgImlzUmVkaXIiLCAiJGVkaXRwcm90IiwgImlzUHJvdGVjdGVkIiwgIm1ldGFkYXRhIiwgImZvcm1fIiwgIl9pdGVyYXRvcjU0IiwgIl9zdGVwNTQiLCAiZ2VuZXJhdGVBcnJvd0xpbmtzIiwgIm5leHRFbGVtZW50U2libGluZyIsICJnZW5lcmF0ZU5ld1BhZ2VMaXN0IiwgImVsZW1lbnRzIiwgIk5vZGVMaXN0IiwgIl9pdGVyYXRvcjU1IiwgIl9zdGVwNTUiLCAiSFRNTElucHV0RWxlbWVudCIsICJuZXdQYWdlTGlzdCIsICJkZWxldGVfc3VicGFnZV9yZWRpcmVjdHMiLCAiZGVsZXRlX3JlZGlyZWN0cyIsICJkZWxldGVfc3VicGFnZV90YWxrcyIsICJkZWxldGVfdGFsayIsICJ1bmxpbmtfc3VicGFnZXMiLCAidW5saW5rX3BhZ2UiLCAiX2l0ZXJhdG9yNTYiLCAiX3N0ZXA1NiIsICJzdWJncm91cF8iLCAicmVwbGFjZVdpdGgiLCAiX2l0ZXJhdG9yNTciLCAiX3N0ZXA1NyIsICJfaXRlcmF0b3I1OCIsICJfc3RlcDU4IiwgImxvYWRpbmdUZXh0IiwgInN1YnBhZ2VMaXN0ZXIiLCAicGFnZVRpdGxlIiwgInBhZ2VOYW1lRnVsbCIsICJzdWJwYWdlTGlzdCIsICJwYWdlTmFtZV8iLCAiX2l0ZXJhdG9yNTkiLCAiX3N0ZXA1OSIsICJfaXRlcmF0b3I2MCIsICJfc3RlcDYwIiwgIl9pdGVyYXRvcjYxIiwgIl9zdGVwNjEiLCAiX2l0ZXJhdG9yNjIiLCAiX3N0ZXA2MiIsICJudW1Qcm90ZWN0ZWQiLCAic3VicGFnZXMiLCAiZGVsZXRlX3BhZ2UiLCAiZGVsZXRlX3N1YnBhZ2VzIiwgInVubGlua19maWxlIiwgInBhZ2VEZWxldGVyIiwgImRvRXh0cmFzIiwgInN1YnBhZ2VEZWxldGVyIiwgInRoaW5nV2l0aFBhcmFtZXRlcnMiLCAidW5saW5rQmFja2xpbmtzTWFpbiIsICJ1bmxpbmtJbWFnZUluc3RhbmNlc01haW4iLCAidGFsa1BhZ2UiLCAicmVkaXJlY3REZWxldGVyIiwgIm9sZF90ZXh0IiwgInNldE1heENvbmZsaWN0UmV0cmllcyIsICJ1bmxpbmtJbWFnZUluc3RhbmNlcyIsICJ0d2lua2xlYmF0Y2h1bmRlbGV0ZV9leHBvcnRzIiwgImluaXRfdHdpbmtsZWJhdGNodW5kZWxldGUiLCAidHdpbmtsZWJhdGNodW5kZWxldGUiLCAiYmF0Y2h1bmRlbGV0ZSIsICJwcm9qZWN0IiwgInVuZGVsX3RhbGsiLCAicGFnZVVuZGVsZXRlciIsICJzZXRNYXhSZXRyaWVzIiwgInVuZGVsZXRlUGFnZSIsICJ0YWxrcGFnZW5hbWUiLCAiZ2V0VGFsa1BhZ2UiLCAiZHJ2cHJvcCIsICJkcnZsaW1pdCIsICJ1bmRlbGV0ZVRhbGsiLCAiZGVscmV2cyIsICJ0d2lua2xlYmF0Y2hwcm90ZWN0X2V4cG9ydHMiLCAiaW5pdF90d2lua2xlYmF0Y2hwcm90ZWN0IiwgInR3aW5rbGViYXRjaHByb3RlY3QiLCAiYmF0Y2hwcm90ZWN0IiwgInByb3RMZXZlbCIsICJfaXRlcmF0b3I2MyIsICJfc3RlcDYzIiwgIm1pc3NpbmciLCAiZWRpdFByb3QiLCAiaW1hZ2VpbmZvIiwgInJldmlzaW9ucyIsICJfaXRlcmF0b3I2NCIsICJfc3RlcDY0IiwgImxpbmtzIiwgImN1cnJlbnRQcm90ZWN0Q291bnRlciIsICJjdXJyZW50cHJvdGVjdG9yIiwgInRha2VuQWN0aW9uIiwgImNyZWF0ZW1vZGlmeSIsICJ0d2lua2xlY2xvc2VfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVjbG9zZSIsICJ0d2lua2xlY2xvc2UiLCAic2VsZWN0b3IiLCAiZGVsTm9kZSIsICJkZWxMaW5rIiwgIl9pdGVyYXRvcjY1IiwgIl9zdGVwNjUiLCAiaGVhZGxpbmVocmVmIiwgIm0iLCAicGFnZW5vdGV4aXN0IiwgImhhc0NsYXNzIiwgInRtcE5vZGUiLCAiY2xvbmVOb2RlIiwgImNvZGVzIiwgImlyIiwgInJlcCIsICJuZSIsICJucSIsICJrIiwgImFkbWlub25seSIsICJzayIsICJ0ayIsICJyciIsICJkYW4iLCAiZCIsICJpYyIsICJzZCIsICJsc3NkIiwgInN2ZyIsICJkcmVwIiwgImMiLCAiciIsICJjciIsICJtZXJnZSIsICJtZXJnZWFwcHJvdmVkIiwgIm5jIiwgIm5vb3AiLCAiY2hhbmdlX2NvZGUiLCAiY2hhbmdlX29wZXJhdGlvbiIsICJyZXN1bHREYXRhIiwgIl9pMTYiLCAiX09iamVjdCRlbnRyaWVzOSIsICJfaXRlcmF0b3I2NiIsICJfc3RlcDY2IiwgInNkcmVhc29uIiwgInJlbWFyayIsICJwYXJlbnRTZWN0aW9uIiwgInRhbGtlbmQiLCAiZGVsIiwgImtlZXAiLCAicGFnZXRpdGxlIiwgImdldE5hbWVzcGFjZUlkIiwgInRhbGtwYWdldGl0bGUiLCAiZ2V0TWFpblRleHQiLCAidG9TdHJpbmciLCAidmZka2VwdCIsICJzZXRQcmVwZW5kVGV4dCIsICJuZXd0ZXh0IiwgImtlZXBDb21wbGV0ZSIsICJzYXZlVGFsayIsICJzYmVnaW4iLCAic2VuZCIsICJiYXIiLCAiZGlzYWJsZUxpbmsiLCAidHdpbmtsZWNvbmZpZ19leHBvcnRzIiwgImluaXRfdHdpbmtsZWNvbmZpZyIsICJ0d2lua2xlY29uZmlnIiwgIndhdGNobGlzdEVudW1zIiwgInllcyIsICJubyIsICJkZWZhdWx0IiwgImNvbW1vblNldHMiLCAiY3NkQ3JpdGVyaWEiLCAiZGIiLCAiY3NkQ3JpdGVyaWFEaXNwbGF5T3JkZXIiLCAiY3NkQ3JpdGVyaWFOb3RpZmljYXRpb24iLCAiY3NkQ3JpdGVyaWFOb3RpZmljYXRpb25EaXNwbGF5T3JkZXIiLCAiY3NkQW5kRElDcml0ZXJpYSIsICJjc2RBbmRESUNyaXRlcmlhRGlzcGxheU9yZGVyIiwgInhmZENyaXRlcmlhIiwgImRlbGV0ZSIsICJmd2Rjc2QiLCAieGZkQ3JpdGVyaWFEaXNwbGF5T3JkZXIiLCAibmFtZXNwYWNlc05vU3BlY2lhbCIsICJtb2R1bGUiLCAicHJlZmVyZW5jZXMiLCAiZW51bVZhbHVlcyIsICJ0YWIiLCAiaGVscHRpcCIsICJzZXRWYWx1ZXMiLCAiYWRtaW5Pbmx5IiwgImN1c3RvbUxpc3RWYWx1ZVRpdGxlIiwgImN1c3RvbUxpc3RMYWJlbFRpdGxlIiwgInZhbmQiLCAidG9yZXYiLCAibWluZSIsICJyZWNlbnRjaGFuZ2VzbGlua2VkIiwgImJ1dHRvbkNsaWNrIiwgInJhZGlvQ2xpY2siLCAic2V0RGlzcGxheU9yZGVyIiwgImNhdCIsICJhbHBoYSIsICJzYW1lIiwgIm5vbmFkbWlub25seSIsICJhbGwiLCAiY29udGVudGRpdiIsICJ0b2N0YWJsZSIsICJtYXJnaW5MZWZ0IiwgInRvY3RpdGxlIiwgInRvY2gyIiwgInRvY3RvZ2dsZSIsICJ0b2N0b2dnbGVsaW5rIiwgInRvY3VsIiwgIiR0b2N1bCIsICJ0b2dnbGUiLCAiY29udGVudGZvcm0iLCAic2VjdGlvbmtleSIsICJ0b2NsaSIsICJ0b2NhIiwgInJvdyIsICJjZWxsIiwgImJvcmRlckJvdHRvbSIsICJtYXJnaW5Ub3AiLCAicm93Y291bnQiLCAicHJlZmtleSIsICJwcmVmIiwgIm1hcmdpbkJvdHRvbSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiZ290UHJlZiIsICJ0ZXh0QWxpZ24iLCAicGFkZGluZ1JpZ2h0IiwgIm9wdGlvbkV4aXN0cyIsICJfaTE3IiwgIl9PYmplY3QkZW50cmllczEwIiwgImVudW12YWx1ZSIsICJlbnVtZGlzcGxheSIsICJjaGVja2RpdiIsICJwYWRkaW5nTGVmdCIsICJ3b3JrZXIiLCAiaXRlbWtleSIsICJpdGVtdmFsdWUiLCAiY2hlY2tsYWJlbCIsICJfaXRlcmF0b3I2NyIsICJfc3RlcDY3IiwgIl9pMTgiLCAiX09iamVjdCRlbnRyaWVzMTEiLCAiY3VzdG9tTGlzdEJ1dHRvbiIsICJsaXN0RGlhbG9nIiwgInJlc2V0bGluayIsICJyZXNldFByZWZMaW5rIiwgImNzc0Zsb2F0IiwgIm1hcmdpbiIsICJmb290ZXJib3giLCAic3VibWl0QnV0dG9uIiwgImZvb3RlcnNwYW4iLCAiZm9vdGVyYSIsICJyZXNldEFsbFByZWZzIiwgImhhc2giLCAibG9jIiwgImJveCIsICJzY3JpcHRQYWdlTmFtZSIsICJhZGRSb3ciLCAiZGxndGFibGUiLCAiY29udGVudHRyIiwgImNvbnRlbnR0ZCIsICJyZW1vdmVCdXR0b24iLCAiX2N1cnByZWYkY3VzdG9tTGlzdFZhIiwgIl9jdXJwcmVmJGN1c3RvbUxpc3RMYSIsICIkcHJlZmJ1dHRvbiIsICJjdXJ2YWx1ZSIsICJjdXJwcmVmIiwgImRpYWxvZ2NvbnRlbnQiLCAiZGxndGJvZHkiLCAiZGxndHIiLCAiZGxndGgiLCAiZ290Um93IiwgIl9pdGVyYXRvcjY4IiwgIl9zdGVwNjgiLCAiZGxndGZvb3QiLCAiZGxndGQiLCAiYWRkQnV0dG9uIiwgIm1pbldpZHRoIiwgImJ1dHRvbiIsICJyZXNldCIsICJ0Ym9keSIsICIkYnV0dG9uIiwgIm9sZHZhbHVlIiwgInJlc2V0UHJlZiIsICIkdGJvZHkiLCAiX2l0ZXJhdG9yNjkiLCAiX3N0ZXA2OSIsICJpbnB1dGtleSIsICJ3YW50ZWRwcmVmIiwgImZvdW5kaXQiLCAiX2kxOSIsICJfT2JqZWN0JGVudHJpZXMxMiIsICJ1c2VyanMiLCAid3JpdGVQcmVmcyIsICJuZXdDb25maWciLCAib3B0aW9uc1ZlcnNpb24iLCAiY29tcGFyZSIsICJiIiwgInVzZXJWYWx1ZSIsICJfaXRlcmF0b3I3MCIsICJfc3RlcDcwIiwgIl9pMjAiLCAiX09iamVjdCRlbnRyaWVzMTMiLCAibm93aWtpIiwgIkpTT04iLCAic3RyaW5naWZ5IiwgInNhdmVTdWNjZXNzIiwgIm5vdGljZWJveCIsICJub3RpY2VjbGVhciIsICJjbGVhciIsICJQcm9taXNlIiwgInJlc29sdmUiLCAidHdpbmtsZUxvYWQiLCAiX3R3aW5rbGVMb2FkIiwgImFwcGx5IiwgImFyZ3VtZW50cyJdCn0K diff --git a/src/Twinkle/modules/twinkleblock.js b/src/Twinkle/modules/twinkleblock.js index 106f426..039d4e8 100644 --- a/src/Twinkle/modules/twinkleblock.js +++ b/src/Twinkle/modules/twinkleblock.js @@ -1298,11 +1298,8 @@ import {initMwApi} from 'ext.gadget.Util'; expiry: '1 day', nocreate: true, pageParam: true, - reason: window.wgULS('持续加入不符合中国价值观的非法内容', '持續加入不符合中國價值觀的非法內容'), - summary: window.wgULS( - '封禁通知:持续加入不符合中国价值观的非法内容', - '封鎖通知:持續加入不符合中國價值觀的非法內容' - ), + reason: window.wgULS('持续加入非法内容', '持續加入非法內容'), + summary: window.wgULS('封禁通知:持续加入非法内容', '封鎖通知:持續加入非法內容'), }, 'uw-sockblock': { autoblock: true, @@ -1568,7 +1565,7 @@ import {initMwApi} from 'ext.gadget.Util'; {label: window.wgULS('骚扰用户', '騷擾使用者'), value: 'uw-hblock'}, {label: window.wgULS('破坏', '破壞'), value: 'uw-vblock', selected: true}, { - label: window.wgULS('持续加入不符合中国价值观的非法内容', '持續加入不符合中國價值觀的非法內容'), + label: window.wgULS('持续加入非法内容', '持續加入非法內容'), value: 'uw-illegalblock', }, {label: window.wgULS('滥用多个账号', '濫用多個賬號'), value: 'uw-sockblock'}, diff --git a/src/Twinkle/modules/twinklewarn.js b/src/Twinkle/modules/twinklewarn.js index 76be88a..f453cdd 100644 --- a/src/Twinkle/modules/twinklewarn.js +++ b/src/Twinkle/modules/twinklewarn.js @@ -608,18 +608,12 @@ list: { 'uw-illegal': { level1: { - label: window.wgULS('加入不符合中国价值观的内容', '加入不符合中國價值觀的內容'), - summary: window.wgULS( - '注意:加入不符合中国价值观的内容', - '注意:加入不符合中國價值觀的內容' - ), + label: window.wgULS('加入违法违规内容', '加入違法違規內容'), + summary: window.wgULS('注意:加入违法违规内容', '注意:加入違法違規內容'), }, level2: { - label: window.wgULS('加入不符合中国价值观的内容', '加入不符合中國價值觀的內容'), - summary: window.wgULS( - '警告:加入不符合中国价值观的内容', - '警告:加入不符合中國價值觀的內容' - ), + label: window.wgULS('加入违法违规内容', '加入違法違規內容'), + summary: window.wgULS('警告:加入违法违规内容', '警告:加入違法違規內容'), }, }, 'uw-own': {