{"css":"*#dm *.dmBody a.span.textonly\n{\n\tcolor:rgb(255,255,255) !important;\n}\n*#dm *.dmBody div.u_1694205906\n{\n\tbackground-color:rgba(0,0,0,0) !important;\n}\n*#dm *.dmBody div.dmPopupInner\n{\n\tbackground-color:rgb(255,255,255) !important;\n\tborder-style:solid !important;\n\tborder-width:0 !important;\n\t-webkit-box-shadow:0 0 10px rgba(0,0,0,0.30) !important;\n\tbox-shadow:0 0 10px rgba(0,0,0,0.30) !important;\n\t-moz-box-shadow:0 0 10px rgba(0,0,0,0.30) !important;\n\tborder-radius:10px !important;\n\t-moz-border-radius:10px !important;\n\t-webkit-border-radius:10px !important;\n\tbackground-image:none !important;\n\tbackground-repeat:no-repeat !important;\n\tbackground-size:cover !important;\n\tbackground-position:top right !important;\n}\n*#dm *.dmBody div.u_dm_content\n{\n\tbackground-image:none !important;\n}\n*#dm *.dmBody *.allWrapper .dmPopupInner\n{\n\tbackground-color:rgba(8,77,126,1) !important;\n}\n*#dm *.dmBody a.u_1404830898\n{\n\tbackground-color:rgba(255,0,0,1) !important;\n}\n*#dm *.dmBody a.u_1404830898 span.text\n{\n\tfont-weight:bold !important;\n}\n","additionalWidgetCss":"/**/.imageWidget{position:relative}.imageWidget a,.imageWidget span.image-caption{font-style:italic;text-align:center}.imageWidget a[data-caption]::after,.imageWidget span[data-caption]::after{content:attr(data-caption);display:block;line-height:100%}\n.imageWidget.with-caption a::after,.imageWidget.with-caption span.image-caption::after{margin-top:12px}.imageWidget img[width][height]{height:auto}[data-flex-site] #fcontainer .imageWidget:after,[data-flex-site] #flex-footer .imageWidget:after,[data-flex-site] #flex-header .imageWidget:after{content:none}\n[data-flex-site] #fcontainer .imageWidget:before,[data-flex-site] #flex-footer .imageWidget:before,[data-flex-site] #flex-header .imageWidget:before{font-size:80px;transform:none}.imageWidget.hover img.hover-image,.imageWidget:hover img.hover-image{display:initial}\n.imageWidget.hover.hasHover img:not(.hover-image),.imageWidget:hover.hasHover img:not(.hover-image){display:none!important}.imageWidget img.hover-image,.imageWidget img.logo-on-scroll{display:none}/**/@media(max-width:767px){body.dmRoot div[dmtemplateid]:not([dmtemplateid=SlideRightTopFloatM]) .dmHeader .multilingualWidget{position:absolute;top:14px;left:13px;margin-top:0}body.dmRoot div[dmtemplateid][dmtemplateid=SlideRightTopFloatM] .dmHeader .multilingualWidget{position:absolute;top:5px;right:17px}\n}@media(min-width:768px) and (max-width:1024px){body:not(.responsiveTablet) #dm div[dmtemplateid=StandardLayoutMultiT] .dmHeader .multilingualWidget{position:absolute!important;top:5px!important;right:17px!important;left:initial!important}\n}@media(max-width:767px){body.dmRoot .dmHeader .displayHidden-inner .multilingualWidget{top:0!important}}#dm_content div.dmRespCol div.multilingualWidget,#hcontainer div.dmRespCol div.multilingualWidget{width:auto!important;display:table!important}\n.multilingualWidget{clear:both;margin:0;vertical-align:top;display:table!important;font-size:0;font-family:sans-serif}.multilingualWidget.displayNone{display:none!important}.multilingualWidget>div{position:relative}\n.multilingualWidget .language{color:#888;display:inline-block}.multilingualWidget .language a{text-align:center;display:inline-block;color:inherit;border:#dadada 1px solid;background-color:#fff}.multilingualWidget .language a img{width:24px;height:26px;min-width:24px;min-height:26px}\n.multilingualWidget .language a span{display:none;line-height:initial}.multilingualWidget .language a span.name{margin-top:5px;margin-left:7px;font-size:13px;font-weight:400;text-transform:capitalize}\n.multilingualWidget .language a span.short-label{font-size:13px}.multilingualWidget .language a:after{line-height:initial}.multilingualWidget.open .current-language a:after{transform:rotate(-180deg)}.multilingualWidget .current-language a:after{transition:transform .2s}\n.multilingualWidget.dropdown .language{width:100%}.multilingualWidget.dropdown .language a{display:block;padding:1px 5px}.multilingualWidget.dropdown .other-languages{position:absolute;z-index:800}.multilingualWidget.dropdown .other-languages a{border-top:0!important}\n.multilingualWidget.dropdown .current-language{position:relative}.multilingualWidget.dropdown .current-language span.name{padding-right:25px}.multilingualWidget.dropdown .dm-icon{font-size:9px;display:inline-block;position:absolute;top:46%;transform:translateY(-50%);transition:transform .2s;right:8px}\n.multilingualWidget.dropdown.open .dm-icon{transform:rotate(-180deg) translateY(50%)}.multilingualWidget.dropdown .other-languages,.multilingualWidget.dropdown.flag-only .dm-icon,.multilingualWidget.inline span,.multilingualWidget.no-flag a img{display:none}\n.multilingualWidget.dropdown.flag-only a{border:transparent 1px solid;background-color:transparent}.multilingualWidget.dropdown.flag-only.open .language a{background-color:rgba(0,0,0,.3);border:#dadada 1px solid}\n.multilingualWidget.dropdown.long-label a{text-align:left;padding:2px 0 2px 5px;position:relative;box-sizing:border-box}.multilingualWidget.dropdown.long-label a span.name,.multilingualWidget.inline.flag-only .language,.multilingualWidget.inline.short-label.no-flag span.short-label{display:inline-block}\n.multilingualWidget.dropdown.long-label.no-flag a{padding:7px 10px 9px}.multilingualWidget.dropdown.long-label.no-flag a span.name,.multilingualWidget.dropdown.short-label.no-flag a span.short-label{margin:0;display:inline-block}\n.multilingualWidget.dropdown.short-label.no-flag a{padding:8px 22px 9px 10px;font-size:13px;height:32px;box-sizing:border-box}.multilingualWidget.dropdown.short-label.no-flag .current-language a:after{top:12px}\n.multilingualWidget.short-label span.short-label{text-transform:uppercase}.multilingualWidget.inline.flag-only a{padding:2px 5px;height:32px;box-sizing:border-box}.multilingualWidget.inline.flag-only .current-language a{box-shadow:inset 0 0 8px 0 rgba(0,0,0,.6);border-right:0;border-right-width:0!important;border-right-color:transparent!important;border-right-style:none!important}\n.multilingualWidget.inline.flag-only .other-languages a:not(:last-child){border-right-width:0!important;border-right-color:transparent!important;border-right-style:none!important}.multilingualWidget.inline.flag-only .dm-icon,.multilingualWidget.inline.short-label.no-flag .dm-icon{display:none}\n.multilingualWidget.inline.short-label.no-flag .current-language a{padding-right:0;border-right-width:0!important;border-right-color:transparent!important;border-right-style:none!important}.multilingualWidget.inline.short-label.no-flag .current-language a span.short-label{font-weight:700}\n.multilingualWidget.inline.short-label.no-flag .other-languages a{border-left-color:transparent!important;border-left-width:0!important;border-left-style:none!important}.multilingualWidget.inline.short-label.no-flag .other-languages a:not(:last-child){padding-right:0;border-right-color:transparent!important;border-right-width:0!important;border-right-style:none!important}\n.multilingualWidget.inline.short-label.no-flag a{position:relative;padding:8px 10px;font-size:13px;height:32px;text-decoration:none}.multilingualWidget.inline.short-label.no-flag a:after{content:'/';position:absolute;top:8px;right:-7px;z-index:1;pointer-events:none}\n.multilingualWidget.inline.short-label.no-flag a:hover .short-label{text-decoration:underline}.multilingualWidget.inline.short-label.no-flag .other-languages a:last-child:after{content:''}/**/.graphicWidget{width:200px;height:200px;margin:10px auto;text-align:center}.graphicWidget svg.svg{width:100%;height:100%;color:#000;fill:#000}.graphicWidgetV2{width:60px;height:60px}.graphicWidgetV3{font-size:0}/**/.dmNewParagraph[data-version]{line-height:initial}.dmNewParagraph[data-version] .text-align-left{text-align:left!important}.dmNewParagraph[data-version] .text-align-center{text-align:center!important}\n.dmNewParagraph[data-version] .text-align-right{text-align:right!important}.dmNewParagraph[data-version] .text-align-justify{text-align:justify!important}.dmNewParagraph[data-version] .ql-indent-1{padding:0 1em;padding-inline-end:0;padding-inline-start:3em}\n.dmNewParagraph[data-version] .ql-indent-2{padding:0 2em;padding-inline-end:0;padding-inline-start:6em}.dmNewParagraph[data-version] .ql-indent-3{padding:0 3em;padding-inline-end:0;padding-inline-start:9em}\n.dmNewParagraph[data-version] .ql-indent-4{padding:0 4em;padding-inline-end:0;padding-inline-start:12em}.dmNewParagraph[data-version] .ql-indent-5{padding:0 5em;padding-inline-end:0;padding-inline-start:15em}\n.dmNewParagraph[data-version] .ql-indent-6{padding:0 6em;padding-inline-end:0;padding-inline-start:18em}.dmNewParagraph[data-version] .ql-indent-7{padding:0 7em;padding-inline-end:0;padding-inline-start:21em}\n.dmNewParagraph[data-version] .ql-indent-8{padding:0 8em;padding-inline-end:0;padding-inline-start:24em}.dmNewParagraph[data-version] .ql-indent-9{padding:0 9em;padding-inline-end:0;padding-inline-start:27em}\n.dmNewParagraph[data-version] h1,.dmNewParagraph[data-version] h2,.dmNewParagraph[data-version] h3,.dmNewParagraph[data-version] h4,.dmNewParagraph[data-version] h5,.dmNewParagraph[data-version] h6,.dmNewParagraph[data-version] ol,.dmNewParagraph[data-version] p,.dmNewParagraph[data-version] ul{margin-top:0;margin-bottom:0}\n.dmNewParagraph[data-version] ol,.dmNewParagraph[data-version] ul{padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.dmNewParagraph[data-version] ol>li,.dmNewParagraph[data-version] ul>li{list-style-type:none;text-indent:-1.5em;margin:0 1em;margin-inline-end:0;margin-inline-start:2em}\n.dmNewParagraph[data-version] ol>li:before,.dmNewParagraph[data-version] ul>li:before{min-width:1em;display:inline-block;margin-right:.5em;margin-inline-start:0;margin-inline-end:.5em;text-align:right;text-align:end}\n.dmNewParagraph[data-version] ul .ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-1}.dmNewParagraph[data-version] ul .ql-indent-1:before{font-weight:700;content:'\\25CB'}\n.dmNewParagraph[data-version] ul .ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-2}.dmNewParagraph[data-version] ul .ql-indent-2:before,.dmNewParagraph[data-version] ul .ql-indent-3:before,.dmNewParagraph[data-version] ul .ql-indent-4:before,.dmNewParagraph[data-version] ul .ql-indent-5:before,.dmNewParagraph[data-version] ul .ql-indent-6:before,.dmNewParagraph[data-version] ul .ql-indent-7:before,.dmNewParagraph[data-version] ul .ql-indent-8:before,.dmNewParagraph[data-version] ul .ql-indent-9:before{font-weight:700;content:'\\25A0'}\n.dmNewParagraph[data-version] ul .ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-3}.dmNewParagraph[data-version] ul .ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9;counter-increment:list-4}\n.dmNewParagraph[data-version] ul .ql-indent-5{counter-reset:list-6 list-7 list-8 list-9;counter-increment:list-5}.dmNewParagraph[data-version] ul .ql-indent-6{counter-reset:list-7 list-8 list-9;counter-increment:list-6}\n.dmNewParagraph[data-version] ul .ql-indent-7{counter-reset:list-8 list-9;counter-increment:list-7}.dmNewParagraph[data-version] ul .ql-indent-8{counter-reset:list-9;counter-increment:list-8}.dmNewParagraph[data-version] ul .ql-indent-9{counter-reset:list-10 list-9;counter-increment:list-9}\n.dmNewParagraph[data-version] ul>li:before{font-weight:700;content:'\\2022';font-family:Arial}.dmNewParagraph[data-version] ul.custom-list-1>li:not([class^=ql-indent-]):not([class*=' ql-indent-']):before{content:\"○\";transform:scale(1);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-2>li:not([class^=ql-indent-]):not([class*=' ql-indent-']):before{content:\"★\";transform:scale(.7);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-3>li:not([class^=ql-indent-]):not([class*=' ql-indent-']):before{content:\"➞\";transform:scale(.8);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-4>li:not([class^=ql-indent-]):not([class*=' ql-indent-']):before{content:\"+\";transform:scale(.7);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-5>li:not([class^=ql-indent-]):not([class*=' ql-indent-']):before{content:\"-\";transform:scale(.7);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-6>li:not([class^=ql-indent-]):not([class*=' ql-indent-']):before{content:\"✓\";transform:scale(.8);transform-origin:center right}\n.dmNewParagraph[data-version] ul.custom-list-7>li:not([class^=ql-indent-]):not([class*=' ql-indent-']):before{content:\"✗\";transform:scale(.8);transform-origin:center right}\n.dmNewParagraph[data-version] ol .ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-1}.dmNewParagraph[data-version] ol .ql-indent-1:before{content:counter(list-1,lower-alpha) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-2}.dmNewParagraph[data-version] ol .ql-indent-2:before{content:counter(list-2,lower-roman) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-3}.dmNewParagraph[data-version] ol .ql-indent-3:before{content:counter(list-3,decimal) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9;counter-increment:list-4}.dmNewParagraph[data-version] ol .ql-indent-4:before{content:counter(list-4,lower-alpha) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-5{counter-reset:list-6 list-7 list-8 list-9;counter-increment:list-5}.dmNewParagraph[data-version] ol .ql-indent-5:before{content:counter(list-5,lower-roman) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-6{counter-reset:list-7 list-8 list-9;counter-increment:list-6}.dmNewParagraph[data-version] ol .ql-indent-6:before{content:counter(list-6,decimal) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-7{counter-reset:list-8 list-9;counter-increment:list-7}.dmNewParagraph[data-version] ol .ql-indent-7:before{content:counter(list-7,lower-alpha) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-8{counter-reset:list-9;counter-increment:list-8}.dmNewParagraph[data-version] ol .ql-indent-8:before{content:counter(list-8,lower-roman) \". \"}\n.dmNewParagraph[data-version] ol .ql-indent-9{counter-reset:list-10 list-9;counter-increment:list-9}.dmNewParagraph[data-version] ol .ql-indent-9:before{content:counter(list-9,decimal) \". \"}\n.dmNewParagraph[data-version] ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.dmNewParagraph[data-version] ol li:before{content:counter(list-0,decimal) \". \"}\n.dmNewParagraph[data-version] a{vertical-align:initial}@media(min-width:768px) and (max-width:1024px){.dmNewParagraph[data-version] .t-text-align-left{text-align:left!important}.dmNewParagraph[data-version] .t-text-align-center{text-align:center!important}\n.dmNewParagraph[data-version] .t-text-align-right{text-align:right!important}.dmNewParagraph[data-version] .t-text-align-justify{text-align:justify!important}}@media(max-width:767px){.dmRoot .dmNewParagraph[data-version] .m-text-align-left{text-align:left!important}\n.dmRoot .dmNewParagraph[data-version] .m-text-align-center{text-align:center!important}.dmRoot .dmNewParagraph[data-version] .m-text-align-right{text-align:right!important}.dmRoot .dmNewParagraph[data-version] .m-text-align-justify{text-align:justify!important}\n}.inlineBindingLink{color:inherit!important;text-decoration:inherit!important}","isHomePage":false,"customwidgetsdata":[{"widgetId":"7b6cfbac88324cffbaaf57354cd7a334","version":219,"js":"dmFyIGVtcHR5TGlzdFBsYWNlSG9sZGVyPSI8c3BhbiBzdHlsZT0nbWluLWhlaWdodDoyMHB4JyBjbGFzcz0nZWRpdG9yT25seUluZm8gaW5FZGl0b3InIGRhdGEtbm9zbmlwcGV0PlRoaXMgbGlzdCBoYXMgbm8gZGF0YSBpbiBZZXh0LiBUaGlzIG1lc3NhZ2Ugb25seSBhcHBlYXJzIGluIHRoZSBlZGl0b3IuPC9zcGFuPiIKCi8qIGZpbmQgeWV4dCBzcmMgKi8KdmFyIGZpbmRZZXh0U3JjID0gZnVuY3Rpb24oKXsKICAgIHZhciAga2V5RXhwID0gbmV3IFJlZ0V4cCgvc3JjPSIoLio/KSIvKTsKICAgIGlmIChkYXRhLmNvbmZpZy5zY3JpcHQuaW5jbHVkZXMoJ2xvY2F0aW9uX2lkJykpIHsKICAgICAgICBkYXRhLmNvbmZpZy5zY3JpcHQgPSBkYXRhLmNvbmZpZy5zY3JpcHQucmVwbGFjZSgnbG9jYXRpb25faWQnLCAnZW50aXR5X2lkJyk7CiAgICB9CiAgICB2YXIgcmVzdWx0ID0ga2V5RXhwLmV4ZWMoZGF0YS5jb25maWcuc2NyaXB0KTsKICAgIGlmKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID09IDIpewogICAgICAgIHdpbmRvdy55ZXh0U2NyaXB0U3JjPXJlc3VsdFsxXTsKICAgICAgICByZXR1cm4gcmVzdWx0WzFdOwogICAgfWVsc2V7CiAgICAgICAgcmV0dXJuIHdpbmRvdy55ZXh0U2NyaXB0U3JjOwogICAgfQp9Cgp3aW5kb3cueWV4dExvYWRlZENhbGxiYWNrID0gZnVuY3Rpb24oeWV4dERhdGEpIHsKICAgICQoJy53cm9uZ1NjcmlwdEVycm9yJykucmVtb3ZlQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICB3aW5kb3cueWV4dEluaXRpYWxpemVkID0gdHJ1ZTsKICAgIAogICAgaWYoeWV4dERhdGEpIHsKICAgICAgICB3aW5kb3cuX3lleHREYXRhID0geWV4dERhdGE7ICAgIAogICAgfSBlbHNlIHsKICAgICAgICB0aHJvdyAiWWV4dCBsb2FkZWQgYnV0IG5vIGRhdGEgd2FzIHBhc3NlZCI7CiAgICB9Cn0KCmZ1bmN0aW9uIGxvYWRZZXh0U2NyaXB0KHNyYyl7CiAgICAkKGVsZW1lbnQpLmZpbmQoJy53cm9uZ1NjcmlwdEVycm9yJykucmVtb3ZlQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICB2YXIgeWV4dFNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkLXlleHQtc2NyaXB0Jyk7CiAgICBpZiAoeWV4dFNjcmlwdCkgewogICAgICAgIHlleHRTY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh5ZXh0U2NyaXB0KTsKICAgIH0KICAgIHlleHRTY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgIHlleHRTY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICB5ZXh0U2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIAogICAgc3JjICs9ICImY2FsbGJhY2s9eWV4dExvYWRlZENhbGxiYWNrIgogICAgCiAgICB5ZXh0U2NyaXB0LnNyYyA9IHNyYzsKICAgIHlleHRTY3JpcHQuaWQgPSAnZC15ZXh0LXNjcmlwdCc7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHlleHRTY3JpcHQpOwp9CgovKiBsb2FkIHlleHQgc2NyaXB0ICovCnZhciBsb2FkWWV4dCA9IGZ1bmN0aW9uKGZvcmNlUmVmcmVzaCkgewogICAgLy8gTWFrZSBzdXJlIHdlIGNhbGwgWWV4dCBvbmx5IG9uY2UKICAgIGlmKHdpbmRvdy55ZXh0SW5pdGlhbGl6ZWQgJiYgIWZvcmNlUmVmcmVzaCl7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICBzdGFydEludGVydmFsVG9XYWl0QW5kTG9hZFdpZGdldHMoZGF0YS5jb25maWcudHlwZSk7CiAgICAKICAgIC8vIFdlIGV4dHJhY3QgdGhlICJzcmMiIGF0dHJpYnV0ZSBmcm9tIHRoZSBzdHJpbmcgcHJvdmlkZWQgaW5hICBzYWZlIHdheQogICAgLy8gVGhlIGZvcm1hdCB3ZSBleHBlY3QgaXMgdGhlIGZvbGxvd2luZzoKICAgCiAgICB0cnl7CiAgICAgICAgdmFyIHNyYyA9IGZpbmRZZXh0U3JjKCk7CiAgICAgICAgaWYoc3JjKXsKCiAgICAgICAgICAgIGxvYWRZZXh0U2NyaXB0KHNyYyk7CiAgICAgICAgICAgIAogICAgICAgIH0gZWxzZSBpZihkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgICAgIC8vICQoZG9jdW1lbnQpLmxvYWQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgLy8gICAgIGlmKCF3aW5kb3cuX3lleHREYXRhKSB7CiAgICAgICAgICAgIC8vICAgICAgICAgJChlbGVtZW50KS5maW5kKCcud3JvbmdTY3JpcHRFcnJvcicpLmFkZENsYXNzKCdoYXNFcnJvcicpOyAgICAKICAgICAgICAgICAgLy8gICAgIH0KICAgICAgICAgICAgLy8gfSkKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vICQoZWxlbWVudCkuZmluZCgnLndyb25nU2NyaXB0RXJyb3InKS5hZGRDbGFzcygnaGFzRXJyb3InKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICB9IGNhdGNoKGV4cCkgewogICAgICAgIC8vICQoZWxlbWVudCkuZmluZCgnLndyb25nU2NyaXB0JykuYWRkQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICAgICAgY29uc29sZS5sb2coZXhwKQogICAgICAgIHJldHVybjsKICAgIH0KICAgIAogICAgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICBpZigkKCcubXVsdGlwbGVZZXh0RXJyb3InKS5sZW5ndGggPiAxKXsKICAgICAgICAgICAgICQoZWxlbWVudCkuZmluZCgnLm11bHRpcGxlWWV4dEVycm9yJykuYWRkQ2xhc3MoJ2hhc0Vycm9yJyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfWVsc2UgaWYoZGF0YS5jb25maWcudHlwZSA9PT0gJ25vbmUnKXsKICAgICAgICAgICAgJChlbGVtZW50KS5maW5kKCcuZWRpdG9yT25seUluZm8nKS5hZGRDbGFzcygnaW5FZGl0b3InKTsgCiAgICAgICAgfQogICAgfQp9CgovKiByZWZyZXNoIHlleHQgc2NyaXB0ICovCndpbmRvdy5yZWZyZXNoWWV4dCA9IGZ1bmN0aW9uKCl7CiAgICBsb2FkWWV4dCh0cnVlKTsKfQoKLy9mdW5jdGlvbiBmb3IgT21uaXR1cmUgdHJhY2tpbmcKd2luZG93Ll90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50ID0gZnVuY3Rpb24oZXZlbnROYW1lKSB7CiAgICBpZih0eXBlb2YoSEFGKT09PSJvYmplY3QiKXsKICAgICAgICBIQUYuT21UcmFja2luZy5vbkNNQ2xpY2soZXZlbnROYW1lKSAKICAgIH0KICAgIHJldHVybjsKfQoKLyogZHJhdyB5ZXh0IG1hcCAqLwp2YXIgZHJhd01hcCA9IGZ1bmN0aW9uKHlleHREYXRhKXsKICAgIHZhciB6b29tID0gZGF0YS5jb25maWcubWFwWm9vbTsKICAgIHZhciB5RGF0YSA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXM7CiAgICB2YXIgYWRkcmVzc1F1ZXJ5ID0geURhdGFbJ2FkZHJlc3MxJ10gKyAiICIgKyB5RGF0YVsnYWRkcmVzczInXSArICIgIiArIHlEYXRhWydjaXR5J10gKyAiICIgKyB5RGF0YVsnc3RhdGUnXSArICIgIiArIHlEYXRhWyd6aXAnXTsKICAgIGRtQVBJLmRyYXdNYXAoe2FkZHJlc3NRdWVyeTogYWRkcmVzc1F1ZXJ5LCB6b29tOiB6b29tLCBjb250YWluZXI6ICQoZWxlbWVudCkuZmluZCgnLnlleHRNYXAnKX0pOwp9CgoKCnZhciBmb3JtYXRQaG9uZUJlZm9yZVJlbmRlciA9IGZ1bmN0aW9uKG51bSxjYikgewogICAgaWYgKCFjYikKICAgICAgICBjYiA9IGZ1bmN0aW9uKCl7cmV0dXJufQogICAgaWYoZGF0YS5jb25maWcuZm9ybWF0UGhvbmUpeyAKICAgICAgICB2YXIgczIgPSAoIiIrbnVtKS5yZXBsYWNlKC9cRC9nLCAnJyk7CiAgICAgICAgdmFyIG0gPSBzMi5tYXRjaCgvXihcZHszfSkoXGR7M30pKFxkezR9KSQvKTsKICAgICAgICB2YXIgZm9ybWF0dGVkID0gICghbSkgPyBudWxsIDogIigiICsgbVsxXSArICIpICIgKyBtWzJdICsgIi0iICsgbVszXTsKICAgICAgICBjYihmb3JtYXR0ZWQpOwogICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7CiAgICB9IGVsc2UgewogICAgICAgIGNiKG51bSk7CiAgICAgICAgcmV0dXJuIG51bTsKICAgIH0KfQoKdmFyIGRpc3BsYXlUZXh0ZExpc3QgPSBmdW5jdGlvbih0eXBlLHlleHREYXRhLGZpcnN0T25seSkgewogICAgdmFyIGxpc3QgPSAiIjsKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbdHlwZV0pIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbdHlwZV0KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSBmYWxzZQogICAgfQogICAgCiAgICBpZih5ZXh0QXR0ICYmIEFycmF5LmlzQXJyYXkoeWV4dEF0dCkpIHsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8IHlleHRBdHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHlleHRBdHRbaV0gPT09ICdBbmRyb2lkIFBheScpIHsKICAgICAgICAgICAgICAgIGxpc3QgKz0gJzxsaT5Hb29nbGUgUGF5PC9saT4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbGlzdCArPSAnPGxpPicgKyB5ZXh0QXR0W2ldICsgJzwvbGk+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyMnICsgdHlwZSArICdMaXN0JykuaHRtbChsaXN0KTsKICAgIH0gZWxzZSBpZiAoeWV4dEF0dCkgewogICAgICAgIHZhciB5ZXh0QXR0ID0geWV4dEF0dC5zcGxpdCgiLCAiKTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8IHlleHRBdHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgbGlzdCArPSAnPGxpPicgKyB5ZXh0QXR0W2ldICsgJzwvbGk+JzsKICAgICAgICB9CiAgICAgICAgJChlbGVtZW50KS5maW5kKCcjJyArIHR5cGUgKyAnTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICAkKGVsZW1lbnQpLmh0bWwoZW1wdHlMaXN0UGxhY2VIb2xkZXIpOwogICAgfSBlbHNlIHsKICAgICAgICAkKGVsZW1lbnQpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgIH0KICAgIAogICAgCn0KCnZhciAgZGlzcGxheVNwZWNpYWx0aWVzID0gZnVuY3Rpb24oeWV4dERhdGEpewogICAgdmFyIGxpc3QgPSAiIjsKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbInNwZWNpYWx0aWVzIl0pIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbInNwZWNpYWx0aWVzIl0KICAgIH0gZWxzZSBpZiAoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1sic3BlY2lhbGl0aWVzIl0pIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbInNwZWNpYWxpdGllcyJdCiAgICB9IGVsc2UgewogICAgICAgIHZhciB5ZXh0QXR0ID0gZmFsc2UKICAgIH0KICAgIAogICAgaWYoeWV4dEF0dCAmJiBBcnJheS5pc0FycmF5KHlleHRBdHQpKSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnI3NwZWNpYWx0aWVzTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKHlleHRBdHQpIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHRBdHQuc3BsaXQoIiwgIik7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnI3NwZWNpYWx0aWVzTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICAkKGVsZW1lbnQpLmh0bWwoZW1wdHlMaXN0UGxhY2VIb2xkZXIpOwogICAgfSBlbHNlIHsKICAgICAgICAkKGVsZW1lbnQpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgIH0KfQoKdmFyIGRpc3BsYXlIb3VycyA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGVdKSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGVdCiAgICB9IGVsc2UgewogICAgICAgIHZhciB5ZXh0QXR0ID0gZmFsc2UKICAgIH0KICAgIAogICAgaWYoeWV4dEF0dCAmJiBBcnJheS5pc0FycmF5KHlleHRBdHQpKSB7CiAgICAgICAgZm9yKHZhciBpPTA7aSA8IHlleHRBdHQubGVuZ3RoO2krKykgewogICAgICAgICAgICB2YXIgaW5kZXhFbmREYXkgPSB5ZXh0QXR0W2ldLmxhc3RJbmRleE9mKCdkYXkgJykgKyAzOwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGxlZnRTaWRlID0geWV4dEF0dFtpXS5zdWJzdHIoMCxpbmRleEVuZERheSkucmVwbGFjZSgiTW9uZGF5IiwiTW9uIikucmVwbGFjZSgiVHVlc2RheSIsIlR1ZSIpLnJlcGxhY2UoIldlZG5lc2RheSIsIldlZCIpLnJlcGxhY2UoIlRodXJzZGF5IiwiVGh1IikucmVwbGFjZSgiRnJpZGF5IiwiRnJpIikucmVwbGFjZSgiU2F0dXJkYXkiLCJTYXQiKS5yZXBsYWNlKCJTdW5kYXkiLCJTdW4iKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciByaWdodFNpZGUgPSB5ZXh0QXR0W2ldLnN1YnN0cihpbmRleEVuZERheSArIDEpCiAgICAgICAgICAgIAogICAgICAgICAgICBsaXN0ICs9ICc8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImxlZnQiPicgKyBsZWZ0U2lkZSArICc8L2Rpdj48ZGl2IGNsYXNzPSJyaWdodCI+JyArIHJpZ2h0U2lkZSArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgIH0KICAgICAgICAKICAgICQoZWxlbWVudCkuZmluZCgnI2hvdXJzU21hbGwnKS5odG1sKGxpc3QpOwogICAgCiAgICB9IGVsc2UgaWYoeWV4dEF0dCkgeyAKICAgICAgICB2YXIgeWV4dEF0dCA9IHlleHRBdHQuc3BsaXQoIiwgIik7CiAgICAgICAgZm9yKHZhciBpPTA7aSA8IHlleHRBdHQubGVuZ3RoO2krKykgewogICAgICAgICAgICBpZigoL1xzLy50ZXN0KHlleHRBdHRbaV0pKSA9PT0gZmFsc2UpewogICAgICAgICAgICAgICAgeWV4dEF0dFtpXSA9IHlleHRBdHRbaV0gKyAnIC0gJyArIHlleHRBdHRbaSsxXQogICAgICAgICAgICAgICAgeWV4dEF0dC5zcGxpY2UoaSsxLCAxKQogICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoeWV4dEF0dFtpXS5pbmNsdWRlcygnZGF5JykgPT09IGZhbHNlICl7CiAgICAgICAgICAgICAgICB2YXIgbGVmdFNpZGUgPSAnICc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciByaWdodFNpZGUgPSB5ZXh0QXR0W2ldCiAgICAgICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbmRleEVuZERheSA9IHlleHRBdHRbaV0ubGFzdEluZGV4T2YoJ2RheSAnKSArIDM7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGxlZnRTaWRlID0geWV4dEF0dFtpXS5zdWJzdHIoMCxpbmRleEVuZERheSkucmVwbGFjZSgiTW9uZGF5IiwiTW9uIikucmVwbGFjZSgiVHVlc2RheSIsIlR1ZSIpLnJlcGxhY2UoIldlZG5lc2RheSIsIldlZCIpLnJlcGxhY2UoIlRodXJzZGF5IiwiVGh1IikucmVwbGFjZSgiRnJpZGF5IiwiRnJpIikucmVwbGFjZSgiU2F0dXJkYXkiLCJTYXQiKS5yZXBsYWNlKCJTdW5kYXkiLCJTdW4iKTsKICAgICAgICAKICAgICAgICAgICAgICAgIHZhciByaWdodFNpZGUgPSB5ZXh0QXR0W2ldLnN1YnN0cihpbmRleEVuZERheSArIDEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGxpc3QgKz0gJzxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFzcz0ibGVmdCI+JyArIGxlZnRTaWRlICsgJzwvZGl2PjxkaXYgY2xhc3M9InJpZ2h0Ij4nICsgcmlnaHRTaWRlICsgJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnI2hvdXJzU21hbGwnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmIChkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgJChlbGVtZW50KS5odG1sKGVtcHR5TGlzdFBsYWNlSG9sZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJChlbGVtZW50KS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICB9Cgp9Cgp2YXIgZGlzcGxheU9wZW5Ib3VycyA9IGZ1bmN0aW9uKHR5cGUsIHlleHREYXRhKXsKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbJ3RpbWV6b25lJ10pewogICAgICAgIHZhciB6b25lID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1sndGltZXpvbmUnXQogICAgfSBlbHNlIHsKICAgICAgICB2YXIgem9uZSA9IGZhbHNlCiAgICB9CiAgICAKICAgIGlmKHpvbmUpewogICAgICAgIHZhciB0aW1lID0gbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7dGltZVpvbmU6IHpvbmV9KTsKICAgICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSh0aW1lICk7CiAgICAgICAgCiAgICAgICAgdmFyIHRoaXJ0eU1pbnMgPSAzMCAqIDYwICogMTAwMAoKICAgICAgICB2YXIgZGF5cyA9IFsnc3VuZGF5JywnbW9uZGF5JywndHVlc2RheScsJ3dlZG5lc2RheScsJ3RodXJzZGF5JywnZnJpZGF5Jywnc2F0dXJkYXknXTsKICAgICAgICB2YXIgZGF5c1Nob3J0ID0gWydTdW4nLCdNb24nLCdUdWVzJywnV2VkJywnVGh1cnMnLCdGcmknLCdTYXQnXTsKCiAgICAgICAgdmFyIGRheSA9IGRheXNbdG9kYXkuZ2V0RGF5KCldOwogICAgICAgIHZhciBob3VyID0gdG9kYXkuZ2V0SG91cnMoKTsKICAgICAgICB2YXIgbWluID0gdG9kYXkuZ2V0TWludXRlcygpOwogICAgICAgIHZhciBkZCA9ICgiMCIgKyB0b2RheS5nZXREYXRlKCkpLnNsaWNlKC0yKTsKICAgICAgICB2YXIgbW0gPSAoIjAiICsgKHRvZGF5LmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpCiAgICAgICAgdmFyIHl5eXkgPSB0b2RheS5nZXRGdWxsWWVhcigpOwogICAgICAgIHZhciB0b2RheURhdGUgPSB5eXl5ICsgJy0nICsgbW0gKyAnLScgKyBkZAogICAgICAgIHZhciBtbSA9IG1tIC0gMSAKICAgICAgICAKICAgICAgICBjb25zdCB0b21vcnJvdyA9IG5ldyBEYXRlKHRvZGF5KQogICAgICAgIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSkKICAgICAgICB2YXIgbW1UbXcgID0gKCIwIiArICh0b21vcnJvdy5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKQogICAgICAgIHZhciBkZFRtdyA9ICgiMCIgKyB0b21vcnJvdy5nZXREYXRlKCkpLnNsaWNlKC0yKQogICAgICAgIHZhciB5eXl5VG13ID0gdG9tb3Jyb3cuZ2V0RnVsbFllYXIoKTsKICAgICAgICB2YXIgbmV4dERheSA9IGRheXNbdG9tb3Jyb3cuZ2V0RGF5KCldCiAgICAgICAgdmFyIHRvbW1vcnJvdyA9IHl5eXlUbXcgKyAnLScgKyBtbVRtdyArICctJyArIGRkVG13CiAgICAgICAgdmFyIG1tVG13ID0gbW1UbXcgLSAxCiAgICB9CgogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgZGF5XSkgewogICAgICAgIHZhciB5ZXh0QXR0ID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgZGF5XQogICAgICAgIGlmICh5ZXh0QXR0ID09PSAiQ2xvc2VkIil7CiAgICAgICAgICAgIHlleHRBdHQgPSBmYWxzZQogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSBmYWxzZQogICAgfQogICAgCiAgICAvL2NoZWNrIGlmIGRheSBpcyBjbG9zZWQKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbdHlwZSArICcuJyArIGRheSArICcuaXNDbG9zZWQnXSA9PT0gdHJ1ZSkgeyAKICAgICAgICB2YXIgY2xvc2VkID0gdHJ1ZQogICAgfQogICAgCiAgICAvL2NvbGxlY3RzIGJ1c2luZXNzIGhvbGlkYXkgaG91cnMgCiAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLmhvbGlkYXlIb3VycyddKXsKICAgICAgICB2YXIgaG9saWRheUhvdXJzID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy5ob2xpZGF5SG91cnMnXQogICAgfSBlbHNlewogICAgICAgICB2YXIgaG9saWRheUhvdXJzID0gZmFsc2UKICAgIH0KICAgIAogICAgLy9nZXRzIG5leHQgZGF5cyBzdGFydCB0aW1lCiAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLicgKyBuZXh0RGF5ICsgJy5pc0Nsb3NlZCddID09PSB0cnVlKXsKICAgICAgICB2YXIgdG9tb3Jyb3dPcGVuID0gZmFsc2UKICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHRvbW9ycm93T3BlbiA9IHRydWUKICAgICAgICB2YXIgdG1yd1N0YXJ0ID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgbmV4dERheV0uc3BsaXQoIiAtICIpWzBdCiAgICB9CiAgICAKICAgICAvL2NoZWNrcyBpZiBob2xpZGF5IGhvdXJzIGNoYW5nZSAKICAgIGlmKGhvbGlkYXlIb3VycykgewogICAgICAgIGZvcih2YXIgaT0wO2kgPCBob2xpZGF5SG91cnMubGVuZ3RoO2krKyl7CiAgICAgICAgICAgIGlmKGhvbGlkYXlIb3Vyc1tpXS5kYXRlID09PSB0b2RheURhdGUgJiYgaG9saWRheUhvdXJzW2ldLm9wZW5JbnRlcnZhbHMpewogICAgICAgICAgICAgICAgeWV4dEF0dCA9IGhvbGlkYXlIb3Vyc1tpXS5ob3Vyc0Zvcm1hdHRlZAogICAgICAgICAgICB9IAogICAgICAgIH0KICAgIH0KICAgIAogICAgLy9zcGxpdCBob3VycwogICAgaWYoeWV4dEF0dCAmJiB5ZXh0QXR0LmluY2x1ZGVzKCIsIikpewogICAgICAgIHlleHRBdHQgPSB5ZXh0QXR0LnNwbGl0KCIsICIpCiAgICAgICAgZm9yKHZhciBpPTA7aSA8IHlleHRBdHQubGVuZ3RoO2krKyl7CiAgICAgICAgICAgIHZhciBlbmQgPSB5ZXh0QXR0W2ldLnNwbGl0KCcgLSAnKVsxXQogICAgICAgICAgICB2YXIgc3RhcnQgPSB5ZXh0QXR0W2ldLnNwbGl0KCcgLSAnKVswXQogICAgICAgICAgICBpZiAoaSsxICE9IHlleHRBdHQubGVuZ3RoKXsKICAgICAgICAgICAgICAgIHZhciBuZXh0U3RhcnQgPSB5ZXh0QXR0W2kgKyAxXS5zcGxpdCgnIC0gJylbMF0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzdGFydC5pbmNsdWRlcygicG0iKSAmJiBzdGFydC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgICAgIHZhciBzdGFydERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzBdKSArIDEyLCBwYXJzZUludChzdGFydC5zcGxpdCgvXHMrfDovKVsxXSkpCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChzdGFydC5zcGxpdCgvXHMrfDovKVswXSksIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYobmV4dFN0YXJ0LmluY2x1ZGVzKCJwbSIpICYmIG5leHRTdGFydC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgICAgIHZhciBuZXh0U3RhcnREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChuZXh0U3RhcnQuc3BsaXQoL1xzK3w6LylbMF0pICsgMTIsIHBhcnNlSW50KG5leHRTdGFydC5zcGxpdCgvXHMrfDovKVsxXSkpCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgbmV4dFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHl5eXksIG1tLCBkZCwgcGFyc2VJbnQobmV4dFN0YXJ0KSwgcGFyc2VJbnQobmV4dFN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgICAgICBpZihlbmQuaW5jbHVkZXMoInBtIikgJiYgZW5kLnNwbGl0KC9ccyt8Oi8pWzBdICE9ICIxMiIpewogICAgICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSkgKyAxMiwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBlbmREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMF0pLCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMV0pKQogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIGlmIChlbmQuaW5jbHVkZXMoImFtIikgJiYgKGVuZERhdGUgPCBzdGFydERhdGUpKXsKICAgICAgICAgICAgICAgIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5VG13LCBtbVRtdywgZGRUbXcsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSksIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVsxXSkpCiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgaWYodG9kYXkgPCBzdGFydERhdGUpewogICAgICAgICAgICAgICAgdmFyIGNsb3NlZCA9IHRydWUgCiAgICAgICAgICAgICAgICB0bXJ3U3RhcnQgPSBzdGFydAogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgfWVsc2UgaWYodG9kYXkgPiBzdGFydERhdGUgJiYgdG9kYXkgPCBlbmREYXRlKXsKICAgICAgICAgICAgICAgIHlleHRBdHQgPSBzdGFydCArICcgLSAnICsgZW5kCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB9ZWxzZSBpZih0b2RheSA+IGVuZERhdGUgJiYgIChpKzEgIT0geWV4dEF0dC5sZW5ndGgpICYmIHRvZGF5IDwgbmV4dFN0YXJ0RGF0ZSl7CiAgICAgICAgICAgICAgICB2YXIgY2xvc2VkID0gdHJ1ZQogICAgICAgICAgICAgICAgdG1yd1N0YXJ0ID0gbmV4dFN0YXJ0CiAgICAgICAgICAgICAgICB0b21vcnJvd09wZW4gPSB0cnVlCiAgICAgICAgICAgIH1lbHNlIGlmKHRvZGF5ID4gZW5kRGF0ZSAmJiBpKzEgPT09IHlleHRBdHQubGVuZ3RoKXsKICAgICAgICAgICAgICAgIHZhciBjbG9zZWQgPSB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9ICAKICAgIAogICAgCiAgICBpZih5ZXh0QXR0IHx8IGNsb3NlZCkgewogICAgICAgIGlmKHR5cGVvZiB5ZXh0QXR0ID09PSAic3RyaW5nIil7CiAgICAgICAgdmFyIHN0YXJ0ID0geWV4dEF0dC5zcGxpdCgiIC0gIilbMF0KICAgICAgICB2YXIgZW5kID0geWV4dEF0dC5zcGxpdCgiIC0gIilbMV0KICAgICAgICBpZihzdGFydC5pbmNsdWRlcygicG0iKSAmJiBzdGFydC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHl5eXksIG1tLCBkZCwgcGFyc2VJbnQoc3RhcnQuc3BsaXQoL1xzK3w6LylbMF0pICsgMTIsIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gbmV3IERhdGUoeXl5eSwgbW0sIGRkLCBwYXJzZUludChzdGFydC5zcGxpdCgvXHMrfDovKVswXSksIHBhcnNlSW50KHN0YXJ0LnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYoZW5kLmluY2x1ZGVzKCJwbSIpICYmIGVuZC5zcGxpdCgvXHMrfDovKVswXSAhPSAiMTIiKXsKICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSkgKyAxMiwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9IGVsc2UgaWYgKGVuZC5pbmNsdWRlcygiYW0iKSAmJiBlbmQuc3BsaXQoL1xzK3w6LylbMF0gPT09ICIxMiIpIHsKICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBuZXcgRGF0ZSh5eXl5LCBtbSwgZGQsIHBhcnNlSW50KGVuZC5zcGxpdCgvXHMrfDovKVswXSkgLSAxMiwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgZW5kRGF0ZSA9IG5ldyBEYXRlKHl5eXksIG1tLCBkZCwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzBdKSwgcGFyc2VJbnQoZW5kLnNwbGl0KC9ccyt8Oi8pWzFdKSkKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKGVuZC5pbmNsdWRlcygiYW0iKSAmJiAoZW5kRGF0ZSA8IHN0YXJ0RGF0ZSkpewogICAgICAgICAgICBlbmREYXRlID0gbmV3IERhdGUoeXl5eVRtdywgbW1UbXcsIGRkVG13LCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMF0pLCBwYXJzZUludChlbmQuc3BsaXQoL1xzK3w6LylbMV0pKQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL2NoZWNrIGlmIGNsb3NlZAogICAgICAgIGlmKHRvZGF5ID4gZW5kRGF0ZSl7CiAgICAgICAgICAgIHZhciBjbG9zZWQgPSB0cnVlCiAgICAgICAgLy9vcGVuZWQgMjQgaG91cnMgCiAgICAgICAgfSBlbHNlIGlmKHN0YXJ0ID09PSAnMTI6MDAgYW0nICYmIGVuZCA9PT0gJzExOjU5IHBtJyl7CiAgICAgICAgICAgIHZhciBzdGF0dXMgPSAiT3BlbiAiCiAgICAgICAgICAgIHZhciBjc3NDbGFzcyA9ICJhbGxEYXlTdGF0dXMiCiAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICcgMjQgaG91cnMgJwogICAgICAgIC8vb3BlbmVkCiAgICAgICAgfSBlbHNlIGlmKHRvZGF5IDwgc3RhcnREYXRlKXsKICAgICAgICAgICAgdmFyIGNsb3NlZCA9IHRydWUKICAgICAgICAvL2NoZWNrIGlmIGNsb3Npbmcgc29vbgogICAgICAgIH0gZWxzZSBpZiAoZW5kRGF0ZSAtIHRvZGF5IDwgdGhpcnR5TWlucyAmJiBlbmREYXRlIC0gdG9kYXkgPCAwID09PSBmYWxzZSApewogICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zaW5nIFNvb24gIgogICAgICAgICAgICAgICAgdmFyIGNzc0NsYXNzID0gInNvb25TdGF0dXMiCiAgICAgICAgICAgICAgICB2YXIgYnVzSG91cnMgPSAnIOKAoiAnICsgZW5kIAogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBzdGF0dXMgPSAiT3BlbiAiCiAgICAgICAgICAgIHZhciBjc3NDbGFzcyA9ICJvcGVuZWRTdGF0dXMiCiAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICfigKIgQ2xvc2VzICcgKyBlbmQgCiAgICAgICAgfQogCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKGNsb3NlZCl7CiAgICAgICAgCiAgICAgICAgLy8gY2xvc2VkICYgb3BlbmluZyB0b2RheSAKICAgICAgICBpZigodG9kYXkgPCBzdGFydERhdGUpKXsKICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zZWQgIgogICAgICAgICAgICB2YXIgY3NzQ2xhc3MgPSAiY2xvc2VkU3RhdHVzIgogICAgICAgICAgICB2YXIgYnVzSG91cnMgPSAnIE9wZW5zICcgKyBzdGFydCAKICAgICAgICAvL2Nsb3NlZCAmIG9wZW4gdG9tb3Jyb3cgCiAgICAgICAgfSBlbHNlIGlmKGNsb3NlZCAmJiB0b21vcnJvd09wZW4gPT09IHRydWUpewogICAgICAgICAgICB2YXIgc3RhdHVzID0gIkNsb3NlZCAiCiAgICAgICAgICAgIHZhciBjc3NDbGFzcyA9ICJjbG9zZWRTdGF0dXMiCiAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICcg4oCiIE9wZW5zICcgKyB0bXJ3U3RhcnQgCiAgICAgICAgLy9jbG9zZWQgYW5kIG5vdCBvcGVuIHRvbW9ycm93IAogICAgICAgIH0gZWxzZSBpZihjbG9zZWQgJiYgdG9tb3Jyb3dPcGVuICE9IHRydWUpewogICAgICAgICAgICB2YXIgb2Zmc2V0ID0gZGF5cy5pbmRleE9mKGRheSkgKyAxCiAgICAgICAgICAgIGZvciggdmFyIGk9MDsgaSA8IGRheXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBkYXlJbmRleCA9IChpICsgb2Zmc2V0KSAlIGRheXMubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy4nICsgZGF5c1tkYXlJbmRleF0gKyAnLm9wZW5JbnRlcnZhbHMnXSl7CiAgICAgICAgICAgICAgICAgICAgdG1yd1N0YXJ0ID0gIGRheXNTaG9ydFtkYXlJbmRleF0gKyAiICIgKyB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLScgKyBkYXlzW2RheUluZGV4XV0uc3BsaXQoIiAtICIpWzBdIAogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zZWQgIgogICAgICAgICAgICB2YXIgY3NzQ2xhc3MgPSAiY2xvc2VkU3RhdHVzIgogICAgICAgICAgICB2YXIgYnVzSG91cnMgPSAnIOKAoiBPcGVucyAnICsgdG1yd1N0YXJ0CgogICAgICAgIH0KICAgICAgICB9CiAgICB9CiAKICAgIC8vIGNoZWNrcyBpZiBob2xpZGF5CiAgICBpZihob2xpZGF5SG91cnMpIHsKICAgICAgICBmb3IodmFyIGk9MDtpIDwgaG9saWRheUhvdXJzLmxlbmd0aDtpKyspewogICAgICAgICAgICBpZihob2xpZGF5SG91cnNbaV0uZGF0ZSA9PT0gdG9kYXlEYXRlICYmIGhvbGlkYXlIb3Vyc1tpXS5pc0Nsb3NlZCA9PT0gdHJ1ZSAmJiB0b21vcnJvd09wZW4gPT09IGZhbHNlKXsKICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSBkYXlzLmluZGV4T2YoZGF5KSArIDEKICAgICAgICAgICAgICAgIGZvciggdmFyIGk9MDsgaSA8IGRheXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGF5SW5kZXggPSAoaSArIG9mZnNldCkgJSBkYXlzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZih5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAnLicgKyBkYXlzW2RheUluZGV4XSArICcub3BlbkludGVydmFscyddKXsKICAgICAgICAgICAgICAgICAgICB0bXJ3U3RhcnQgPSBkYXlzU2hvcnRbZGF5SW5kZXhdICsgIiAiICsgeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlICsgJy0nICsgZGF5c1tkYXlJbmRleF1dLnNwbGl0KCIgLSAiKVswXQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gIkNsb3NlZCAiCiAgICAgICAgICAgICAgICB2YXIgY3NzQ2xhc3MgPSAiY2xvc2VkU3RhdHVzIgogICAgICAgICAgICAgICAgdmFyIGJ1c0hvdXJzID0gJyDigKIgT3BlbnMgJyArIHRtcndTdGFydCAgCiAgICAgICAgICAgIH0gZWxzZSBpZihob2xpZGF5SG91cnNbaV0uZGF0ZSA9PT0gdG9kYXlEYXRlICYmIGhvbGlkYXlIb3Vyc1tpXS5pc0Nsb3NlZCA9PT0gdHJ1ZSAmJiB0b21vcnJvd09wZW4gPT09IHRydWUpewogICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICJDbG9zZWQgIgogICAgICAgICAgICAgICAgdmFyIGNzc0NsYXNzID0gImNsb3NlZFN0YXR1cyIKICAgICAgICAgICAgICAgIHZhciBidXNIb3VycyA9ICcg4oCiIE9wZW5zICcgKyB0bXJ3U3RhcnQgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gCiAgICBpZihjc3NDbGFzcyl7CiAgICAgICAgdmFyIGhvdXJzV2lkZ2V0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N0YXR1cycpCiAgICAgICAgZm9yKCB2YXIgaT0wOyBpIDwgaG91cnNXaWRnZXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGhvdXJzV2lkZ2V0c1tpXS5jbGFzc0xpc3QuYWRkKGNzc0NsYXNzKTsKICAgICAgICB9CiAgICB9CiAgICBpZihzdGF0dXMpewogICAgICAgIHZhciBob3Vyc1dpZGdldHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdGF0dXMnKQogICAgICAgIGZvciggdmFyIGk9MDsgaSA8IGhvdXJzV2lkZ2V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBob3Vyc1dpZGdldHNbaV0uaW5uZXJUZXh0ID0gc3RhdHVzOwogICAgICAgIH0KICAgIH0KICAgIGlmKGNzc0NsYXNzID09PSAnYWxsRGF5U3RhdHVzJyl7CiAgICAgICAgdmFyIGhvdXJzV2lkZ2V0cyA9ICQoZWxlbWVudCkuZmluZCgnLm9wZW5Ib3VycycpCiAgICAgICAgZm9yKCB2YXIgaT0wOyBpIDwgaG91cnNXaWRnZXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGhvdXJzV2lkZ2V0c1tpXS5jaGlsZHJlblswXS50ZXh0Q29udGVudCA9ICIiCiAgICAgICAgfQogICAgfQogICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnb3BlbkhvdXJzJylbMF0uY2hpbGRFbGVtZW50Q291bnQgPiAxKXsKICAgICAgICB2YXIgaG91cnNXaWRnZXRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnb3BlbkhvdXJzJykKICAgICAgICBmb3IoIHZhciBpPTA7IGkgPCBob3Vyc1dpZGdldHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIG9wZW5Ib3Vyc0xlbmd0aCA9IGhvdXJzV2lkZ2V0c1tpXS5jaGlsZE5vZGVzLmxlbmd0aAogICAgICAgICAgICB2YXIgb2xkSG91cnMgPSBob3Vyc1dpZGdldHNbaV0KICAgICAgICAgICAgb2xkSG91cnMucmVtb3ZlQ2hpbGQob2xkSG91cnMuY2hpbGROb2Rlc1tvcGVuSG91cnNMZW5ndGggLSAxXSkKICAgICAgICB9CiAgICB9CiAgICB2YXIgaG91cnNXaWRnZXRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnb3BlbkhvdXJzJykKICAgIGZvciggdmFyIGk9MDsgaSA8IGhvdXJzV2lkZ2V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBob3Vyc1dpZGdldHNbaV0uYXBwZW5kKGJ1c0hvdXJzKQogICAgICAgIH0KfQoKCnZhciBkaXNwbGF5SG9saWRheUhvdXJzTGlzdCA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICAKICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbImhvdXJzLmhvbGlkYXlIb3VycyJdKSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzWyJob3Vycy5ob2xpZGF5SG91cnMiXQogICAgfSBlbHNlIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbImhvbGlkYXlIb3VycyJdKSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzWyJob2xpZGF5SG91cnMiXQogICAgfSBlbHNlIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IGZhbHNlCiAgICB9CiAgICAKICAgIAogICAgCiAgICBpZih5ZXh0QXR0KSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgZGF0ZUhvbCA9IG5ldyBEYXRlKERhdGUucGFyc2UoeWV4dEF0dFtpXS5kYXRlKSk7IAoKICAgICAgICAgICAgdmFyIGRhdGVOb3cgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICB2YXIgbnVtRGF5c0JldHdlZW4gPSBnZXROdW1EYXlzQmV0d2VlbihkYXRlSG9sLGRhdGVOb3cpOwogICAgICAgIAogICAgICAgICAgICBpZiAobnVtRGF5c0JldHdlZW4gPiAtMSkgewogICAgICAgICAgICAgICAgLy8gd3JpdGUgdG8gZG9tCiAgICAgICAgICAgICAgICBsaXN0ICs9ICc8bGk+JyArIHlleHRBdHRbaV0uZGF0ZUZvcm1hdHRlZCArICcgLSAgPHNwYW4gY2xhc3M9ImhvbGlkYXlIb3Vyc1N0YXR1cyI+JyArIHlleHRBdHRbaV0uaG91cnNGb3JtYXR0ZWQgKyAnPC9zcGFuPjwvbGk+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgJChlbGVtZW50KS5maW5kKCcjJyArIHR5cGUgKyAnTGlzdCcpLmh0bWwobGlzdCk7CiAgICB9IGVsc2UgaWYgKGRhdGEuaW5FZGl0b3IpIHsKICAgICAgICAvLyBpZiBpbiBlZGl0b3IgZGlzcGxheSBwbGFjZSBob2xkZXIKICAgICAgICAkKGVsZW1lbnQpLmh0bWwoZW1wdHlMaXN0UGxhY2VIb2xkZXIpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBpZiBlbXB0eSwgaGlkZSBlbGVtZW50IG9uIHJ1bnRpbWUKICAgICAgICAkKGVsZW1lbnQpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgIH0KfQoKdmFyIGRpc3BsYXlTZXJ2aWNlQXJlYSA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEsZmlyc3RPbmx5KSB7CiAgICB2YXIgbGlzdCA9ICIiOwogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlXSkgewogICAgICAgIHZhciB5ZXh0QXR0ID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlXQogICAgfSBlbHNlIHsKICAgICAgICB2YXIgeWV4dEF0dCA9IGZhbHNlCiAgICB9CgogICAgaWYgKGZpcnN0T25seSkgewogICAgICAgIGxpc3QgPSAnPGxpPicgKyB5ZXh0QXR0WzBdICsgJzwvbGk+JzsKICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyMnICsgdHlwZSArICdMaXN0JykuaHRtbChsaXN0KTsKICAgIH0gZWxzZSBpZiAoeWV4dEF0dCAmJiBBcnJheS5pc0FycmF5KHlleHRBdHQpKSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnIycgKyB0eXBlICsgJ0xpc3QnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmICh5ZXh0QXR0KSB7CiAgICAgICAgdmFyIHlleHRBdHQgPSB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGUgKyAiLnBsYWNlcyJdCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPCB5ZXh0QXR0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxpc3QgKz0gJzxsaT4nICsgeWV4dEF0dFtpXSArICc8L2xpPic7CiAgICAgICAgfQogICAgICAgICQoZWxlbWVudCkuZmluZCgnIycgKyB0eXBlICsgJ0xpc3QnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmIChkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgJChlbGVtZW50KS5odG1sKGVtcHR5TGlzdFBsYWNlSG9sZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJChlbGVtZW50KS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICB9Cgp9Cgp2YXIgZGlzcGxheVBob25lTGlzdCA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICAKICAgIHZhciBsb2NEYXRhID0geWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlczsKICAgIAogICAgaWYobG9jRGF0YS5waG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+TWFpbjo8L3NwYW4+PHNwYW4gY2xhc3M9InBob25lTnVtIj4gJyArIGZvcm1hdFBob25lQmVmb3JlUmVuZGVyKGxvY0RhdGEucGhvbmUpICsgJzwvc3Bhbj48L2xpPic7CiAgICB9CiAgICBpZihsb2NEYXRhLmxvY2FsUGhvbmUpIHsKICAgICAgICBsaXN0ICs9ICc8bGk+PHNwYW4gY2xhc3M9InBob25lTGFiZWwiPkxvY2FsOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5sb2NhbFBob25lKSArICc8L3NwYW4+PC9saT4nOwogICAgfQogICAgaWYobG9jRGF0YS5hbHRlcm5hdGVQaG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+QWx0ZXJuYXRlOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5hbHRlcm5hdGVQaG9uZSkgKyAnPC9zcGFuPjwvbGk+JzsKICAgIH0KICAgIGlmKGxvY0RhdGEudG9sbEZyZWVQaG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+VG9sbCBGcmVlOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS50b2xsRnJlZVBob25lKSArICc8L3NwYW4+PC9saT4nOwogICAgfQogICAgaWYobG9jRGF0YS5tb2JpbGVQaG9uZSkgewogICAgICAgIGxpc3QgKz0gJzxsaT48c3BhbiBjbGFzcz0icGhvbmVMYWJlbCI+TW9iaWxlOjwvc3Bhbj48c3BhbiBjbGFzcz0icGhvbmVOdW0iPiAnICsgZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5tb2JpbGVQaG9uZSkgKyAnPC9zcGFuPjwvbGk+JzsKICAgIH0KICAgIGlmKGxvY0RhdGEuZmF4UGhvbmUpIHsKICAgICAgICBsaXN0ICs9ICc8bGk+PHNwYW4gY2xhc3M9InBob25lTGFiZWwiPkZheDo8L3NwYW4+PHNwYW4gY2xhc3M9InBob25lTnVtIj4gJyArIGZvcm1hdFBob25lQmVmb3JlUmVuZGVyKGxvY0RhdGEuZmF4UGhvbmUpICsgJzwvc3Bhbj48L2xpPic7CiAgICB9CiAgICBpZihsb2NEYXRhLnR0eVBob25lKSB7CiAgICAgICAgbGlzdCArPSAnPGxpPjxzcGFuIGNsYXNzPSJwaG9uZUxhYmVsIj5UVFk6PC9zcGFuPjxzcGFuIGNsYXNzPSJwaG9uZU51bSI+ICcgKyBmb3JtYXRQaG9uZUJlZm9yZVJlbmRlcihsb2NEYXRhLnR0eVBob25lKSArICc8L3NwYW4+PC9saT4nOwogICAgfQogICAgCiAgICBpZihsaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyMnICsgdHlwZSArICdMaXN0JykuaHRtbChsaXN0KTsKICAgIH0gZWxzZSBpZiAoZGF0YS5pbkVkaXRvcikgewogICAgICAgICQoZWxlbWVudCkuaHRtbChlbXB0eUxpc3RQbGFjZUhvbGRlcik7CiAgICB9IGVsc2UgewogICAgICAgICQoZWxlbWVudCkuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwogICAgfQogICAgCiAgICBlbWl0WWV4dFBob25lUmVuZGVyRXZlbnQoZm9ybWF0UGhvbmVCZWZvcmVSZW5kZXIobG9jRGF0YS5waG9uZSkpOwogICAgCn0KCnZhciBnZXROdW1EYXlzQmV0d2VlbiA9IGZ1bmN0aW9uKGQxLCBkMikgewogIHZhciBkaWZmID0gZDEuZ2V0VGltZSgpIC0gZDIuZ2V0VGltZSgpOwogIHJldHVybiBkaWZmIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpOwp9OwoKdmFyIG9yZGVyUGF5bWVudHNMaXN0ID0gZnVuY3Rpb24obGlzdERhdGEpIHsKICAgIAogICAgaWYobGlzdERhdGEuaW5kZXhPZignRGlzY292ZXInKSA+PSAwKSB7CiAgICAgICAgbGlzdERhdGEuc3BsaWNlKGxpc3REYXRhLmluZGV4T2YoIkRpc2NvdmVyIiksIDEpOwogICAgICAgIGxpc3REYXRhLnVuc2hpZnQoJ0Rpc2NvdmVyJyk7CiAgICB9CiAgICAKICAgIGlmKGxpc3REYXRhLmluZGV4T2YoJ0FtZXJpY2FuIEV4cHJlc3MnKSA+PSAwKSB7CiAgICAgICAgbGlzdERhdGEuc3BsaWNlKGxpc3REYXRhLmluZGV4T2YoIkFtZXJpY2FuIEV4cHJlc3MiKSwgMSk7CiAgICAgICAgbGlzdERhdGEudW5zaGlmdCgnQW1lcmljYW4gRXhwcmVzcycpOwogICAgfQogICAgCiAgICBpZihsaXN0RGF0YS5pbmRleE9mKCdNYXN0ZXJDYXJkJykgPj0gMCkgewogICAgICAgIGxpc3REYXRhLnNwbGljZShsaXN0RGF0YS5pbmRleE9mKCJNYXN0ZXJDYXJkIiksIDEpOwogICAgICAgIGxpc3REYXRhLnVuc2hpZnQoJ01hc3RlckNhcmQnKTsKICAgIH0KICAgIAogICAgaWYobGlzdERhdGEuaW5kZXhPZignVmlzYScpID49IDApIHsKICAgICAgICBsaXN0RGF0YS5zcGxpY2UobGlzdERhdGEuaW5kZXhPZigiVmlzYSIpLCAxKTsKICAgICAgICBsaXN0RGF0YS51bnNoaWZ0KCdWaXNhJyk7CiAgICB9CiAgICAKICAgIHJldHVybiBsaXN0RGF0YQp9Cgp2YXIgZGlzcGxheUltYWdlTGlzdCA9IGZ1bmN0aW9uKHR5cGUseWV4dERhdGEpIHsKICAgIHZhciBsaXN0ID0gIiI7CiAgICB2YXIgbGlzdERhdGEgPSBvcmRlclBheW1lbnRzTGlzdChfeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlc1t0eXBlXSk7CiAgICAKICAgIAogICAgZm9yICh2YXIgaT0wOyBpPCBsaXN0RGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgIAogICAgICAgIGxpc3QgKz0gJzxpbWcgc3JjPSInICsgZ2V0SW1hZ2VVcmwobGlzdERhdGFbaV0sZGF0YS5jb25maWcuY2FyZFN0eWxlRGFya09yTGlnaHQpICsgJyIgYWx0PSInICsgbGlzdERhdGFbaV0gKyAnIi8+JwogICAgfQogICAgCiAgICBpZihsaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJyNwYXltZW50T3B0aW9uc0ltYWdlcycpLmh0bWwobGlzdCkKICAgIH0gZWxzZSBpZiAoZGF0YS5pbkVkaXRvcikgewogICAgICAgICQoZWxlbWVudCkuaHRtbChlbXB0eUxpc3RQbGFjZUhvbGRlcik7CiAgICB9IGVsc2UgewogICAgICAgICQoZWxlbWVudCkuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwogICAgfQogICAgCiAgICAKICAgIAp9Cgp2YXIgZGlzcGxheVNvY2lhbEljb25zID0gZnVuY3Rpb24odHlwZSx5ZXh0RGF0YSkgewogICAgdmFyIGxpc3QgPSAiIjsKICAgIAogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlcy5mYWNlYm9va1BhZ2VVcmwpIHsKICAgICAgICBsaXN0ICs9ICc8YSBocmVmPSInICsgeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlcy5mYWNlYm9va1BhZ2VVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+IDxpbWcgc3JjPSJodHRwczovL2Nkbi53ZWJzaXRlcy5oaWJ1LmNvbS8tcmVzZWxsZXJzLXByZXZpZXcvX3NvY2lhbF9pY29ucy9oaWJ1X2ZhY2Vib29rLnN2ZyIgLz48L2E+JwogICAgfQogICAgaWYoeWV4dERhdGEuZW50aXRpZXNbMF0uYXR0cmlidXRlcy50d2l0dGVySGFuZGxlKSB7CiAgICAgICAgbGlzdCArPSAnPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS8nICsgIHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXMudHdpdHRlckhhbmRsZSArICciIHRhcmdldD0iX2JsYW5rIj4gPGltZyBzcmM9Imh0dHBzOi8vY2RuLndlYnNpdGVzLmhpYnUuY29tLy1yZXNlbGxlcnMtcHJldmlldy9fc29jaWFsX2ljb25zL2hpYnVfdHdpdHRlci5zdmciIC8+PC9hPicKICAgIH0KICAgIGlmKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXMuaW5zdGFncmFtSGFuZGxlKSB7CiAgICAgICAgbGlzdCArPSAnPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS8nKyB5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzLmluc3RhZ3JhbUhhbmRsZSsnIiB0YXJnZXQ9Il9ibGFuayI+IDxpbWcgc3JjPSJodHRwczovL2Nkbi53ZWJzaXRlcy5oaWJ1LmNvbS8tcmVzZWxsZXJzLXByZXZpZXcvX3NvY2lhbF9pY29ucy9oaWJ1X2luc3RhZ3JhbS5zdmciIC8+PC9hPicKICAgIH0KICAgIAogICAgaWYobGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgJChlbGVtZW50KS5maW5kKCcjc29jaWFsSWNvbnMnKS5odG1sKGxpc3QpOwogICAgfSBlbHNlIGlmIChkYXRhLmluRWRpdG9yKSB7CiAgICAgICAgJChlbGVtZW50KS5odG1sKGVtcHR5TGlzdFBsYWNlSG9sZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJChlbGVtZW50KS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7CiAgICB9CiAgICAKICAgIAp9Cgp2YXIgZ2V0SW1hZ2VVcmwgPSBmdW5jdGlvbihuYW1lLHN0eWxlKSB7CiAgICB2YXIgY2RuUGF0aCA9ICdodHRwczovL2Nkbi53ZWJzaXRlcy5oaWJ1LmNvbS8tcmVzZWxsZXJzLXByZXZpZXcvX2NjX2ljb25zLyc7CiAgICBpZighc3R5bGUpIHsKICAgICAgICBzdHlsZSA9ICdfZC5zdmcnCiAgICB9CiAgICBpZiAobmFtZSA9PT0gIlpFTExFIil7CiAgICAgICAgbmFtZSA9ICJaZWxsZSIKICAgIH0KICAgIHZhciBpbWFnZVVybD0nJzsKICAgIHN3aXRjaCAobmFtZSkgewogICAgICAgIGNhc2UgJ1Zpc2EnOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdNYXN0ZXJDYXJkJzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnRGlzY292ZXInOgogICAgICAgICAgICBpbWFnZVVybCA9IGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0FtZXJpY2FuIEV4cHJlc3MnOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdBbmRyb2lkIFBheSc6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0FwcGxlIFBheSc6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0JpdGNvaW4nOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdDYXNoJzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnQ2hlY2snOgogICAgICAgICAgICBpbWFnZVVybCA9ICBjZG5QYXRoICsgbmFtZS5yZXBsYWNlKC9bXFdfXSsvZywnJykudG9Mb3dlckNhc2UoKSArIHN0eWxlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdEaW5lcnMgQ2x1Yic6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0Rpc2NvdmVyJzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnRmluYW5jaW5nJzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnSW52b2ljZSc6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1BheVBhbCc6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1NhbXN1bmcgUGF5JzoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiVHJhdmVsZXIncyBDaGVjayI6CiAgICAgICAgICAgIGltYWdlVXJsID0gIGNkblBhdGggKyBuYW1lLnJlcGxhY2UoL1tcV19dKy9nLCcnKS50b0xvd2VyQ2FzZSgpICsgc3R5bGU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIlplbGxlIjoKICAgICAgICAgICAgaW1hZ2VVcmwgPSAgY2RuUGF0aCArIG5hbWUucmVwbGFjZSgvW1xXX10rL2csJycpLnRvTG93ZXJDYXNlKCkgKyBzdHlsZTsKICAgICAgICAgICAgYnJlYWsKICAgIH0KICAgIHJldHVybiBpbWFnZVVybAp9CgpmdW5jdGlvbiBlbWl0WWV4dFBob25lUmVuZGVyRXZlbnQocGhvbmUpIHsKICAgIHZhciB5ZXh0UGhvbmVSZW5kZXJFdmVudCA9IG5ldyBDdXN0b21FdmVudCgnWWV4dFBob25lQ2hhbmdlRXZlbnQnLCAKICAgICAgICB7IAogICAgICAgICAgICBkZXRhaWw6IHBob25lLCAKICAgICAgICAgICAgYnViYmxlczogdHJ1ZSwgCiAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUgCiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudCh5ZXh0UGhvbmVSZW5kZXJFdmVudCk7Cn0KCnZhciBpbml0WWV4dEVsZW1lbnRzID0gZnVuY3Rpb24oeWV4dERhdGEsd2lkZ2V0VHlwZSl7CiAgICBpZiAod2lkZ2V0VHlwZSA9PT0gJ2FkZHJlc3MnICYmIGRhdGEuY29uZmlnLmRyYXdNYXApIHsKICAgICAgICBkcmF3TWFwKHlleHREYXRhKTsKICAgIH0gZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0gJ3BheW1lbnRPcHRpb25zJyAmJiBkYXRhLmNvbmZpZy5zaG93UGF5bWVudHNBcyA9PT0gJ3BheW1lbnRJY29ucycpIHsKICAgICAgICBkaXNwbGF5SW1hZ2VMaXN0KHdpZGdldFR5cGUseWV4dERhdGEpOwogICAgfSBlbHNlIGlmICh3aWRnZXRUeXBlID09PSAncGhvbmUnICYmIGRhdGEuY29uZmlnLnBob25lU2hvd0FzID09PSAnbGlzdCcpIHsKICAgICAgICBkaXNwbGF5UGhvbmVMaXN0KHdpZGdldFR5cGUseWV4dERhdGEpOwogICAgLy8gY2hlY2sgZm9yIGFueSBsaXN0IHR5cGUKICAgIH0gZWxzZSBpZih3aWRnZXRUeXBlID09PSAncGhvbmUnICYmIGRhdGEuY29uZmlnLnBob25lU2hvd0FzID09PSAnYnV0dG9uJykgewogICAgICAgIHZhciBwaEZvcm1hdHRlZCA9IGZvcm1hdFBob25lQmVmb3JlUmVuZGVyKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbZGF0YS5jb25maWcucGhvbmVUeXBlXSxmdW5jdGlvbihwaG9uZSkgewogICAgICAgICAgICAkKGVsZW1lbnQpLmZpbmQoIi5kbUJ1dHRvbkxpbmsiKS5odG1sKCc8c3BhbiBjbGFzcz0idGV4dCI+JyArIHBob25lICsgJzwvc3Bhbj4nKTsgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGVtaXRZZXh0UGhvbmVSZW5kZXJFdmVudChwaG9uZSk7CiAgICAgICAgICAgIAogICAgICAgIH0pOwogICAgfSBlbHNlIGlmKHdpZGdldFR5cGUgPT09ICdwaG9uZScgJiYgZGF0YS5jb25maWcucGhvbmVTaG93QXMgPT09ICd0ZXh0JykgewogICAgICAgIHZhciBwaEZvcm1hdHRlZCA9IGZvcm1hdFBob25lQmVmb3JlUmVuZGVyKHlleHREYXRhLmVudGl0aWVzWzBdLmF0dHJpYnV0ZXNbZGF0YS5jb25maWcucGhvbmVUeXBlXSxmdW5jdGlvbihwaG9uZSkgewogICAgICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJy55ZXh0UGhvbmVUZXh0JykuaHRtbCgnPHNwYW4gY2xhc3M9InRleHQiPicgKyBwaG9uZSArICc8L3NwYW4+Jyk7ICAgCiAgICAgICAgICAgIAogICAgICAgICAgICBlbWl0WWV4dFBob25lUmVuZGVyRXZlbnQocGhvbmUpOwogICAgICAgICAgICAKICAgICAgICB9KTsKICAgIH0gZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0gJ3NlcnZpY2VzJyB8fCB3aWRnZXRUeXBlID09PSAnZ29vZ2xlQXR0cmlidXRlc0Zvcm1hdHRlZCcgfHwgd2lkZ2V0VHlwZSA9PT0gJ2xhbmd1YWdlcycgfHwgd2lkZ2V0VHlwZSA9PT0gJ3BheW1lbnRPcHRpb25zJyB8fCB3aWRnZXRUeXBlID09PSAna2V5d29yZHMnIHx8IHdpZGdldFR5cGUgPT09ICdwcm9kdWN0cycgfHwgd2lkZ2V0VHlwZSA9PT0gJ2Fzc29jaWF0aW9ucycgfHwgd2lkZ2V0VHlwZSA9PT0gJ2JyYW5kcycpIHsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyAKICAgICAgICAgICAgZGlzcGxheVRleHRkTGlzdCh3aWRnZXRUeXBlLHlleHREYXRhKQogICAgICAgIH0sMSk7CiAgICB9IGVsc2UgaWYod2lkZ2V0VHlwZSA9PT0gJ3NwZWNpYWx0aWVzJykgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGRpc3BsYXlTcGVjaWFsdGllcyh5ZXh0RGF0YSkKICAgICAgICB9LDEpCiAgICB9ZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0nc2VydmljZUFyZWEnKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgZGlzcGxheVNlcnZpY2VBcmVhKHdpZGdldFR5cGUseWV4dERhdGEsZGF0YS5jb25maWcuc2hvd1NlcnZpY2VBcmVhRmlyc3QpCiAgICAgICAgfSwxKQogICAgfSBlbHNlIGlmICh3aWRnZXRUeXBlID09PSdob3VycycgJiYgZGF0YS5jb25maWcuaG91cnNTaG93QXMgPT09ICdsaXN0JyAmJiBkYXRhLmNvbmZpZy5pc0xpc3QgPT0gZmFsc2UpIHsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkaXNwbGF5SG91cnMod2lkZ2V0VHlwZSx5ZXh0RGF0YSkKICAgICAgICB9LDEpCiAgICB9IGVsc2UgaWYgKHdpZGdldFR5cGUgPT09J2hvdXJzJyAmJiBkYXRhLmNvbmZpZy5ob3Vyc1Nob3dBcyA9PT0gJ29wZW5Ib3VycycpIHsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkaXNwbGF5T3BlbkhvdXJzKHdpZGdldFR5cGUseWV4dERhdGEpCiAgICAgICAgfSwxKQogICAgfSBlbHNlIGlmICh3aWRnZXRUeXBlID09PSAnc29jaWFsJykgewogICAgICAgIGRpc3BsYXlTb2NpYWxJY29ucyh3aWRnZXRUeXBlLHlleHREYXRhKTsKICAgIH0gZWxzZSBpZiAod2lkZ2V0VHlwZSA9PT0gJ2hvbGlkYXlIb3VycycpIHsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyAKICAgICAgICAgICAgZGlzcGxheUhvbGlkYXlIb3Vyc0xpc3Qod2lkZ2V0VHlwZSx5ZXh0RGF0YSkKICAgICAgICB9LDEpOwogICAgfSBlbHNlIGlmICh3aWRnZXRUeXBlID09PSAnaG91cnMnKSB7CiAgICAgICAgLy9oaWRlIGhvdXJzIGxpc3QgaWYgdG9nZ2xlIGVuYWJsZWQKICAgICAgICBpZihkYXRhLmNvbmZpZy5oaWRlSG91cnNMaXN0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICQoZWxlbWVudCkuZmluZCgnLnlleHRIb3VycycpLmNzcygnZGlzcGxheScsJ25vbmUnKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKHdpZGdldFR5cGUgPT09ICdkZXNjcmlwdGlvbicgfHwgd2lkZ2V0VHlwZSA9PT0gJ3llYXJFc3RhYmxpc2hlZCcgfHwgd2lkZ2V0VHlwZSA9PT0gJ2VtYWlsJyB8fCB3aWRnZXRUeXBlID09PSAnbmFtZScpIHsKICAgICAgICAvLyBjaGVjawogICAgICAgIGhpZGVJZkVtcHR5KHdpZGdldFR5cGUseWV4dERhdGEpCiAgICB9CiAgICAvL3JlbW92ZSBlcnJvciBpZiBzY3JpcHQgbm90IGVudGVyZWQgY29ycmVjdGx5LgogICAgJChlbGVtZW50KS5maW5kKCcud3JvbmdTY3JpcHRFcnJvcicpLnJlbW92ZUNsYXNzKCdoYXNFcnJvcicpOwogICAgCn0KCmZ1bmN0aW9uIGhpZGVJZkVtcHR5KHR5cGUseWV4dERhdGEpIHsKICAgIGlmKCF5ZXh0RGF0YS5lbnRpdGllc1swXS5hdHRyaWJ1dGVzW3R5cGVdKSB7CiAgICAgICAgaWYoZGF0YS5pbkVkaXRvcikgewogICAgICAgICAgICAkKGVsZW1lbnQpLmh0bWwoZW1wdHlMaXN0UGxhY2VIb2xkZXIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICQoZWxlbWVudCkuY3NzKCdkaXNwbGF5Jywnbm9uZScpOyAgICAKICAgICAgICB9CiAgICAgICAgCiAgICB9Cn0KCi8vIFRPRE8gQ0hBTkdFIFRPIEVWRU5UIENBTEwgQkFDSwp2YXIgc3RhcnRJbnRlcnZhbFRvV2FpdEFuZExvYWRXaWRnZXRzID0gZnVuY3Rpb24od2lkZ2V0VHlwZSkgewogICAgLy9zdGFydCBpbnRlcnZhbCBmb3IgdGhpcyBzcGVjaWZpYyB3aWRnZXQKICAgIHZhciBpbnRlcnZhbENoZWNrWWV4dExvYWRlZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgaWYgKHdpbmRvdy5feWV4dERhdGEpIHsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbENoZWNrWWV4dExvYWRlZCk7CiAgICAgICAgICAgIGluaXRZZXh0RWxlbWVudHMod2luZG93Ll95ZXh0RGF0YSx3aWRnZXRUeXBlKTsKICAgICAgICB9IAogICAgfSw1MCkKfQoKCi8qIGluaXRpYWxpemF0aW9uICovCmlmKGRhdGEuaW5FZGl0b3IpewogICAgd2luZG93LnJlZnJlc2hZZXh0ICYmIHdpbmRvdy5yZWZyZXNoWWV4dCgpOwogICAgCiAgICAKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgaWYoIXdpbmRvdy55ZXh0SW5pdGlhbGl6ZWQpewogICAgICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJy5taXNzaW5nWWV4dFdpZGdldCcpLmFkZENsYXNzKCdzaG93Jyk7IAogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICQoZWxlbWVudCkuZmluZCgnLm1pc3NpbmdZZXh0V2lkZ2V0JykucmVtb3ZlQ2xhc3MoJ3Nob3cnKTsgCiAgICAgICAgfQogICAgfSk7CiAgICAKfSBlbHNlIHsKICAgIGRtQVBJLnJ1bk9uUmVhZHkoJ3lleHQnICwgZnVuY3Rpb24oKXsKICAgICAgICBsb2FkWWV4dCgpOwogICB9KTsKICAgIC8vIEJlZm9yZSBuYXZpZ2F0aW5nIHdpdGggQWpheCwgd2Ugc2V0IHRoZSB5ZXh0IGluaXRpYWxpemVkIHRvIGJlIGZhbHNlIHNvIGl0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYWdhaW4gYWZ0ZXIgdGhlIGFqYXggbmF2aWdhdGlvbgogICAgZG1BUEkucnVuQmVmb3JlQWpheE5hdmlnYXRpb24oJ3lleHQnLCBmdW5jdGlvbigpewogICAgICAgIHdpbmRvdy55ZXh0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgIH0pOwp9","css":".editorOnlyInfo, .multipleYextError, .wrongScriptError{\n display: none;\n max-width:350px;\n background: #fff;\n text-align: left;\n padding: 10px;\n line-height: normal;\n font-size: 14px;\n}\n\n.editorOnlyInfo.inEditor{\n display: block;\n color: #3ac280;\n}\n\n.multipleYextError.hasError, .wrongScriptError.hasError{\n display: block;\n color: red;\n}\n\n.widget-7b6cfb .dmWidget.yextButton {\n width: 100%;\n}\n\n#dm .widget-7b6cfb {\n line-height: normal!important;\n}\n\na.getDirections {\n display: block;\n}\n\n.yextButton.show {\n display:inline-block;\n}\n\n.yextButton .text {\n display:table-cell;\n vertical-align:middle;\n}\n\n.yextMap{\n height:100%;\n width:100%;\n overflow: hidden;\n z-index: 0;\n text-align: left;\n margin: 0 auto;\n}\n\n.yextHours{\n text-align: left;\n width:300px;\n}\n\n.yextHours .row {\n display:flex;\n}\n.yextHours .row .left, .yextHours .row .right {\n flex:1;\n align-self: center;\n}\n.yextAdditionalHoursText {\n display:inline-block;\n}\n\n.yextAddress{\n text-align: left;\n}\n\n#paymentOptionsImages img {\n display: inline-block;\n width: 60px;\n margin-right: 5px;\n margin-bottom: 5px;\n}\n#socialIcons a {\n display: inline-block;\n width: 50px;\n margin-right: 5px;\n margin-bottom: 5px;\n}\n.bullet {\n list-style-type:disc; \n}\n.no-list {\n list-style-type:none;\n}\n.circle {\n list-style-type:circle; \n}\n.square {\n list-style-type:square; \n}\n.decimal {\n list-style-type:decimal; \n}\n.bold {\n font-weight: bold;\n}\n#socialIcons {\n display: flex;\n}\n#socialIcons.left {\n justify-content: flex-start;\n}\n#socialIcons.right {\n justify-content: flex-end;\n}\n#socialIcons.center {\n justify-content: center;\n}\nul[id*=\"List\"] {\n margin:0;\n}\nh3[class*=\"Header\"] {\n margin: 10px 0;\n}\n.yextEmail {\n display:block;\n}\n.picons-left {\n text-align:left;\n}\n.picons-right {\n text-align:right;\n}\n.picons-center {\n text-align:center;\n}\n\n.openedStatus {\n color: #3ac280;\n}\n\n.allDayStatus {\n color: #3ac280;\n}\n\n.closedStatus {\n color: #FF0000;\n}\n\n.soonStatus {\n color: #FF7322;\n}\n\n\n","strings":{}},{"widgetId":"4297c64e3aa349d4ac38764dde32ebef","version":68,"js":"bGV0IEhhc09wZW5lZE1lbnUgPSBmYWxzZTsNCg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICBkaXNwbGF5VHlwZSgpOyANCn0pOw0KDQpmdW5jdGlvbiBkaXNwbGF5VHlwZSgpIHsNCiAgICBpZihpc01vYmlsZSgpKSB7DQogICAgICAgIGRpc3BsYXlNb2JpbGUoKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBkaXNwbGF5RGVza3RvcCgpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gZGlzcGxheU1vYmlsZSgpIHsNCiAgICB2YXIgbWFzdGVyRmFiRWxlID0gJChlbGVtZW50KS5maW5kKCcjbWFzdGVyZmFiJyk7DQogICAgJCgnI21haW4tY29udGFpbmVyJykuZW1wdHkoKS5hcHBlbmQoZ2V0U3ZnKGRhdGEuY29uZmlnLk1vYmlsZU1haW4pKTsNCiAgICANCiAgICAkKG1hc3RlckZhYkVsZSkuYXR0cignY2xhc3MnLCAnZmFiIG1hc3Rlci1tb2JpbGUnKTsvLyBhZGQgbW9iaWxlIGNsYXNzIGZvciBjdXN0b20gc3R5bGUNCiAgICAkKG1hc3RlckZhYkVsZSkuY3NzKCdkaXNwbGF5JywgJ2ZsZXgnKTsgLy9zaW5jZSBlbGVtZW50IGlzIGhpZGRlbiBieSBkZWZhdWx0LCBzaG93IGluc3RlYWQNCiAgICAvLyBhZGQgaXRlbXMgd2l0aCBvciB3aXRob3V0IG92ZXJsYXkgYW5kIGxhYmVsIHRleHQNCiAgICBpZihkYXRhLmNvbmZpZy5Nb2JpbGVMYXlvdXQgPT09ICdGdWxsJykgICAgICQoJy5tb2JpbGUtYmcnKS5hZnRlcihnZXRJdGVtcygnbGVmdFRleHQnKSk7DQogICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcubW9iaWxlLWJnJykuYWZ0ZXIoZ2V0SXRlbXMoKSk7DQogICAgDQogICAgbW9iaWxlVGhlbWUoKTsgIC8vIGFkZCBsaWdodCBvciBkYXJrIHRoZW1lDQogICAgYWRkTGlzdGVuZXIoKTsNCiAgICAvLyBhZGQgZm9jdXMgYW5pbWF0aW9uDQogICAgaWYoZGF0YS5jb25maWcuRm9jdXNBbmkpIGFuaW1hdGVGb2N1cygpOw0KfQ0KZnVuY3Rpb24gZGlzcGxheURlc2t0b3AoKSB7DQogICAgdmFyIG1hc3RlckZhYkVsZSA9ICQoZWxlbWVudCkuZmluZCgnI21hc3RlcmZhYicpOw0KICAgICQobWFzdGVyRmFiRWxlKS5jc3MoJ2Rpc3BsYXknLCAnZmxleCcpOyAvL3NpbmNlIGVsZW1lbnQgaXMgaGlkZGVuIGJ5IGRlZmF1bHQsIHNob3cgaW5zdGVhZA0KICAgIGlmKGRhdGEuY29uZmlnLkRlc2t0b3BMYXlvdXQgPT09ICdCYXInKSB7DQogICAgICAgICQoJyNtYWluLWNvbnRhaW5lcicpLmVtcHR5KCkuYXBwZW5kKGdldFN2ZyhkYXRhLmNvbmZpZy5EZXNrTWFpbikpOw0KICAgICAgICAkKG1hc3RlckZhYkVsZSkuYXBwZW5kKGdldEl0ZW1zKCdyaWdodFRleHQnKSk7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICAkKCcjZmxvYXQtY29udGFpbmVyJykuZW1wdHkoKS5hcHBlbmQoZ2V0SXRlbXMoJ3JpZ2h0VGV4dCcsIHRydWUpKTsNCiAgICB9DQogICAgZGVza3RvcFR5cGUoKTsNCiAgICBhZGRMaXN0ZW5lcigpOw0KICAgIC8vIGFkZCBmb2N1cyBhbmltYXRpb24NCiAgICBpZihkYXRhLmNvbmZpZy5Gb2N1c0FuaSkgYW5pbWF0ZUZvY3VzKCk7DQp9DQovLyBoYW5kbGVzIHN0eWxlIGNoYW5nZXMgZm9yIGRlc2t0b3AgdHlwZXMNCmZ1bmN0aW9uIGRlc2t0b3BUeXBlKCkgew0KICAgICQoJyNtYXN0ZXJmYWInKS5hdHRyKCdjbGFzcycsICdmYWIgbWFzdGVyLWRlc2t0b3AnKTsgLy8gYWRkIGRlc2t0b3AgY2xhc3MgZm9yIHN0eWxpbmcNCiAgICAkKCcuaWNvbi1jb250YWluZXInKS5hZGRDbGFzcygnZGVza3RvcCcpOw0KICAgIGlmKGRhdGEuY29uZmlnLkRlc2t0b3BMYXlvdXQgPT09ICdCYXInKSB7DQogICAgICAgICQoJy5tZW51LWxpbmsnKS5hZGRDbGFzcygnZGVzay1iYXInKTsgICAgICAgLy8gYWRkIGNsYXNzIGZvciBmaXhlZCBiYXIgdGV4dA0KICAgICAgICAkKCcuY2hpbGQnKS5hdHRyKCdjbGFzcycsICdmYWIgY2hpbGQgY2hpbGQtZGVza3RvcC1iYXInKTsNCiAgICAgICAgDQogICAgICAgIGNvbnN0IG1hc3RlckxhYmVsID0gJzxzcGFuIGlkPSJtYXN0ZXItbGFiZWwiPicrZGF0YS5jb25maWcuTWFpbkxhYmVsKyc8L3NwYW4+JzsNCiAgICAgICAgJCgnI21hc3Rlci1sYWJlbCcpLnJlbW92ZSgpOw0KICAgICAgICAkKCcjbWFzdGVyZmFiJykuYXBwZW5kKG1hc3RlckxhYmVsKTsNCiAgICAgICAgDQogICAgICAgICQoJyNtYXN0ZXJmYWInKS5hZGRDbGFzcygnbWFzdGVyLWJhcicpOw0KICAgIH0gZWxzZSBpZihkYXRhLmNvbmZpZy5EZXNrdG9wTGF5b3V0ID09PSAnRmxvYXQnKSB7DQogICAgICAgICQoJyNtYXN0ZXJmYWInKS5oaWRlKCk7DQogICAgfQ0KfQ0KLy8gc3R5bGVzIGxpZ2h0IGFuZCBkYXJrIG1vYmlsZSB0aGVtZXMNCmZ1bmN0aW9uIG1vYmlsZVRoZW1lKCkgew0KICAgICQoJy5jaGlsZCcpLmF0dHIoJ2NsYXNzJywgJ2ZhYiBjaGlsZCBjaGlsZC1tb2JpbGUnKTsNCiAgICBpZihkYXRhLmNvbmZpZy5Nb2JpbGVUaGVtZSA9PT0gJ0xpZ2h0Jykgew0KICAgICAgICAkKCcub3ZlcmxheSwgLmNoaWxkLCAuc29jaWFsLWljb24sIC5pY29uLWNvbnRhaW5lciwgLm1vYmlsZS1iZywgc29jaWFsLWJnLCAubWVudS1saW5rJykuYWRkQ2xhc3MoJ21vYmlsZSBsaWdodCcpOw0KICAgIH0NCiAgICBlbHNlIGlmKGRhdGEuY29uZmlnLk1vYmlsZVRoZW1lID09PSAnRGFyaycpIHsNCiAgICAgICAgJCgnLm92ZXJsYXksIC5jaGlsZCwgLnNvY2lhbC1pY29uLCAuaWNvbi1jb250YWluZXIsIC5tb2JpbGUtYmcsIHNvY2lhbC1iZywgLm1lbnUtbGluaycpLmFkZENsYXNzKCdtb2JpbGUgZGFyaycpOw0KICAgIH0NCn0NCi8vIGFkZHMgY2xpY2sgb3IgaG92ZXIgbGlzdGVuZXJzDQpmdW5jdGlvbiBhZGRMaXN0ZW5lcigpIHsNCiAgICAvLyBhZGQgbGlzdGVuZXIgYW5kIGFuaW1hdGlvbiBmb3IgZmxvYXRpbmcgaWNvbnMgaG92ZXIgYW5pbWF0aW9uDQogICAgaWYoIWlzTW9iaWxlKCkgJiYgZGF0YS5jb25maWcuRGVza3RvcExheW91dCA9PT0gJ0Zsb2F0JykgYW5pbWF0ZUZsb2F0KCcuZmxvYXQtY29udGFpbmVyJywgMzAwKTsNCiAgICAvLyBjbGljayBoYW5kbGVycyBmb3IgZGVza3RvcCBiYXIgYW5kIG1vYmlsZSBvcHRpb25zDQogICAgZWxzZSB7DQogICAgICAgICQoIiNjb252ZXJzaW9uLW1lbnUtY29udGFpbmVyIikub2ZmKCdjbGljaycsICcuZmFiLC5vdmVybGF5Jyk7DQogICAgICAgICQoIiNjb252ZXJzaW9uLW1lbnUtY29udGFpbmVyIikub24oJ2NsaWNrJywgJy5mYWIsLm92ZXJsYXknLCBmdW5jdGlvbigpew0KICAgICAgICAgICAgSGFzT3BlbmVkTWVudSA9IHRydWU7DQogICAgICAgICAgICAkKCcuYW5pbWF0aW9uJykucmVtb3ZlKCk7ICAgLy8gcmVtb3ZlIGFueSBhbmltYXRpb25zIHdlIGhhdmUNCiAgICAgICAgICAgIGlmKGlzTW9iaWxlKCkpIHsNCiAgICAgICAgICAgICAgICBhbmltYXRlSWNvbnMoJ292ZXJsYXknKTsNCiAgICAgICAgICAgICAgICBkYXRhLmNvbmZpZy5Nb2JpbGVMYXlvdXQgPT09ICdGdWxsJz8gYW5pbWF0ZUJnKCcubW9iaWxlLWJnJykgOiAnJzsNCiAgICAgICAgICAgIH0gZWxzZSB7ICAgIC8vIGJhciBkZXNrdG9wDQogICAgICAgICAgICAgICAgYW5pbWF0ZUljb25zKCdoZWxwVGV4dCcpOw0KICAgICAgICAgICAgICAgIGFuaW1hdGVCZygnLmRlc2t0b3AtYmcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfQ0KfQ0KDQovLyBsaXN0ZW5zIGZvciBzaGFyZSBidXR0b24gY2xpY2sgYW5kIHRyaWdnZXJzIHJlc3BvbnNlDQpmdW5jdGlvbiBhZGRTaGFyZUxpc3RlbmVyKCkgew0KICAgICQoIiNjb252ZXJzaW9uLW1lbnUtY29udGFpbmVyIikub2ZmKCdjbGljaycsICcuc2hhcmUnKTsNCiAgICAkKCIuc2hhcmUiKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgICAgICAgY29uc29sZS5sb2coJ3NoYXJlIGNsaWNrZWQgbW9kYWwgc2hvdWxkIG9wZW4nKTsNCiAgICAgICAgTWljcm9Nb2RhbC5zaG93KCdzb2NpYWwtbW9kYWwtbWVudScpOyANCiAgICB9KTsNCn0NCg0KLy8NCi8vIEFOSU1BVElPTlMNCi8vDQpmdW5jdGlvbiBhbmltYXRlRm9jdXMoKSB7DQogICAgJCgnLmFuaW1hdGlvbicpLnJlbW92ZSgpOyAgIC8vaW4gY2FzZSBhbHJlYWR5IGluIERPTQ0KICAgIGlmKCFIYXNPcGVuZWRNZW51KSB7DQogICAgICAgIGlmKGlzTW9iaWxlKCkpIHsNCiAgICAgICAgICAgIGNvbnN0IHB1bHNlID0gJzxkaXYgY2xhc3M9InB1bHNlMiBhbmltYXRpb24iLz48ZGl2IGNsYXNzPSJwdWxzZSBhbmltYXRpb24iLz4nOw0KICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAkKCcjbWFzdGVyZmFiJykuYXBwZW5kKHB1bHNlKTsNCiAgICAgICAgICAgIH0sICtkYXRhLmNvbmZpZy5Gb2N1c0RlbGF5KTsNCiAgICAgICAgfQ0KICAgICAgICAvLyBkZXNrdG9wDQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZGF0YS5jb25maWcuRGVza3RvcExheW91dCA9PT0gJ0Zsb2F0Jz8NCiAgICAgICAgICAgICAgICBhbmltYXRlRmxvYXRGb2N1cygpIDogYW5pbWF0ZUJhckZvY3VzKCk7DQogICAgICAgIH0NCiAgICB9DQp9DQpmdW5jdGlvbiBhbmltYXRlRmxvYXRGb2N1cygpIHsNCiAgICBpZigkKCcuZm9jdXMnKVswXSkgew0KICAgICAgICBjb25zdCBpZCA9ICQoJy5mb2N1cycpWzBdLmlkOw0KICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgJCgnIycraWQpLmNzcygnbWF4LXdpZHRoJywgJycpOw0KICAgICAgICAgICAgJCgnIycraWQpLmFkZENsYXNzKCdzbGlkZS1wdWxzZScpOw0KICAgICAgICB9LCArZGF0YS5jb25maWcuRm9jdXNEZWxheSk7DQogICAgfQ0KfQ0KLy8gb3BlbnMgZml4ZWQgYmFyIG9uIGRlc2t0b3AgYWZ0ZXIgc2V0IGludGVydmFsDQpmdW5jdGlvbiBhbmltYXRlQmFyRm9jdXMoKSB7DQogICAgaWYoISQoIi5kZXNrdG9wLWJnIikuaXMoIjp2aXNpYmxlIikpIHsNCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIGFuaW1hdGVJY29ucygnaGVscFRleHQnKTsNCiAgICAgICAgICAgIGFuaW1hdGVCZygnLmRlc2t0b3AtYmcnKTsNCiAgICAgICAgfSwgK2RhdGEuY29uZmlnLkZvY3VzRGVsYXkpOw0KICAgIH0NCn0NCi8vIGFkZHMgaG92ZXIgbGlzdGVuZXJzIGFuZCBhbmltYXRlcyBmbG9hdGluZyBpY29ucyBvbiBkZXNrdG9wDQpmdW5jdGlvbiBhbmltYXRlRmxvYXQoc2VsZWN0b3IsIGR1cikgew0KICAgICQoIiNmbG9hdC1jb250YWluZXIiKS5vZmYoIm1vdXNlZW50ZXIiLCBzZWxlY3Rvcik7DQogICAgJCgiI2Zsb2F0LWNvbnRhaW5lciIpLm9uKCJtb3VzZWVudGVyIiwgc2VsZWN0b3IsIGZ1bmN0aW9uKGV2ZW50KSB7DQogICAgICAgIGNvbnNvbGUubG9nKCdmbG9hdCBtb3VzZSBlbnRlcicpOw0KICAgICAgICBIYXNPcGVuZWRNZW51ID0gdHJ1ZTsNCiAgICAgICAgdmFyIGlkID0gJCh0aGlzKVswXS5pZDsNCiAgICAgICAgLy8gY2FuY2VsIGFuaW1hdGlvbiBvbiBob3Zlcg0KICAgICAgICBkYXRhLmNvbmZpZy5Gb2N1c0FuaT8gJCgnIycraWQpLnJlbW92ZUNsYXNzKCdzbGlkZS1wdWxzZScpIDogMDsNCiAgICAgICAgDQogICAgICAgICQoJyN0ZXh0LScraWQpLmZhZGVJbigpOw0KICAgICAgICAkKCcjZmxvYXQtdGV4dC0nK2lkKS5mYWRlSW4oZHVyKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtZmxleCIpOw0KICAgICAgICAkKCcjJytpZCkuc3RvcCgpLmFuaW1hdGUoew0KICAgICAgICAgICAgIm1heC13aWR0aCI6ICIyMDBweCIsDQogICAgICAgIH0sIGR1cik7DQogICAgfSk7DQogICAgDQogICAgJCgiI2Zsb2F0LWNvbnRhaW5lciIpLm9mZigibW91c2VsZWF2ZSIsIHNlbGVjdG9yKTsNCiAgICAkKCIjZmxvYXQtY29udGFpbmVyIikub24oIm1vdXNlbGVhdmUiLCBzZWxlY3RvciwgZnVuY3Rpb24oZXZlbnQpIHsNCiAgICAgICAgY29uc29sZS5sb2coJ2Zsb2F0IG1vdXNlIGxlYXZlJyk7DQogICAgICAgIHZhciBpZCA9ICQodGhpcylbMF0uaWQ7DQogICAgICAgICQoJyN0ZXh0LScraWQpLmZhZGVPdXQoZHVyKTsNCiAgICAgICAgJCgnIycraWQpLnN0b3AoKS5hbmltYXRlKHsNCiAgICAgICAgICAgICJtYXgtd2lkdGgiOiAiNDIuNjY2cHgiLA0KICAgICAgICB9LCBkdXIpOw0KICAgIH0pOw0KfQ0KLy8gYW5pbWF0ZXMgaWNvbnMgc2xpZGUgdXAgYW5kIHRyYW5zcGFyZW50IG92ZXJsYXkoZGVwZW5kaW5nIG9uIHNob3dUeXBlKQ0KZnVuY3Rpb24gYW5pbWF0ZUljb25zKHNob3dUeXBlKSB7DQogICAgaWYoJCgiLm92ZXJsYXkiKS5pcygiOnZpc2libGUiKSB8fCAkKCIuZGVza3RvcC1iZyIpLmlzKCI6dmlzaWJsZSIpKSB7DQogICAgICAgIGlmKHNob3dUeXBlID09PSAnb3ZlcmxheScpICAgICAgICAgICQoJy5vdmVybGF5JykuZmFkZU91dCgxMjUpOw0KICAgICAgICBlbHNlIGlmKHNob3dUeXBlID09PSAnaGVscFRleHQnKSAgICAkKCcjaGVscC10ZXh0JykuZmFkZU91dCgxMjUpOw0KICAgICAgICANCiAgICAgICAgLy8gYWRkIHBsdXMgaWNvbiBiYWNrDQogICAgICAgICQoJyNtYWluLWNvbnRhaW5lcicpLmVtcHR5KCkuYXBwZW5kKGdldFN2ZyhkYXRhLmNvbmZpZy5Nb2JpbGVNYWluKSk7DQoNCiAgICAgICAgJCgnLmZhYi5jaGlsZCcpLnN0b3AoKS5hbmltYXRlKHsNCiAgICAgICAgICAgIGJvdHRvbSAgOiAkKCcjbWFzdGVyZmFiJykuY3NzKCdib3R0b20nKSwNCiAgICAgICAgICAgIG9wYWNpdHkgOiAwDQogICAgICAgIH0sIDEyNSwgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsNCiAgICAgICAgfSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgaWYoc2hvd1R5cGUgPT09ICdvdmVybGF5JykgICAgICAgICAgJCgnLm92ZXJsYXknKS5mYWRlSW4oMTI1KTsNCiAgICAgICAgZWxzZSBpZihzaG93VHlwZSA9PT0gJ2hlbHBUZXh0JykgICAgJCgnI2hlbHAtdGV4dCcpLmZhZGVJbigxMjUpOw0KICAgICAgICANCiAgICAgICAgLy8gYWRkIGNsb3NlIGljb24gb24gbW9iaWxlIG9ubHkNCiAgICAgICAgaWYoaXNNb2JpbGUoKSkgJCgnI21haW4tY29udGFpbmVyJykuZW1wdHkoKS5hcHBlbmQoZ2V0U3ZnKCdjbG9zZScpKTsNCiAgICAgICAgJCgiLmZhYi5jaGlsZCIpLmVhY2goZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICQodGhpcykuc3RvcCgpLnNob3coKS5hbmltYXRlKHsNCiAgICAgICAgICAgICAgICBib3R0b20gIDogKHBhcnNlSW50KCQoIiNtYXN0ZXJmYWIiKS5jc3MoImJvdHRvbSIpKSArIHBhcnNlSW50KCQoIiNtYXN0ZXJmYWIiKS5vdXRlckhlaWdodCgpICsgMjApICsgNTYgKiAkKHRoaXMpLmRhdGEoInN1Yml0ZW0iKSAtICQoIi5mYWIuY2hpbGQiKS5vdXRlckhlaWdodCgpKSArICJweCIsDQogICAgICAgICAgICAgICAgb3BhY2l0eSA6IDENCiAgICAgICAgICAgIH0sIDEyNSk7DQogICAgICAgIH0pOw0KICAgIH0NCn0NCi8vIGFkZHMgb3ZlcmxheSB0aGF0IHNsaWRlcyB1cA0KZnVuY3Rpb24gYW5pbWF0ZUJnKHNlbGVjdG9yKSB7DQogICAgaWYoJChzZWxlY3RvcikuaXMoIjp2aXNpYmxlIikpIHsNCiAgICAgICAgJCgnI21haW4tY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTsNCiAgICAgICAgJCgiI21hc3RlcmZhYi5mYWIubWFzdGVyLW1vYmlsZSIpLnJlbW92ZUNsYXNzKCdtb2JpbGUtb3BlbicpDQogICAgICAgIHZhciBtYWluSWNvbiA9IGRhdGEuY29uZmlnLkRlc2tNYWluDQogICAgICAgIC8vIHJldmVydCB0byBkZWZhdWx0IG1haW4gaWNvbiBzdHlsZQ0KICAgICAgICBpZihpc01vYmlsZSgpKSB7DQogICAgICAgICAgICBtYWluSWNvbiA9IGRhdGEuY29uZmlnLk1vYmlsZU1haW47DQogICAgICAgICAgICAkKCcjbWFzdGVyZmFiJykuY3NzKHsnYmFja2dyb3VuZCc6ICcnLCAnYm94LXNoYWRvdyc6ICcnfSk7ICAvLyByZXN0b3JlIGRlZmF1bHQNCiAgICAgICAgfQ0KICAgICAgICAkKCcjbWFpbi1jb250YWluZXInKS5lbXB0eSgpLmFwcGVuZChnZXRTdmcobWFpbkljb24pKTsNCiAgICAgICAgDQogICAgICAgICQoJy5tZW51LWxpbmssIC5jaGlsZCcpLmhpZGUoKTsNCiAgICAgICAgLy8gc2xpZGUgZG93biB0byBjbG9lcw0KICAgICAgICAkKHNlbGVjdG9yKS5zdG9wKCkuYW5pbWF0ZSh7DQogICAgICAgICAgICBoZWlnaHQgIDogMCwNCiAgICAgICAgICAgIG9wYWNpdHkgOiAwDQogICAgICAgIH0sIDEyNSwgZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICQodGhpcykuaGlkZSgpOw0KICAgICAgICB9KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkKCcjbWFpbi1jb250YWluZXInKS5hZGRDbGFzcygnb3BlbicpOw0KICAgICAgICAkKCIjbWFzdGVyZmFiLmZhYi5tYXN0ZXItbW9iaWxlIikuYWRkQ2xhc3MoJ21vYmlsZS1vcGVuJykNCiAgICAgICAgdmFyIHRvcEFyZWEgPSAxMDA7DQogICAgICAgIGlmKGlzTW9iaWxlKCkpIHsNCiAgICAgICAgICAgICQoJyNtYXN0ZXJmYWInKS5jc3MoeydiYWNrZ3JvdW5kJzogJ25vbmUnLCAnYm94LXNoYWRvdyc6ICdub25lJ30pOyAgLy8gbWFrZSBpY29uIGZsYXQNCiAgICAgICAgICAgICQoJyNtYWluLWNvbnRhaW5lcicpLmVtcHR5KCkuYXBwZW5kKGdldFN2ZygnY2xvc2UnKSk7ICAgLy8gYWRkIHggaWNvbg0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYoZGF0YS5jb25maWcuRGVza3RvcExheW91dCA9PT0gJ0JhcicpIHsNCiAgICAgICAgICAgIC8vIGhhY2sgdG8gZ2V0IGhlaWdodCBvZiBiYXIgaGVscCB0ZXh0IGJlZm9yZSBpdCdzIHZpc2libGUNCiAgICAgICAgICAgICQoc2VsZWN0b3IpLmNzcyh7J3Bvc2l0aW9uJzonYWJzb2x1dGUnLCd2aXNpYmlsaXR5JzonaGlkZGVuJywgJ2Rpc3BsYXknOidibG9jayd9KTsNCiAgICAgICAgICAgIHRvcEFyZWEgPSAkKCIjaGVscC10ZXh0IikuaGVpZ2h0KCk/ICQoIiNoZWxwLXRleHQiKS5oZWlnaHQoKSArIDYwIDogNDA7DQogICAgICAgICAgICAkKHNlbGVjdG9yKS5yZW1vdmVBdHRyKCdzdHlsZScpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBzbGlkZSB1cCB0byBvcGVuDQogICAgICAgICQoc2VsZWN0b3IpLnN0b3AoKS5zaG93KCkuYW5pbWF0ZSh7DQogICAgICAgICAgICBoZWlnaHQgIDogKCgoZGF0YS5jb25maWcuSWNvbkxpc3QubGVuZ3RoKzEpICogNTYpICsgdG9wQXJlYSkgKyAicHgiLA0KICAgICAgICAgICAgb3BhY2l0eSA6IDENCiAgICAgICAgfSwxMjUsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgJCgnLm1lbnUtbGluaycpLmZhZGVJbigxMjUpOw0KICAgICAgICAgICAgJChzZWxlY3RvcikuY3NzKCJkaXNwbGF5IiwiZmxleCIpDQogICAgICAgIH0pOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gZ2V0SXRlbXModHlwZSwgZmxvYXQpIHsNCiAgICAkKCcuY2hpbGQnKS5yZW1vdmUoKTsgICAvLyByZW1vdmUgYW55IGl0ZW1zIGFscmVhZHkgaW4gRE9NDQogICAgdmFyIGh0bWwgPSAnJywgbGFiZWwgPSAnJywgaWNvbiA9ICcnLCB0ZXh0ID0gJyc7DQogICAgdmFyIGl0ZW1zID0gZmxvYXQ/IGRhdGEuY29uZmlnLkljb25MaXN0IDogZGF0YS5jb25maWcuSWNvbkxpc3QucmV2ZXJzZSgpOw0KICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHsNCiAgICAgICAgaWYoaXRlbS5zaG93b25tb2JpbGU9PXRydWUgJiYgZGF0YS5kZXZpY2UgPT09ICdtb2JpbGUnKXsNCiAgICAgICAgaW5kZXggPSBpbmRleCsxOw0KICAgICAgIGlmKHR5cGUgPT09ICdyaWdodFRleHQnKXsgDQogICAgICAgICAgIGxhYmVsID0gJzxzcGFuIGNsYXNzPSJyaWdodC10ZXh0Ij4nICsgaXRlbS5MYWJlbCArICc8L3NwYW4+JzsNCiAgICAgICAgfQ0KICAgICAgICBpZih0eXBlID09PSAnbGVmdFRleHQnKSB7DQogICAgICAgICAgICBsYWJlbCA9ICc8c3BhbiBjbGFzcz0ibGVmdC10ZXh0Ij4nICsgaXRlbS5MYWJlbCArICc8L3NwYW4+JzsNCiAgICAgICAgfQ0KICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIGljb24gPSAnPHNwYW4gY2xhc3M9Imljb24tY29udGFpbmVyIj4nK2dldEl0ZW1JY29uKGl0ZW0pKyc8L3NwYW4+JzsNCiAgICAgICAgICAgIGh0bWwgKz0gDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZhYiBjaGlsZCIgaWQ9ImNoaWxkLScraW5kZXgrJyIgZGF0YS1zdWJpdGVtPSInK2luZGV4KyciPiBcDQogICAgICAgICAgICAgICAgICAgICcrZ2V0SXRlbUFjdGlvbihpdGVtLCBpY29uK2xhYmVsKSsnIFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nOw0KICAgICAgICANCiAgICAgICAgaWYoaXRlbS5BY3Rpb24gPT09ICdTaGFyZScpIHsNCiAgICAgICAgICAgICQuZ2V0U2NyaXB0KCdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21pY3JvbW9kYWwvZGlzdC9taWNyb21vZGFsLm1pbi5qcycsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIE1pY3JvTW9kYWwuaW5pdCgpOw0KICAgICAgICAgICAgICAgICQoJy5zaGFyZS1jb250YWluZXInKS5odG1sKGdldFNvY2lhbEl0ZW1zKGl0ZW0pKTsgICAvLyBhZGQgc29jaWFsIGljb25zIHRvIG1vZGFsDQogICAgICAgICAgICAgICAgYWRkU2hhcmVMaXN0ZW5lcigpOyAgIC8vIGlmIHNvY2lhbCBzaGFyaW5nIGVuYWJsZWQgYWRkIGNsaWNrIGhhbmRsZXINCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGVsc2UgaWYoaXRlbS5zaG93b25kZXNrdG9wPT10cnVlICYmIChkYXRhLmRldmljZSA9PT0gJ2Rlc2t0b3AnIHx8IGRhdGEuZGV2aWNlID09PSAndGFibGV0JykgKXsNCiAgICAgICAgICAgaWYodHlwZSA9PT0gJ3JpZ2h0VGV4dCcpeyANCiAgICAgICAgICAgbGFiZWwgPSAnPHNwYW4gY2xhc3M9InJpZ2h0LXRleHQiPicgKyBpdGVtLkxhYmVsICsgJzwvc3Bhbj4nOw0KICAgICAgICB9DQogICAgICAgIGlmKHR5cGUgPT09ICdsZWZ0VGV4dCcpIHsNCiAgICAgICAgICAgIGxhYmVsID0gJzxzcGFuIGNsYXNzPSJsZWZ0LXRleHQiPicgKyBpdGVtLkxhYmVsICsgJzwvc3Bhbj4nOw0KICAgICAgICB9DQogICAgICAgIGlmKCFmbG9hdCkgew0KICAgICAgICAgICAgaWNvbiA9ICc8c3BhbiBjbGFzcz0iaWNvbi1jb250YWluZXIiPicrZ2V0SXRlbUljb24oaXRlbSkrJzwvc3Bhbj4nOw0KICAgICAgICAgICAgaHRtbCArPSANCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmFiIGNoaWxkIiBpZD0iY2hpbGQtJytpbmRleCsnIiBkYXRhLXN1Yml0ZW09IicraW5kZXgrJyI+IFwNCiAgICAgICAgICAgICAgICAgICAgJytnZXRJdGVtQWN0aW9uKGl0ZW0sIGljb24rbGFiZWwpKycgXA0KICAgICAgICAgICAgICAgIDwvZGl2Pic7DQogICAgICAgIH0NCiAgICAgICAgLy8gZmxvYXRpbmcgaWNvbnMgb24gZGVza3RvcCBvbmx5DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgLy8gYWRkIGZvY3VzIGNsYXNzIGZvciBmb2N1cyBhbmltYXRpb24NCiAgICAgICAgICAgIGxhYmVsID0gaXRlbS5MYWJlbDsNCiAgICAgICAgICAgIHZhciBmb2N1c0NsYXNzID0gaXRlbS5BbmltYXRlPyAnZm9jdXMnIDogJyc7DQogICAgICAgICAgICBpY29uID0gJzxzcGFuIGNsYXNzPSJpY29uLWNvbnRhaW5lciI+JytnZXRJdGVtSWNvbihpdGVtKSsnPC9zcGFuPic7DQogICAgICAgICAgICB0ZXh0ID0gJzxzcGFuIGNsYXNzPSJmbG9hdC10ZXh0IiBpZD0idGV4dC0nK2luZGV4KyciPicrbGFiZWwrJzwvc3Bhbj4nOw0KICAgICAgICAgICAgaHRtbCArPSANCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmxvYXQtY29udGFpbmVyICcrZm9jdXNDbGFzcysnIiBpZD0iJytpbmRleCsnIj4gXA0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmFiIGNoaWxkIGZsb2F0IiBpZD0iY2hpbGQtJytpbmRleCsnIiBkYXRhLXN1Yml0ZW09IicraW5kZXgrJyIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1mbGV4OyI+IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICcrZ2V0SXRlbUFjdGlvbihpdGVtLCBpY29uKSsnIFwNCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiBcDQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmbG9hdC10ZXh0LWNvbnRhaW5lciIgaWQ9ImZsb2F0LXRleHQtJytpbmRleCsnIj4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRJdGVtQWN0aW9uKGl0ZW0sIHRleHQpKycgXA0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nOw0KICAgICAgICB9DQogICAgICAgIC8vIGlmIGFjdGlvbiBpcyBzaGFyZSBhZGQgc2hhcmUgaXRlbXMgdG8gbW9kYWwNCiAgICAgICAgaWYoaXRlbS5BY3Rpb24gPT09ICdTaGFyZScpIHsNCiAgICAgICAgICAgICQuZ2V0U2NyaXB0KCdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21pY3JvbW9kYWwvZGlzdC9taWNyb21vZGFsLm1pbi5qcycsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIE1pY3JvTW9kYWwuaW5pdCgpOw0KICAgICAgICAgICAgICAgICQoJy5zaGFyZS1jb250YWluZXInKS5odG1sKGdldFNvY2lhbEl0ZW1zKGl0ZW0pKTsgICAvLyBhZGQgc29jaWFsIGljb25zIHRvIG1vZGFsDQogICAgICAgICAgICAgICAgYWRkU2hhcmVMaXN0ZW5lcigpOyAgIC8vIGlmIHNvY2lhbCBzaGFyaW5nIGVuYWJsZWQgYWRkIGNsaWNrIGhhbmRsZXINCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTsNCiAgICByZXR1cm4gaHRtbDsNCn0NCmZ1bmN0aW9uIGdldFNvY2lhbEl0ZW1zKGl0ZW0pIHsNCiAgICBsZXQgaHRtbCA9ICcnOw0KICAgIGNvbnN0IGNvbnRlbnQgPSBnZXRTaGFyZUNvbnRlbnQoaXRlbSk7DQogICAgaWYoaXRlbS5FbWFpbCkgICAgICBodG1sICs9IGdldFNoYXJlSHRtbCgnRW1haWwnLCBjb250ZW50LmxpbmssIGNvbnRlbnQudGl0bGUsICdUYWInLCAnc29jaWFsJyk7DQogICAgaWYoaXRlbS5GYWNlYm9vaykgICBodG1sICs9IGdldFNoYXJlSHRtbCgnRmFjZWJvb2snLCBjb250ZW50LmxpbmssIGNvbnRlbnQudGl0bGUsICdUYWInLCAnc29jaWFsJyk7DQogICAgaWYoaXRlbS5UdW1ibHIpICAgICBodG1sICs9IGdldFNoYXJlSHRtbCgnVHVtYmxyJywgY29udGVudC5saW5rLCBjb250ZW50LnRpdGxlLCAnVGFiJywgJ3NvY2lhbCcpOw0KICAgIGlmKGl0ZW0uTGlua2VkSW4pICAgaHRtbCArPSBnZXRTaGFyZUh0bWwoJ0xpbmtlZEluJywgY29udGVudC5saW5rLCBjb250ZW50LnRpdGxlLCAnVGFiJywgJ3NvY2lhbCcpOw0KICAgIGlmKGl0ZW0uVHdpdHRlcikgICAgaHRtbCArPSBnZXRTaGFyZUh0bWwoJ1R3aXR0ZXInLCBjb250ZW50LmxpbmssIGNvbnRlbnQudGl0bGUsICdUYWInLCAnc29jaWFsJyk7DQogICAgaWYoaXRlbS5SZWRkaXQpICAgICBodG1sICs9IGdldFNoYXJlSHRtbCgnUmVkZGl0JywgY29udGVudC5saW5rLCBjb250ZW50LnRpdGxlLCAnVGFiJywgJ3NvY2lhbCcpOw0KICAgIC8vaWYoaXRlbS5Hb29nbGVQbHVzKSBodG1sICs9IGdldFNoYXJlSHRtbCgnR29vZ2xlUGx1cycsIGNvbnRlbnQubGluaywgY29udGVudC50aXRsZSwgJ1RhYicsICdzb2NpYWwnKTsNCiAgICBpZihpdGVtLlBpbnRlcmVzdCkgIGh0bWwgKz0gZ2V0U2hhcmVIdG1sKCdQaW50ZXJlc3QnLCBjb250ZW50LmxpbmssIGNvbnRlbnQudGl0bGUsICdUYWInLCAnc29jaWFsJyk7DQogICAgcmV0dXJuIGh0bWw7DQp9DQoNCi8vDQovLyBTb2NpYWwgU2hhcmUgRnVuY3Rpb25zDQovLw0KZnVuY3Rpb24gZ2V0U2hhcmVDb250ZW50KGl0ZW0pIHsNCiAgICAvLyBzZXQgbGluayB0byB0aGUgY3VycmVudCBwYWdlIHVybA0KICAgIGxldCBsaW5rID0gaXRlbS5TaGFyZUxpbms/IGl0ZW0uTGluay5ocmVmIDogd2luZG93LnRvcC5sb2NhdGlvbi5ocmVmOw0KICAgIGxpbmsgPSBlbmNvZGVVUkkobGluayk7DQogICAgDQogICAgLy8gZ2V0IGRlZmF1bHQgcGFnZSB0aXRsZSBmcm9tIHRoZSBhY3R1YWwgcGFnZSB0aXRsZQ0KICAgIGNvbnN0IHBhZ2VUaXRsZSA9IGl0ZW0uU2hhcmVUaXRsZT8gaXRlbS5TaGFyZVRpdGxlIDogZG9jdW1lbnQudGl0bGU7DQogICAgY29uc3QgZW5jb2RlZFRpdGxlID0gZW5jb2RlVVJJKHBhZ2VUaXRsZSk7DQogICAgDQogICAgcmV0dXJuIHtsaW5rOiBsaW5rLCB0aXRsZTogZW5jb2RlZFRpdGxlfTsNCn0NCmZ1bmN0aW9uIGdldFNoYXJlSHRtbChzaXRlLCBsaW5rLCBlbmNvZGVkVGl0bGUsIGFjdGlvbiwgbGlua0NsYXNzKSB7DQogICAgbGV0IGhyZWYgPSAnJzsNCiAgICBzd2l0Y2goc2l0ZSkgew0KICAgICAgICBjYXNlICdFbWFpbCc6DQogICAgICAgICAgICBocmVmID0gIm1haWx0bzo/U3ViamVjdD0iK2VuY29kZWRUaXRsZSsiJmJvZHk9Q2hlY2sgb3V0IHRoaXMgc2l0ZTogIit3aW5kb3cubG9jYXRpb24uaHJlZjsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fU0hBUkVfRU1BSUwnOw0KICAgICAgICAgICAgcmV0dXJuICgNCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29jaWFsLWljb24iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+IFwNCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJytocmVmKyciIGNsYXNzPSInK2xpbmtDbGFzcysnIiBvbmNsaWNrPSJfdHJhY2tDb252V2lkZ2V0Q2xpY2tFdmVudChcJycrc3RhdHNFdmVudE5hbWUrJ1wnKTs7Ij4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRTdmcoJ3NoYXJlZW52ZWxvcGUnKSsnIFwNCiAgICAgICAgICAgICAgICAgICAgPC9hPiBcDQogICAgICAgICAgICAgICAgPC9kaXY+Jyk7DQogICAgICAgIGNhc2UgJ0ZhY2Vib29rJzoNCiAgICAgICAgICAgIGhyZWYgPSAnaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3NoYXJlci9zaGFyZXIucGhwP3U9JytsaW5rOw0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fU0hBUkVfRkInOw0KICAgICAgICAgICAgcmV0dXJuICgNCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29jaWFsLWljb24iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjM2I1OTk4OyI+IFwNCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJytocmVmKyciIGNsYXNzPSInK2xpbmtDbGFzcysnIiB0YXJnZXQ9Il9ibGFuayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRTdmcoJ2ZhY2Vib29rJykrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvYT4gXA0KICAgICAgICAgICAgICAgIDwvZGl2PicpOw0KICAgICAgICBjYXNlICdUdW1ibHInOg0KICAgICAgICAgICAgaHJlZiA9ICdodHRwOi8vdHVtYmxyLmNvbS9zaGFyZS9saW5rP3VybD0nK2xpbmsrJyZuYW1lPScrZW5jb2RlZFRpdGxlOw0KICAgICAgICAgICAgcmV0dXJuICggDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNvY2lhbC1pY29uIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzM1NDY1YzsiPiBcDQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IicraHJlZisnIiBjbGFzcz0iJytsaW5rQ2xhc3MrJyIgdGFyZ2V0PSJfYmxhbmsiID4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRTdmcoJ3R1bWJscicpKycgXA0KICAgICAgICAgICAgICAgICAgICA8L2E+IFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nKTsNCiAgICAgICAgY2FzZSAnTGlua2VkSW4nOg0KICAgICAgICAgICAgaHJlZiA9ICdodHRwOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyZUFydGljbGU/bWluaT10cnVlJmFtcDt1cmw9JytsaW5rKycmYW1wO3RpdGxlPScrZW5jb2RlZFRpdGxlOw0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fU0hBUkVfTElOS0VESU4nOw0KICAgICAgICAgICAgcmV0dXJuICggDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNvY2lhbC1pY29uIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzQ4NzVCNDsiPiBcDQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IicraHJlZisnIiBjbGFzcz0iJytsaW5rQ2xhc3MrJyIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOyI+IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICcrZ2V0U3ZnKCdsaW5rZWRJbicpKycgXA0KICAgICAgICAgICAgICAgICAgICA8L2E+IFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nKTsNCiAgICAgICAgY2FzZSAnVHdpdHRlcic6DQogICAgICAgICAgICBocmVmID0gJ2h0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9JytsaW5rOw0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fU0hBUkVfVFdJVFRFUic7DQogICAgICAgICAgICByZXR1cm4gKA0KICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzb2NpYWwtaWNvbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7Ij4gXA0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSInK2hyZWYrJyIgY2xhc3M9IicrbGlua0NsYXNzKyciIHRhcmdldD0iX2JsYW5rIiBvbmNsaWNrPSJfdHJhY2tDb252V2lkZ2V0Q2xpY2tFdmVudChcJycrc3RhdHNFdmVudE5hbWUrJ1wnKTsiPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldFN2ZygndHdpdHRlcicpKycgXA0KICAgICAgICAgICAgICAgICAgICA8L2E+IFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nKTsNCiAgICAgICAgY2FzZSAnUmVkZGl0JzoNCiAgICAgICAgICAgIGhyZWYgPSAnaHR0cDovL3d3dy5yZWRkaXQuY29tL3N1Ym1pdD91cmw9JytsaW5rKycmdGl0bGU9JytlbmNvZGVkVGl0bGUrJyZ0ZXh0PScrZW5jb2RlZFRpdGxlOw0KICAgICAgICAgICAgcmV0dXJuICggDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNvY2lhbC1pY29uIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2ZmNDUwMDsiPiBcDQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IicraHJlZisnIiBjbGFzcz0iJytsaW5rQ2xhc3MrJyIgdGFyZ2V0PSJfYmxhbmsiPiBcDQogICAgICAgICAgICAgICAgICAgICAgICAnK2dldFN2ZygncmVkZGl0JykrJyBcDQogICAgICAgICAgICAgICAgICAgIDwvYT4gXA0KICAgICAgICAgICAgICAgIDwvZGl2PicpOw0KICAgICAgIC8qIGNhc2UgJ0dvb2dsZVBsdXMnOg0KICAgICAgICAgICAgaHJlZiA9ICdodHRwczovL3BsdXMuZ29vZ2xlLmNvbS9zaGFyZT91cmw9JytsaW5rOw0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fU0hBUkVfR09PR0xFX1BMVVMnOw0KICAgICAgICAgICAgcmV0dXJuICggDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNvY2lhbC1pY29uIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2QzNDgzNjsiPiBcDQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IicraHJlZisnIiBjbGFzcz0iJytsaW5rQ2xhc3MrJyIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOyI+IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICcrZ2V0U3ZnKCdnUGx1cycpKycgXA0KICAgICAgICAgICAgICAgICAgICA8L2E+IFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nKTsgKi8NCiAgICAgICAgY2FzZSAnUGludGVyZXN0JzoNCiAgICAgICAgICAgIGhyZWYgPSAnaHR0cDovL3BpbnRlcmVzdC5jb20vcGluL2NyZWF0ZS9idXR0b24vP3VybD0nK2xpbmsrJyZhbXA7ZGVzY3JpcHRpb249JytlbmNvZGVkVGl0bGU7DQogICAgICAgICAgICByZXR1cm4gKA0KICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzb2NpYWwtaWNvbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNjYjIwMjc7Ij4gXA0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSInK2hyZWYrJyIgY2xhc3M9IicrbGlua0NsYXNzKyciIHRhcmdldD0iX2JsYW5rIj4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgJytnZXRTdmcoJ3BpbnRlcmVzdCcpKycgXA0KICAgICAgICAgICAgICAgICAgICA8L2E+IFwNCiAgICAgICAgICAgICAgICA8L2Rpdj4nKTsNCiAgICAgICAgZGVmYXVsdDogDQogICAgICAgICAgICByZXR1cm4gJyc7DQogICAgfQ0KfQ0KDQovLw0KLy8gSGVscGVycw0KLy8NCi8vIGNoZWNrIGRpc3BsYXkgdHlwZQ0KZnVuY3Rpb24gaXNNb2JpbGUoKSB7DQogICAgcmV0dXJuIGRhdGEuZGV2aWNlID09PSAnbW9iaWxlJzsNCn0NCmZ1bmN0aW9uIGdldEl0ZW1BY3Rpb24oaXRlbSwgZWxlbSkgew0KICAgIHZhciBzdGF0c0V2ZW50TmFtZT0nJzsNCiAgICBzd2l0Y2goaXRlbS5BY3Rpb24pIHsNCiAgICAgICAgY2FzZSAnTGluayc6DQogICAgICAgICAgICBpZighaXRlbS5MaW5rKSBpdGVtLkxpbmsgPSB7IHRhcmdldDogJ3RhcmdldD0iX2JsYW5rJywgaHJlZjogJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbScgfSAgLy8gZGVmYXVsdCBsaW5rDQogICAgICAgICAgICB2YXIgdGFyZ2V0ID0gaXRlbS5MaW5rLnRhcmdldD8gaXRlbS5MaW5rLnRhcmdldCA6ICcnOw0KICAgICAgICAgICAgdmFyIHN0YXRzRXZlbnROYW1lID0gJ0NNX0xJTktfQ0xJQ0snOw0KICAgICAgICAgICAgcmV0dXJuICc8YSAnK3RhcmdldCsnIGhyZWY9IicraXRlbS5MaW5rLmhyZWYrJyIgY2xhc3M9Im1lbnUtbGluayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4nK2VsZW0rJzwvYT4nOw0KICAgICAgICBjYXNlICdDYWxsJzoNCiAgICAgICAgICAgIHN0YXRzRXZlbnROYW1lID0gJ0NNX0NMSUNLX1RPX0NBTEwnOw0KICAgICAgICAgICAgcmV0dXJuICc8YSBocmVmPSJ0ZWw6JytpdGVtLkNhbGxOdW0rJyIgY2xhc3M9Im1lbnUtbGluayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4nK2VsZW0rJzwvYT4nOw0KICAgICAgICBjYXNlICdTbXMnOg0KICAgICAgICAgICAgc3RhdHNFdmVudE5hbWUgPSAnQ01fQ0xJQ0tfVE9fU01TJzsNCiAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0ic21zOicraXRlbS5TbXNOdW0rJyIgY2xhc3M9Im1lbnUtbGluayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4nK2VsZW0rJzwvYT4nOw0KICAgICAgICBjYXNlICdFbWFpbCc6DQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9DTElDS19UT19FTUFJTCc7DQogICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9Im1haWx0bzonK2l0ZW0uRW1haWxBZGRyKyc/c3ViamVjdD0nK2l0ZW0uZW1haWxEZWZTdWJqZWN0ICsgJyZib2R5PScgKyBpdGVtLmRlZkVtYWlsQm9keSArICciIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ibWVudS1saW5rIiBvbmNsaWNrPSJfdHJhY2tDb252V2lkZ2V0Q2xpY2tFdmVudChcJycrc3RhdHNFdmVudE5hbWUrJ1wnKTsiPicrZWxlbSsnPC9hPic7DQogICAgICAgIGNhc2UgJ01hcCc6DQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9ESVJFQ1RJT04nOw0KICAgICAgICAgICAgcmV0dXJuICc8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzP3E9JytpdGVtLlF1ZXJ5KyciIGNsYXNzPSJtZW51LWxpbmsiIG9uY2xpY2s9Il90cmFja0NvbnZXaWRnZXRDbGlja0V2ZW50KFwnJytzdGF0c0V2ZW50TmFtZSsnXCcpOyI+JytlbGVtKyc8L2E+JzsNCiAgICAgICAgY2FzZSAnTWVzcyc6DQogICAgICAgICAgICBzdGF0c0V2ZW50TmFtZSA9ICdDTV9GQl9NRVNTQUdFJzsNCiAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0iaHR0cDovL20ubWUvJytpdGVtLkZiVXNlcisnIiBjbGFzcz0ibWVudS1saW5rIiB0YXJnZXQ9Il9ibGFuayIgb25jbGljaz0iX3RyYWNrQ29udldpZGdldENsaWNrRXZlbnQoXCcnK3N0YXRzRXZlbnROYW1lKydcJyk7Ij4nK2VsZW0rJzwvYT4nOw0KICAgICAgICBjYXNlICdTaGFyZSc6DQogICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9IiMiIGNsYXNzPSJtZW51LWxpbmsgc2hhcmUiPicrZWxlbSsnPC9hPic7DQogICAgICAgIGRlZmF1bHQ6IA0KICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgIH0NCn0NCi8vIHJldHVybnMgbmV3IGRlZmF1bHQgaWNvbiBvbmx5IGlmIGljb24gaXMgZGVmYXVsdCAoaWRlbnRpZmllZCBieSBwYXRoIGRhdGEgaW4gZGVmYXVsdCBzdmcgTVVTVCBDSEFOR0UgRk9SIERJRkZFUkVOVCBERUZBVVRMKQ0KZnVuY3Rpb24gZ2V0SXRlbUljb24oaXRlbSkgew0KICAgIC8vIGljb24gaXMgZGVmYXVsdA0KICAgIGlmKGl0ZW0uQ3VzdG9tSWNvbikgew0KICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJuZXctY29udGFpbmVyIj4nK2l0ZW0uSWNvbisnPC9kaXY+JzsNCiAgICB9IGVsc2Ugew0KICAgICAgICBzd2l0Y2goaXRlbS5BY3Rpb24pIHsNCiAgICAgICAgICAgIGNhc2UgJ0xpbmsnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ2xpbmsnKTsNCiAgICAgICAgICAgIGNhc2UgJ0NhbGwnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ3Bob25lJyk7DQogICAgICAgICAgICBjYXNlICdTbXMnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ3NtcycpOw0KICAgICAgICAgICAgY2FzZSAnRW1haWwnOg0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdmcoJ2VudmVsb3BlJyk7DQogICAgICAgICAgICBjYXNlICdNZXNzJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3ZnKCdtZXNzZW5nZXInKTsNCiAgICAgICAgICAgIGNhc2UgJ01hcCc6DQogICAgICAgICAgICAgICAgcmV0dXJuIGdldFN2ZygnbWFwJyk7DQogICAgICAgICAgICBjYXNlICdTaGFyZSc6DQogICAgICAgICAgICAgICAgcmV0dXJuIGdldFN2Zygnc2hhcmUnKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCndpbmRvdy5fdHJhY2tDb252V2lkZ2V0Q2xpY2tFdmVudCA9IGZ1bmN0aW9uKGV2ZW50TmFtZSkgew0KICAgIGlmKHR5cGVvZihIQUYpPT09Im9iamVjdCIpew0KICAgICAgICBIQUYuT21UcmFja2luZy5vbkNNQ2xpY2soZXZlbnROYW1lKSANCiAgICB9DQogICAgcmV0dXJuOw0KfQ0KDQpmdW5jdGlvbiBkdWRhaWNvbihpY29uKXsNCiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPSJuZXctY29udGFpbmVyIj4nK2ljb24rJzwvc3Bhbj4nDQogICAgDQogICAgDQp9DQpmdW5jdGlvbiBnZXRTdmcobmFtZSkgew0KICAgIGNvbnN0IHR5cGUgPSBuYW1lPyBuYW1lIDogZGF0YS5jb25maWcuRGVza01haW47DQogICAgc3dpdGNoKHR5cGUpIHsNCiAgICAgICAgY2FzZSAndkVsbGlwc2lzJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48dGl0bGU+TW9yZTwvdGl0bGU+PHBhdGggZD0iTTk2IDE4NGMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyIDMyLjItNzIgNzItNzJ6TTI0IDgwYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzJTMTM1LjggOCA5NiA4IDI0IDQwLjIgMjQgODB6bTAgMzUyYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03Mi03MiAzMi4yLTcyIDcyeiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ21hcCc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdtYXAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4NCA1MTIiIGRhdGEtZGVmYXVsdD0idHJ1ZSI+PHBhdGggZD0iTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpNMTkyIDI3MmM0NC4xODMgMCA4MC0zNS44MTcgODAtODBzLTM1LjgxNy04MC04MC04MC04MCAzNS44MTctODAgODAgMzUuODE3IDgwIDgwIDgweiIvPjwvc3ZnPicNCiAgICAgICAgY2FzZSAnaEVsbGlwc2lzJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48dGl0bGU+TW9yZTwvdGl0bGU+PHBhdGggZD0iTTMyOCAyNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyem0xMDQtNzJjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0tMzUyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyeiIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ3BsdXMnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA0MiA0MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDIgNDI7IHhtbDpzcGFjZT0icHJlc2VydmUiPjx0aXRsZT5Nb3JlPC90aXRsZT48cG9seWdvbiBwb2ludHM9IjQyLDIwIDIyLDIwIDIyLDAgMjAsMCAyMCwyMCAwLDIwIDAsMjIgMjAsMjIgMjAsNDIgMjIsNDIgMjIsMjIgNDIsMjIgIi8+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAnYmFycyc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiI+PHRpdGxlPk1vcmU8L3RpdGxlPjxwYXRoIGQ9Ik0xNiAxMzJoNDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZWNzZjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNkM3LjE2MyA2MCAwIDY3LjE2MyAwIDc2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6bTAgMTYwaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2SDE2Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6bTAgMTYwaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2SDE2Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djQwYzAgOC44MzcgNy4xNjMgMTYgMTYgMTZ6Ii8+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAnZW52ZWxvcGUnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY29uc3ZnZW1haWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjx0aXRsZT5FbWFpbDwvdGl0bGU+PHBhdGggZD0iTTQ2NCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQ4djQwLjgwNWMtMjIuNDIyIDE4LjI1OS01OC4xNjggNDYuNjUxLTEzNC41ODcgMTA2LjQ5LTE2Ljg0MSAxMy4yNDctNTAuMjAxIDQ1LjA3Mi03My40MTMgNDQuNzAxLTIzLjIwOC4zNzUtNTYuNTc5LTMxLjQ1OS03My40MTMtNDQuNzAxQzEwNi4xOCAxOTkuNDY1IDcwLjQyNSAxNzEuMDY3IDQ4IDE1Mi44MDVWMTEyaDQxNnpNNDggNDAwVjIxNC4zOThjMjIuOTE0IDE4LjI1MSA1NS40MDkgNDMuODYyIDEwNC45MzggODIuNjQ2IDIxLjg1NyAxNy4yMDUgNjAuMTM0IDU1LjE4NiAxMDMuMDYyIDU0Ljk1NSA0Mi43MTcuMjMxIDgwLjUwOS0zNy4xOTkgMTAzLjA1My01NC45NDcgNDkuNTI4LTM4Ljc4MyA4Mi4wMzItNjQuNDAxIDEwNC45NDctODIuNjUzVjQwMEg0OHoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdzaGFyZWVudmVsb3BlJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z3NoYXJlZW1haWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjx0aXRsZT5FbWFpbDwvdGl0bGU+PHBhdGggZD0iTTQ2NCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQ4djQwLjgwNWMtMjIuNDIyIDE4LjI1OS01OC4xNjggNDYuNjUxLTEzNC41ODcgMTA2LjQ5LTE2Ljg0MSAxMy4yNDctNTAuMjAxIDQ1LjA3Mi03My40MTMgNDQuNzAxLTIzLjIwOC4zNzUtNTYuNTc5LTMxLjQ1OS03My40MTMtNDQuNzAxQzEwNi4xOCAxOTkuNDY1IDcwLjQyNSAxNzEuMDY3IDQ4IDE1Mi44MDVWMTEyaDQxNnpNNDggNDAwVjIxNC4zOThjMjIuOTE0IDE4LjI1MSA1NS40MDkgNDMuODYyIDEwNC45MzggODIuNjQ2IDIxLjg1NyAxNy4yMDUgNjAuMTM0IDU1LjE4NiAxMDMuMDYyIDU0Ljk1NSA0Mi43MTcuMjMxIDgwLjUwOS0zNy4xOTkgMTAzLjA1My01NC45NDcgNDkuNTI4LTM4Ljc4MyA4Mi4wMzItNjQuNDAxIDEwNC45NDctODIuNjUzVjQwMEg0OHoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdwaG9uZSc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdwaG9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZGF0YS1kZWZhdWx0Pjx0aXRsZT5QaG9uZTwvdGl0bGU+PHBhdGggZD0iTTQ5My40IDI0LjZsLTEwNC0yNGMtMTEuMy0yLjYtMjIuOSAzLjMtMjcuNSAxMy45bC00OCAxMTJjLTQuMiA5LjgtMS40IDIxLjMgNi45IDI4bDYwLjYgNDkuNmMtMzYgNzYuNy05OC45IDE0MC41LTE3Ny4yIDE3Ny4ybC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4QzMuOSAzNjYuNS0yIDM3OC4xLjYgMzg5LjRsMjQgMTA0QzI3LjEgNTA0LjIgMzYuNyA1MTIgNDggNTEyYzI1Ni4xIDAgNDY0LTIwNy41IDQ2NC00NjQgMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNHoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdjbG9zZSc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdjbG9zZSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCJ2aWV3Qm94PSIwIDAgMjI0LjUxMiAyMjQuNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMjQuNTEyIDIyNC41MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48dGl0bGU+Q2xvc2U8L3RpdGxlPjxnPjxwb2x5Z29uIHBvaW50cz0iMjI0LjUwNyw2Ljk5NyAyMTcuNTIxLDAgMTEyLjI1NiwxMDUuMjU4IDYuOTk4LDAgMC4wMDUsNi45OTcgMTA1LjI2MywxMTIuMjU0IDAuMDA1LDIxNy41MTIgNi45OTgsMjI0LjUxMiAxMTIuMjU2LDExOS4yNCAyMTcuNTIxLDIyNC41MTIgMjI0LjUwNywyMTcuNTEyIDExOS4yNDksMTEyLjI1NCIvPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdmYWNlYm9vayc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdmYiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjY0IDUxMiI+PHRpdGxlPkZhY2Vib29rPC90aXRsZT48cGF0aCBkPSJNNzYuNyA1MTJWMjgzSDB2LTkxaDc2Ljd2LTcxLjdDNzYuNyA0Mi40IDEyNC4zIDAgMTkzLjggMGMzMy4zIDAgNjEuOSAyLjUgNzAuMiAzLjZWODVoLTQ4LjJjLTM3LjggMC00NS4xIDE4LTQ1LjEgNDQuM1YxOTJIMjU2bC0xMS43IDkxaC03My42djIyOSIvPjwvc3ZnPic7DQogICAgICAgIGNhc2UgJ21lc3Nlbmdlcic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdtZXNnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48dGl0bGU+RmFjZWJvb2sgTWVzc2VuZ2VyPC90aXRsZT48cGF0aCBkPSJNMjI0IDMyQzE1LjkgMzItNzcuNSAyNzggODQuNiA0MDAuNlY0ODBsNzUuNy00MmMxNDIuMiAzOS44IDI4NS40LTU5LjkgMjg1LjQtMTk4LjdDNDQ1LjggMTI0LjggMzQ2LjUgMzIgMjI0IDMyem0yMy40IDI3OC4xTDE5MCAyNTAuNSA3OS42IDMxMS42bDEyMS4xLTEyOC41IDU3LjQgNTkuNiAxMTAuNC02MS4xLTEyMS4xIDEyOC41eiIvPjwvc3ZnPicNCiAgICAgICAgY2FzZSAndHVtYmxyJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z3RtYiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIwIDUxMiI+PHRpdGxlPlR1bWJscjwvdGl0bGU+PHBhdGggZD0iTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdsaW5rZWRJbic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdsaSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiI+PHRpdGxlPkxpbmtlZEluPC90aXRsZT48cGF0aCBkPSJNMTAwLjMgNDgwSDcuNFYxODAuOWg5Mi45VjQ4MHpNNTMuOCAxNDAuMUMyNC4xIDE0MC4xIDAgMTE1LjUgMCA4NS44IDAgNTYuMSAyNC4xIDMyIDUzLjggMzJjMjkuNyAwIDUzLjggMjQuMSA1My44IDUzLjggMCAyOS43LTI0LjEgNTQuMy01My44IDU0LjN6TTQ0OCA0ODBoLTkyLjdWMzM0LjRjMC0zNC43LS43LTc5LjItNDguMy03OS4yLTQ4LjMgMC01NS43IDM3LjctNTUuNyA3Ni43VjQ4MGgtOTIuOFYxODAuOWg4OS4xdjQwLjhoMS4zYzEyLjQtMjMuNSA0Mi43LTQ4LjMgODcuOS00OC4zIDk0IDAgMTExLjMgNjEuOSAxMTEuMyAxNDIuM1Y0ODB6Ii8+PC9zdmc+JzsNCiAgICAgICAgY2FzZSAndHdpdHRlcic6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmd0dyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjx0aXRsZT5Ud2l0dGVyPC90aXRsZT48cGF0aCBkPSJNMTIuNi43NWgyLjQ1NGwtNS4zNiA2LjE0MkwxNiAxNS4yNWgtNC45MzdsLTMuODY3LTUuMDctNC40MjUgNS4wN0guMzE2bDUuNzMzLTYuNTdMMCAuNzVoNS4wNjNsMy40OTUgNC42MzNMMTIuNjAxLjc1Wm0tLjg2IDEzLjAyOGgxLjM2TDQuMzIzIDIuMTQ1SDIuODY1eiIiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdyZWRkaXQnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY29uc3ZncmVkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48dGl0bGU+UmVkZGl0PC90aXRsZT48cGF0aCBkPSJNNDQwLjMgMjAzLjVjLTE1IDAtMjguMiA2LjItMzcuOSAxNS45LTM1LjctMjQuNy04My44LTQwLjYtMTM3LjEtNDIuM0wyOTMgNTIuM2w4OC4yIDE5LjhjMCAyMS42IDE3LjYgMzkuMiAzOS4yIDM5LjIgMjIgMCAzOS43LTE4LjEgMzkuNy0zOS43cy0xNy42LTM5LjctMzkuNy0zOS43Yy0xNS40IDAtMjguNyA5LjMtMzUuMyAyMmwtOTcuNC0yMS42Yy00LjktMS4zLTkuNyAyLjItMTEgNy4xTDI0Ni4zIDE3N2MtNTIuOSAyLjItMTAwLjUgMTguMS0xMzYuMyA0Mi44LTkuNy0xMC4xLTIzLjQtMTYuMy0zOC40LTE2LjMtNTUuNiAwLTczLjggNzQuNi0yMi45IDEwMC4xLTEuOCA3LjktMi42IDE2LjMtMi42IDI0LjcgMCA4My44IDk0LjQgMTUxLjcgMjEwLjMgMTUxLjcgMTE2LjQgMCAyMTAuOC02Ny45IDIxMC44LTE1MS43IDAtOC40LS45LTE3LjItMy4xLTI1LjEgNDkuOS0yNS42IDMxLjUtOTkuNy0yMy44LTk5Ljd6TTEyOS40IDMwOC45YzAtMjIgMTcuNi0zOS43IDM5LjctMzkuNyAyMS42IDAgMzkuMiAxNy42IDM5LjIgMzkuNyAwIDIxLjYtMTcuNiAzOS4yLTM5LjIgMzkuMi0yMiAuMS0zOS43LTE3LjYtMzkuNy0zOS4yem0yMTQuMyA5My41Yy0zNi40IDM2LjQtMTM5LjEgMzYuNC0xNzUuNSAwLTQtMy41LTQtOS43IDAtMTMuNyAzLjUtMy41IDkuNy0zLjUgMTMuMiAwIDI3LjggMjguNSAxMjAgMjkgMTQ5IDAgMy41LTMuNSA5LjctMy41IDEzLjIgMCA0LjEgNCA0LjEgMTAuMi4xIDEzLjd6bS0uOC01NC4yYy0yMS42IDAtMzkuMi0xNy42LTM5LjItMzkuMiAwLTIyIDE3LjYtMzkuNyAzOS4yLTM5LjcgMjIgMCAzOS43IDE3LjYgMzkuNyAzOS43LS4xIDIxLjUtMTcuNyAzOS4yLTM5LjcgMzkuMnoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdwaW50ZXJlc3QnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY29uc3ZncGluIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzODQgNTEyIj48dGl0bGU+UGludGVyZXN0PC90aXRsZT48cGF0aCBkPSJNMjA0IDYuNUMxMDEuNCA2LjUgMCA3NC45IDAgMTg1LjYgMCAyNTYgMzkuNiAyOTYgNjMuNiAyOTZjOS45IDAgMTUuNi0yNy42IDE1LjYtMzUuNCAwLTkuMy0yMy43LTI5LjEtMjMuNy02Ny44IDAtODAuNCA2MS4yLTEzNy40IDE0MC40LTEzNy40IDY4LjEgMCAxMTguNSAzOC43IDExOC41IDEwOS44IDAgNTMuMS0yMS4zIDE1Mi43LTkwLjMgMTUyLjctMjQuOSAwLTQ2LjItMTgtNDYuMi00My44IDAtMzcuOCAyNi40LTc0LjQgMjYuNC0xMTMuNCAwLTY2LjItOTMuOS01NC4yLTkzLjkgMjUuOCAwIDE2LjggMi4xIDM1LjQgOS42IDUwLjctMTMuOCA1OS40LTQyIDE0Ny45LTQyIDIwOS4xIDAgMTguOSAyLjcgMzcuNSA0LjUgNTYuNCAzLjQgMy44IDEuNyAzLjQgNi45IDEuNSA1MC40LTY5IDQ4LjYtODIuNSA3MS40LTE3Mi44IDEyLjMgMjMuNCA0NC4xIDM2IDY5LjMgMzYgMTA2LjIgMCAxNTMuOS0xMDMuNSAxNTMuOS0xOTYuOEMzODQgNzEuMyAyOTguMiA2LjUgMjA0IDYuNXoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdzaGFyZSc6DQogICAgICAgICAgICByZXR1cm4gJzxzdmcgY2xhc3M9Imljb25zdmdzaGFyZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTUzNiAxNzkyIj48dGl0bGU+U2hhcmU8L3RpdGxlPjxwYXRoIGQ9Ik0xMjE2IDEwMjRxMTMzIDAgMjI2LjUgOTMuNXQ5My41IDIyNi41LTkzLjUgMjI2LjUtMjI2LjUgOTMuNS0yMjYuNS05My41LTkzLjUtMjI2LjVxMC0xMiAyLTM0bC0zNjAtMTgwcS05MiA4Ni0yMTggODYtMTMzIDAtMjI2LjUtOTMuNXQtOTMuNS0yMjYuNSA5My41LTIyNi41IDIyNi41LTkzLjVxMTI2IDAgMjE4IDg2bDM2MC0xODBxLTItMjItMi0zNCAwLTEzMyA5My41LTIyNi41dDIyNi41LTkzLjUgMjI2LjUgOTMuNSA5My41IDIyNi41LTkzLjUgMjI2LjUtMjI2LjUgOTMuNXEtMTI2IDAtMjE4LTg2bC0zNjAgMTgwcTIgMjIgMiAzNHQtMiAzNGwzNjAgMTgwcTkyLTg2IDIxOC04NnoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdzbXMnOg0KICAgICAgICAgICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJpY29uc3Znc21zIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48dGl0bGU+U01TIFRleHQ8L3RpdGxlPjxwYXRoIGQ9Ik00NDggMEg2NEMyOC43IDAgMCAyOC43IDAgNjR2Mjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djg0YzAgOS44IDExLjIgMTUuNSAxOS4xIDkuN0wzMDQgNDE2aDE0NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHoiLz48L3N2Zz4nOw0KICAgICAgICBjYXNlICdsaW5rJzoNCiAgICAgICAgICAgIHJldHVybiAnPHN2ZyBjbGFzcz0iaWNvbnN2Z2xpbmsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGQ9Ik0zMjYuNjEyIDE4NS4zOTFjNTkuNzQ3IDU5LjgwOSA1OC45MjcgMTU1LjY5OC4zNiAyMTQuNTktLjExLjEyLS4yNC4yNS0uMzYuMzdsLTY3LjIgNjcuMmMtNTkuMjcgNTkuMjctMTU1LjY5OSA1OS4yNjItMjE0Ljk2IDAtNTkuMjctNTkuMjYtNTkuMjctMTU1LjcgMC0yMTQuOTZsMzcuMTA2LTM3LjEwNmM5Ljg0LTkuODQgMjYuNzg2LTMuMyAyNy4yOTQgMTAuNjA2LjY0OCAxNy43MjIgMy44MjYgMzUuNTI3IDkuNjkgNTIuNzIxIDEuOTg2IDUuODIyLjU2NyAxMi4yNjItMy43ODMgMTYuNjEybC0xMy4wODcgMTMuMDg3Yy0yOC4wMjYgMjguMDI2LTI4LjkwNSA3My42Ni0xLjE1NSAxMDEuOTYgMjguMDI0IDI4LjU3OSA3NC4wODYgMjguNzQ5IDEwMi4zMjUuNTFsNjcuMi02Ny4xOWMyOC4xOTEtMjguMTkxIDI4LjA3My03My43NTcgMC0xMDEuODMtMy43MDEtMy42OTQtNy40MjktNi41NjQtMTAuMzQxLTguNTY5YTE2LjAzNyAxNi4wMzcgMCAwIDEtNi45NDctMTIuNjA2Yy0uMzk2LTEwLjU2NyAzLjM0OC0yMS40NTYgMTEuNjk4LTI5LjgwNmwyMS4wNTQtMjEuMDU1YzUuNTIxLTUuNTIxIDE0LjE4Mi02LjE5OSAyMC41ODQtMS43MzFhMTUyLjQ4MiAxNTIuNDgyIDAgMCAxIDIwLjUyMiAxNy4xOTd6TTQ2Ny41NDcgNDQuNDQ5Yy01OS4yNjEtNTkuMjYyLTE1NS42OS01OS4yNy0yMTQuOTYgMGwtNjcuMiA2Ny4yYy0uMTIuMTItLjI1LjI1LS4zNi4zNy01OC41NjYgNTguODkyLTU5LjM4NyAxNTQuNzgxLjM2IDIxNC41OWExNTIuNDU0IDE1Mi40NTQgMCAwIDAgMjAuNTIxIDE3LjE5NmM2LjQwMiA0LjQ2OCAxNS4wNjQgMy43ODkgMjAuNTg0LTEuNzMxbDIxLjA1NC0yMS4wNTVjOC4zNS04LjM1IDEyLjA5NC0xOS4yMzkgMTEuNjk4LTI5LjgwNmExNi4wMzcgMTYuMDM3IDAgMCAwLTYuOTQ3LTEyLjYwNmMtMi45MTItMi4wMDUtNi42NC00Ljg3NS0xMC4zNDEtOC41NjktMjguMDczLTI4LjA3My0yOC4xOTEtNzMuNjM5IDAtMTAxLjgzbDY3LjItNjcuMTljMjguMjM5LTI4LjIzOSA3NC4zLTI4LjA2OSAxMDIuMzI1LjUxIDI3Ljc1IDI4LjMgMjYuODcyIDczLjkzNC0xLjE1NSAxMDEuOTZsLTEzLjA4NyAxMy4wODdjLTQuMzUgNC4zNS01Ljc2OSAxMC43OS0zLjc4MyAxNi42MTIgNS44NjQgMTcuMTk0IDkuMDQyIDM0Ljk5OSA5LjY5IDUyLjcyMS41MDkgMTMuOTA2IDE3LjQ1NCAyMC40NDYgMjcuMjk0IDEwLjYwNmwzNy4xMDYtMzcuMTA2YzU5LjI3MS01OS4yNTkgNTkuMjcxLTE1NS42OTkuMDAxLTIxNC45NTl6Ii8+PC9zdmc+JzsNCiAgICAgICAgZGVmYXVsdDogDQogICAgICAgICAgICByZXR1cm4gJyc7DQogICAgfQ0KfQ0K","css":"#main-container.open > svg {\r\n fill: #333333 !important;\r\n}\r\n#main-container {\r\n display: inline-block;\r\n margin: 0 auto;\r\n}\r\n.master-bar > #main-container {\r\n margin: 0;\r\n width: 40px;\r\n max-height: 60px;\r\n}\r\n#close-bar {\r\n width: 42.666px;\r\n z-index: 10000006;\r\n position: absolute;\r\n bottom: 0.5em;\r\n right: 0.5em;\r\n}\r\n#close-bar svg {\r\n fill: #fff !important;\r\n}\r\n.share-container .iconsvgshareemail {\r\n padding: 0 !important;\r\n margin: 0 auto!important;\r\n display: block;\r\n width:60%;\r\n}\r\n.fab {\r\n background: #fff;\r\n width: 64px;\r\n height: 64px;\r\n border-radius: 50%;\r\n text-align: center;\r\n color: #333333;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5), 3px 3px 3px rgba(0, 0, 0, 0.25);\r\n position: fixed;\r\n bottom: 0px;\r\n right: 0px;\r\n font-size: 2.6667em;\r\n display: inline-block;\r\n cursor: default;\r\n}\r\n.fab.master-mobile, .child.mobile {\r\n bottom: 15px;\r\n right: 15px;\r\n}\r\n.fab, .social-icon span {\r\n vertical-align: middle;\r\n}\r\n.fab.child {\r\n width: 42.66666667px;\r\n height: 42.66666667px;\r\n display: none;\r\n opacity: 0;\r\n font-size: 2em;\r\n background-color: #ffffff;\r\n z-index: 10000007;\r\n margin: 0 10px;\r\n /* Aligns icon in center */\r\n display: flex;\r\n align-items: center;\r\n}\r\n.fab.child.child-desktop-bar {\r\n position: absolute;\r\n left: 10px;\r\n background-color: black;\r\n background-color: rgba(0,0,0,0);\r\n border: 2px solid #cccccc;\r\n box-shadow: none;\r\n display:none;\r\n}\r\n.fab.child.dark {\r\n background-color: #fff;\r\n}\r\n.fab.child.float {\r\n border-radius: 0px;\r\n background-color: #fff;\r\n box-shadow: none;\r\n margin: auto;\r\n position: relative;\r\n opacity: 1;\r\n min-width: 42.666px;\r\n top:0;\r\n}\r\n.social-icon {\r\n width: 42.66666667px;\r\n height: 42.66666667px;\r\n font-size: 2em;\r\n z-index: 10000007;\r\n margin: 10px auto;\r\n display: flex;\r\n align-items: center;\r\n border-radius: 50%;\r\n}\r\n.social {\r\n width: inherit;\r\n height: inherit;\r\n}\r\n.social-icon svg {\r\n width: inherit;\r\n height: inherit;\r\n padding: 8px;\r\n fill: white;\r\n}\r\n.social-icon.light svg {\r\n fill: white;\r\n}\r\n.social-icon.dark svg {\r\n fill: black;\r\n}\r\n.overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: #ECECEC;\r\n opacity: 0.9;\r\n display: none;\r\n z-index: 10000001;\r\n}\r\n.overlay.dark {\r\n background: #000;\r\n opacity: 0.6;\r\n}\r\n.icon-container svg {\r\n fill: #CCCCCC;\r\n margin: 0 auto;\r\n display: block;\r\n width: 50%;\r\n height:100%;\r\n}\r\n.icon-container.mobile.dark svg {\r\n fill: #000;\r\n}\r\n.mobile-bg, .social-bg {\r\n position: fixed;\r\n width: 100%;\r\n bottom: 0px;\r\n left: 0px;\r\n z-index: 10000002;\r\n display: none;\r\n}\r\n.social-bg {\r\n z-index: 10000005;\r\n}\r\n.mobile-bg.dark, .social-bg.dark {\r\n background: #000;\r\n}\r\n.mobile-bg.light, .social-bg.light {\r\n background: #fff;\r\n}\r\n.desktop-bg {\r\n position: absolute;\r\n min-width: 200px;\r\n bottom: 0px;\r\n left: 0px;\r\n z-index: 10000004;\r\n display: none;\r\n background: #ffffff;\r\n border-bottom: 6px solid #333333;\r\n box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5), 3px 3px 3px rgba(0, 0, 0, 0.25);\r\n}\r\n.left-text {\r\n text-align: right;\r\n position: absolute;\r\n right: 4rem;\r\n width: 300px;\r\n top: 49%;\r\n transform: translateY(-49%);\r\n}\r\n.menu-link {\r\n text-decoration: none;\r\n align-self: center;\r\n}\r\n.menu-link.dark {\r\n color: white;\r\n}\r\n.menu-link.light {\r\n color: black;\r\n}\r\n.menu-link.desk-bar {\r\n color: #333333;\r\n font-size: 24px;\r\n}\r\n.right-text {\r\n position: absolute;\r\n text-align: left;\r\n font-size: 20px;\r\n width: 200px;\r\n left: 50px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n}\r\n#float-container {\r\n position: fixed;\r\n right: 0px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n white-space: nowrap;\r\n z-index: 10000005;\r\n}\r\n.float-container {\r\n display: flex;\r\n height: 42.666px;\r\n max-width: 42.666px;\r\n background-color: white;\r\n margin-left: auto;\r\n margin-right: 0;\r\n float: right;\r\n clear: right;\r\n}\r\n.float-text-container {\r\n display: none;\r\n opacity: 1 !important;\r\n max-width: 100%;\r\n}\r\n.float-text {\r\n font-size: 20px;\r\n color: #333333;\r\n padding-left: 0.5em;\r\n padding-right: 44px;\r\n display: none;\r\n}\r\n.master-bar {\r\n border-radius: 0px;\r\n height: 50px;\r\n bottom: 0px;\r\n right:50px;\r\n width: 200px;\r\n padding: 0 0.5em;\r\n}\r\n#help-text {\r\n display: none;\r\n position: absolute;\r\n margin: 20px;\r\n color: #333333;\r\n font-size: 24px;\r\n text-align: left;\r\n}\r\n#master-label {\r\n font-size: 16px;\r\n}\r\n#masterfab {\r\n z-index: 10000006;\r\n display: none;\r\n align-items: center;\r\n}\r\n#masterfab svg {\r\n fill: #cccccc;\r\n margin: 0 auto;\r\n display: block;\r\n width: 60%;\r\n max-width: 70px;\r\n max-height: 50px;\r\n}\r\n\r\n/* Pulse animation */\r\n.pulse {\r\n border: 3px solid #cccccc;\r\n -webkit-border-radius: 50px;\r\n height: 100px;\r\n width: 100px;\r\n position: absolute;\r\n /* trick to center, left margin half of width */\r\n margin: 0 0 0 -50px;\r\n left: 50%;\r\n -webkit-animation: pulsate 1s ease-out;\r\n -moz-animation: pulsate 1s ease-out;\r\n -o-animation: pulsate 1s ease-out;\r\n animation: pulsate 1s ease-out;\r\n opacity: 0.0;\r\n}\r\n@-webkit-keyframes pulsate {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n@-moz-keyframes pulsate {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n@-o-keyframes pulsate {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n@keyframes pulsate {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n\r\n.pulse2 {\r\n border: 3px solid #cccccc;\r\n -webkit-border-radius: 40px;\r\n height: 80px;\r\n width: 80px;\r\n position: absolute;\r\n /* trick to center, left margin half of width */\r\n margin: 0 0 0 -40px;\r\n left: 50%;\r\n -webkit-animation: pulsate2 1s ease-out;\r\n -moz-animation: pulsate2 1s ease-out;\r\n -o-animation: pulsate2 1s ease-out;\r\n animation: pulsate2 1s ease-out;\r\n opacity: 0.0;\r\n}\r\n@-webkit-keyframes pulsate2 {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n@-moz-keyframes pulsate2 {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n@-o-keyframes pulsate2 {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n@keyframes pulsate2 {\r\n 0% {-webkit-transform: scale(0.8, 0.8); opacity: 0.0;}\r\n 50% {opacity: 1.0;}\r\n 100% {-webkit-transform: scale(1.4, 1.4); opacity: 0.0;}\r\n}\r\n\r\n.slide-pulse {\r\n -webkit-animation: slide 1s ease;\r\n -moz-animation: slide 1s ease;\r\n -o-animation: slide 1s ease;\r\n animation: slide 1s ease;\r\n}\r\n@-webkit-keyframes slide {\r\n 0% {max-width: 42.6667px; width: 42.667px;}\r\n 50% {max-width: 50px; width: 50px;}\r\n 100% {max-width: 50px; width: 42.667px;}\r\n}\r\n@-moz-keyframes slide {\r\n 0% {max-width: 42.6667px; width: 42.667px;}\r\n 50% {max-width: 50px; width: 50px;}\r\n 100% {max-width: 50px; width: 42.667px;}\r\n}\r\n@-o-keyframes slide {\r\n 0% {max-width: 42.6667px; width: 42.667px;}\r\n 50% {max-width: 50px; width: 50px;}\r\n 100% {max-width: 50px; width: 42.667px;}\r\n}\r\n@keyframes slide {\r\n 0% {max-width: 42.6667px; width: 42.667px;}\r\n 50% {max-width: 50px; width: 50px;}\r\n 100% {max-width: 50px; width: 42.667px;}\r\n}\r\n/* Modal Styles */\r\n\r\n.modal__overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0,0,0,0.6);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n position:relative;\r\n height:100%;\r\n width:100%;\r\n}\r\n\r\n.modal__container {\r\n background-color: #fff;\r\n padding: 30px;\r\n max-width: 500px;\r\n min-width: 200px;\r\n max-height: 100vh;\r\n border-radius: 4px;\r\n overflow-y: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.modal__header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.modal__title {\r\n margin: 0 auto;\r\n color: black;\r\n font-weight: 600;\r\n font-size: 1.25rem;\r\n line-height: 1.25;\r\n box-sizing: border-box;\r\n}\r\n\r\n.modal__close {\r\n background: transparent;\r\n border: 0;\r\n position: absolute;\r\n top: 14px;\r\n right: 14px;\r\n}\r\n.modal__close, .modal__close svg {\r\n width: 20px;\r\n height: 20px;\r\n outline:none !important;\r\n}\r\n.modal__close svg {\r\n position: absolute;\r\n left: 0px;\r\n top: 0px;\r\n}\r\n\r\n.modal__content {\r\n margin-top: 2rem;\r\n margin-bottom: 2rem;\r\n line-height: 1.5;\r\n color: rgba(0,0,0,.8);\r\n}\r\n\r\n.modal__btn {\r\n font-size: .875rem;\r\n padding-left: 1rem;\r\n padding-right: 1rem;\r\n padding-top: .5rem;\r\n padding-bottom: .5rem;\r\n background-color: #e6e6e6;\r\n color: rgba(0,0,0,.8);\r\n border-radius: .25rem;\r\n border-style: none;\r\n border-width: 0;\r\n cursor: pointer;\r\n -webkit-appearance: button;\r\n text-transform: none;\r\n overflow: visible;\r\n line-height: 1.15;\r\n margin: 0;\r\n will-change: transform;\r\n -moz-osx-font-smoothing: grayscale;\r\n -webkit-backface-visibility: hidden;\r\n backface-visibility: hidden;\r\n -webkit-transform: translateZ(0);\r\n transform: translateZ(0);\r\n transition: -webkit-transform .25s ease-out;\r\n transition: transform .25s ease-out;\r\n transition: transform .25s ease-out,-webkit-transform .25s ease-out;\r\n}\r\n\r\n.modal__btn:focus, .modal__btn:hover {\r\n -webkit-transform: scale(1.05);\r\n transform: scale(1.05);\r\n}\r\n\r\n.modal__btn-primary {\r\n background-color: #00449e;\r\n color: #fff;\r\n}\r\n\r\n\r\n\r\n/* Modal animation */\r\n\r\n@keyframes mmfadeIn {\r\n from { opacity: 0; }\r\n to { opacity: 1; }\r\n}\r\n\r\n@keyframes mmfadeOut {\r\n from { opacity: 1; }\r\n to { opacity: 0; }\r\n}\r\n\r\n@keyframes mmslideIn {\r\n from { transform: translateY(15%); }\r\n to { transform: translateY(0); }\r\n}\r\n\r\n@keyframes mmslideOut {\r\n from { transform: translateY(0); }\r\n to { transform: translateY(-10%); }\r\n}\r\n\r\n.micromodal-slide {\r\n display: none;\r\n}\r\n\r\n.micromodal-slide.is-open {\r\n display: block;\r\n}\r\n\r\n.micromodal-slide[aria-hidden=\"false\"] .modal__overlay {\r\n\tanimation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1);\r\n}\r\n\r\n.micromodal-slide[aria-hidden=\"false\"] .modal__container {\r\n animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1);\r\n}\r\n\r\n.micromodal-slide[aria-hidden=\"true\"] .modal__overlay {\r\n animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1);\r\n}\r\n\r\n.micromodal-slide[aria-hidden=\"true\"] .modal__container {\r\n animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1);\r\n}\r\n\r\n.micromodal-slide .modal__container,\r\n.micromodal-slide .modal__overlay {\r\n will-change: transform;\r\n}\r\n.micromodal-slide.is-open {\r\n display: block;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index:999;\r\n}\r\n\n","strings":{}},{"widgetId":"d1ee5d5bf037471ea1770683731e577a","version":22,"js":"JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICQuZ2V0U2NyaXB0KCdodHRwczovL3dpZGdldC5oaWJ1LnVzL3N0YXRpYy9qcy9pbmRleC5qcycpCiAgICAuZG9uZShmdW5jdGlvbigpewogICAgICAgIGRtQVBJLnJ1bk9uUmVhZHkoJ2hpYnVfaGVhZGVyX3Jldmlld3MnLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHdpbmRvdy5yZW5kZXJBcHAoKTsKICAgICAgICB9KTsKICAgICAgICAKICAgIH0pCiAgICAuZmFpbChmdW5jdGlvbigpewogICAgICAgIGNvbnNvbGUubG9nKCJmYWlsZWQgdG8gbG9hZGVkIGhlYWRlciByZXZpZXdzIGpzIGZpbGUiKQogICAgfSk7Cn0pCgo=","css":".headerWidget {\n min-height:22px;\n}\n","strings":{}}],"page_title":"Coupon","flexstyles":[],"popups":[],"title":"Coupon","uuid":"f46039b0060c4a859b4ada27e8877be0","devicecss":"*#dm *.dmBody div.u_dm_content\n{\n\tpadding-top:20px !important;\n\tpadding-bottom:20px !important;\n\tpadding-left:20px !important;\n\tpadding-right:20px !important;\n}\n*#dm *.dmBody div.u_1694205906\n{\n\tpadding-top:0 !important;\n\tpadding-left:0 !important;\n\tpadding-bottom:0 !important;\n\tfloat:none !important;\n\tmargin-right:auto !important;\n\tmargin-left:auto !important;\n\ttop:auto !important;\n\tmax-width:none !important;\n\tleft:0 !important;\n\twidth:100% !important;\n\tmargin-top:0 !important;\n\tposition:relative !important;\n\tmargin-bottom:0 !important;\n\tpadding-right:0 !important;\n\tmin-width:0 !important;\n\ttext-align:center !important;\n\theight:auto !important;\n}\n*#dm *.dmBody div.u_1773263818\n{\n\tfloat:none !important;\n\ttop:0px !important;\n\tleft:0 !important;\n\twidth:calc(100% - 0px) !important;\n\tposition:relative !important;\n\theight:auto !important;\n\tpadding-top:2px !important;\n\tpadding-left:0px !important;\n\tpadding-bottom:2px !important;\n\tmargin-right:auto !important;\n\tmargin-left:auto !important;\n\tmax-width:100% !important;\n\tmargin-top:35px !important;\n\tmargin-bottom:8px !important;\n\tpadding-right:0px !important;\n\tmin-width:25px !important;\n}\n*#dm *.dmBody a.u_1404830898 span.text\n{\n\tfont-size:24px !important;\n}\n*#dm *.dmBody a.u_1404830898\n{\n\tfloat:none !important;\n\ttop:0px !important;\n\tleft:0 !important;\n\twidth:calc(100% - 147px) !important;\n\tposition:relative !important;\n\theight:52px !important;\n\tpadding-top:0px !important;\n\tpadding-left:0px !important;\n\tpadding-bottom:0px !important;\n\tmargin-right:auto !important;\n\tmargin-left:auto !important;\n\tmax-width:314px !important;\n\tmargin-top:28px !important;\n\tmargin-bottom:10px !important;\n\tpadding-right:0px !important;\n\tmin-width:25px !important;\n\ttext-align:center !important;\n}\n*#dm *.dmBody div.u_1590660061\n{\n\tfloat:none !important;\n\ttop:0px !important;\n\tleft:0 !important;\n\twidth:calc(100% - 0px) !important;\n\tposition:relative !important;\n\tpadding-top:0px !important;\n\tpadding-left:0px !important;\n\tpadding-bottom:0px !important;\n\tmargin-right:auto !important;\n\tmargin-left:auto !important;\n\tmax-width:228px !important;\n\tmargin-top:9px !important;\n\tmargin-bottom:0px !important;\n\tpadding-right:0px !important;\n\tmin-width:25px !important;\n\ttext-align:center !important;\n\theight:auto !important;\n}\n","seometatags":"","content":"
Is my car safe to drive?